Skip to main content

Modules

DAFce ships 25 packages in independent search paths — add only what you need. The table below lists the nineteen with a page of their own; the other six are the .Abstractions contract packages. Where a module ports a design from another community, the table says which.

Module Package Description
Cli Daf.Cli The CLI member of the application family — ports the shape of .NET’s Host.CreateApplicationBuilder, and Run returns the exit code
CommandLine Daf.CommandLine A port of .NET’s System.CommandLine, the library the dotnet CLI itself is built on: commands, subcommands, options and arguments
Commons Daf.Commons Smart pointers, RTTI, threading, arrays, nullable values
Configuration Daf.Configuration JSON / env / in-memory config, typed binding
DependencyInjection Daf.DependencyInjection Full DI container with scopes and lifetimes
Hosting Daf.Hosting IHost / IHostApplicationBuilder lifecycle model
Logging Daf.Logging Structured logging with scopes
MediatR Daf.MediatR CQRS: commands, queries, notifications, pipelines
MiniSpec Daf.MiniSpec BDD testing: Gherkin specs, expectations, live dashboard
NNLog Daf.NNLog NLog-inspired logging engine integrated with DAF
SQLCute Daf.SQLCute Fluent SQL builder after SqlKata: IQuery as a public AST, one compiler per dialect
SQLCute.InMemory Daf.SQLCute.InMemory A second back-end: runs the same IQuery over loaded collections, ANSI NULL semantics. No analogue — SqlKata only compiles to text
SQLCute.Specification Daf.SQLCute.Specification The seam: lowers a whole specification — filter, order and paging — onto an IQuery
Linq Daf.Linq LINQ-to-Objects: lazy sequences over IEnumerable<T>, closures, no SQL
Specification Daf.Specification Specification pattern — filter, order and paging over a deliberately bounded predicate tree, narrower than System.Linq.Expressions so that what cannot be translated is unrepresentable
Web Daf.Web Lightweight HTTP server, attribute routing and action results — and no remoting stack: it links neither DataSnap nor DBX
VCL Daf.VCL The VCL member of the application family: the same startup as the CLI and Web variants, up to the point where the platform takes over the loop
SystemProcess Daf.SystemProcess TSystemProcess — run external processes synchronously or asynchronously, with callbacks for output, error, completion and failure. The .NET analogue is System.Diagnostics.Process
FMX Daf.FMX What leans on FireMonkey, isolated so no other package links it: today the bootstrap destination that writes through the platform’s own log service. It is there so the startup report is not lost in silence outside Windows — not platform support

Six modules also ship a Daf.X.Abstractions package containing only interfaces, for cleaner compile-time dependencies: Configuration, DependencyInjection, Hosting, Logging, MediatR and SQLCute.

What depends on what

Install only the modules you want — but a module brings the packages it requires, and some of them bring a runtime package from the RAD Studio installation. Both are below; the arrows read requires.

graph TD
  Cli[Cli]
  CommandLine[CommandLine]
  Commons[Commons]
  Configuration[Configuration]
  ConfigurationAbstractions[Configuration.Abstractions]
  DependencyInjection[DependencyInjection]
  DependencyInjectionAbstractions[DependencyInjection.Abstractions]
  FMX[FMX]
  Hosting[Hosting]
  HostingAbstractions[Hosting.Abstractions]
  Linq[Linq]
  Logging[Logging]
  LoggingAbstractions[Logging.Abstractions]
  MediatR[MediatR]
  MediatRAbstractions[MediatR.Abstractions]
  MiniSpec[MiniSpec]
  NNLog[NNLog]
  SQLCute[SQLCute]
  SQLCuteAbstractions[SQLCute.Abstractions]
  SQLCuteInMemory[SQLCute.InMemory]
  SQLCuteSpecification[SQLCute.Specification]
  Specification[Specification]
  SystemProcess[SystemProcess]
  VCL[VCL]
  Web[Web]
  RTIndy[("IndyCore · IndyProtocols · IndySystem")]
  RTRESTComponents[("RESTComponents")]
  RTfmx[("fmx")]
  RTinet[("inet")]
  RTinetstn[("inetstn")]
  RTvcl[("vcl")]
  Cli --> CommandLine
  Cli --> Hosting
  CommandLine --> Commons
  Configuration --> ConfigurationAbstractions
  Configuration --> DependencyInjectionAbstractions
  Configuration --> LoggingAbstractions
  ConfigurationAbstractions --> Commons
  DependencyInjection --> DependencyInjectionAbstractions
  DependencyInjectionAbstractions --> Commons
  FMX --> Hosting
  Hosting --> Configuration
  Hosting --> DependencyInjection
  Hosting --> HostingAbstractions
  Hosting --> Logging
  HostingAbstractions --> ConfigurationAbstractions
  HostingAbstractions --> DependencyInjectionAbstractions
  HostingAbstractions --> LoggingAbstractions
  Linq --> Commons
  Logging --> DependencyInjectionAbstractions
  Logging --> LoggingAbstractions
  LoggingAbstractions --> Commons
  MediatR --> MediatRAbstractions
  MediatRAbstractions --> DependencyInjectionAbstractions
  NNLog --> HostingAbstractions
  NNLog --> Logging
  SQLCute --> SQLCuteAbstractions
  SQLCuteInMemory --> Linq
  SQLCuteInMemory --> SQLCute
  SQLCuteSpecification --> SQLCuteInMemory
  SQLCuteSpecification --> Specification
  Specification --> Commons
  SystemProcess --> Commons
  VCL --> Hosting
  Web --> Hosting
  FMX --> RTfmx
  MiniSpec --> RTIndy
  NNLog -->|IndyCore · IndySystem| RTIndy
  VCL --> RTvcl
  Web --> RTIndy
  Web --> RTRESTComponents
  Web --> RTinet
  Web --> RTinetstn
  classDef abs stroke-dasharray:4 3;
  class ConfigurationAbstractions,DependencyInjectionAbstractions,HostingAbstractions,LoggingAbstractions,MediatRAbstractions,SQLCuteAbstractions abs;
  classDef rt stroke-dasharray:2 2,stroke-width:2px;
  class RTIndy,RTRESTComponents,RTfmx,RTinet,RTinetstn,RTvcl rt;

Drawn as a transitive reduction: only the edges that do not already arrive by another path. rtl is left out because all 25 packages require it; the third-party runtimes are drawn one node per family — Indy, RESTComponents, fmx, inet, inetstn and vcl — with the real names in the label.

Dotted border marks a contract package (.Abstractions); the dashed rounded nodes are third-party runtimes.

Installable on their own, with no dependency on another DAF package: Commons, MiniSpec, SQLCute.Abstractions.

Package Runtime packages it pulls in
Cli rtl
CommandLine rtl
Commons rtl
Configuration rtl
Configuration.Abstractions rtl
DependencyInjection rtl
DependencyInjection.Abstractions rtl
FMX fmx · rtl
Hosting rtl
Hosting.Abstractions rtl
Linq rtl
Logging rtl
Logging.Abstractions rtl
MediatR rtl
MediatR.Abstractions rtl
MiniSpec IndyCore · IndyProtocols · IndySystem · rtl
NNLog IndyCore · IndySystem · rtl
SQLCute rtl
SQLCute.Abstractions rtl
SQLCute.InMemory rtl
SQLCute.Specification rtl
Specification rtl
SystemProcess rtl
VCL rtl · vcl
Web IndyCore · IndyProtocols · IndySystem · RESTComponents · inet · inetstn · rtl

20 of 25 need nothing beyond rtl.