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;
Módulos
DAFce incluye 25 paquetes en search paths independientes — añade solo los que necesites. La tabla lista los diecinueve que tienen página propia; los otros seis son los paquetes de contrato .Abstractions. Cuando un módulo porta un diseño de otra comunidad, la tabla dice cuál.
| Módulo | Paquete | Descripción |
|---|---|---|
| Cli | Daf.Cli |
El miembro CLI de la familia de aplicaciones — porta la forma de Host.CreateApplicationBuilder de .NET, y su Run devuelve el código de salida |
| CommandLine | Daf.CommandLine |
Un porte de System.CommandLine de .NET, la librería sobre la que está construido el propio CLI de dotnet: comandos, subcomandos, opciones y argumentos |
| Commons | Daf.Commons |
Smart pointers, RTTI, threading, arrays, valores nulables |
| Configuración | Daf.Configuration |
Config JSON / env / memoria, binding tipado |
| Inyección de Dependencias | Daf.DependencyInjection |
Contenedor DI completo con scopes y lifetimes |
| Hosting | Daf.Hosting |
Modelo de ciclo de vida IHost / IHostApplicationBuilder |
| Logging | Daf.Logging |
Logging estructurado con scopes |
| MediatR | Daf.MediatR |
CQRS: comandos, queries, notificaciones, pipelines |
| MiniSpec | Daf.MiniSpec |
Testing BDD: specs Gherkin, expectations, live dashboard |
| NNLog | Daf.NNLog |
Motor de logging inspirado en NLog integrado con DAF |
| SQLCute | Daf.SQLCute |
Builder SQL fluido a la manera de SqlKata: IQuery como AST público y un compilador por dialecto |
| SQLCute.InMemory | Daf.SQLCute.InMemory |
Segundo back-end: ejecuta el mismo IQuery sobre colecciones ya cargadas, con semántica ANSI de NULL. Sin equivalente — SqlKata solo compila a texto |
| SQLCute.Specification | Daf.SQLCute.Specification |
La costura: baja una especificación entera —filtro, orden y paginación— a un IQuery |
| Linq | Daf.Linq |
LINQ-to-Objects: secuencias perezosas sobre IEnumerable<T>, closures, sin SQL |
| Specification | Daf.Specification |
Patrón Specification — filtro, orden y paginación sobre un árbol de predicados acotado a propósito, más estrecho que System.Linq.Expressions para que lo intraducible sea indecible |
| Web | Daf.Web |
Servidor HTTP ligero, enrutamiento por atributos y action results — y sin pila de remoting: no enlaza ni DataSnap ni DBX |
| VCL | Daf.VCL |
El miembro VCL de la familia de aplicaciones: el mismo arranque que las variantes CLI y Web, hasta el punto en que la plataforma toma el bucle |
| SystemProcess | Daf.SystemProcess |
TSystemProcess — ejecuta procesos externos de forma síncrona o asíncrona, con callbacks de salida, error, fin y fallo. El análogo .NET es System.Diagnostics.Process |
| FMX | Daf.FMX |
Lo que se apoya en FireMonkey, aislado para que ningún otro paquete lo enlace: hoy el destino de arranque que escribe por el servicio de log de la plataforma. Existe para que fuera de Windows el informe de arranque no se pierda en silencio — no es soporte de plataforma |
Seis módulos incluyen también un paquete Daf.X.Abstractions con solo interfaces, para dependencias de compilación más limpias: Configuration, DependencyInjection, Hosting, Logging, MediatR y SQLCute.
Qué depende de qué
Instala solo los módulos que quieras — pero un módulo se lleva los paquetes que requiere, y algunos de ellos se llevan un paquete del runtime de RAD Studio. Las dos cosas están abajo; las flechas se leen requiere.
Dibujado como reducción transitiva: solo las aristas que no llegan ya por otro camino. rtl no se dibuja porque lo requieren los 25 paquetes; los de los runtimes ajenos van en un nodo por familia —Indy, RESTComponents, fmx, inet, inetstn y vcl— con los nombres reales en la etiqueta.
El borde de puntos marca un paquete de contrato (.Abstractions); los nodos redondeados a trazos son runtimes ajenos.
Instalables solos, sin depender de ningún otro paquete de DAF: Commons, MiniSpec, SQLCute.Abstractions.
| Paquete | Runtimes que arrastra |
|---|---|
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 de 25 no piden más que rtl.