DMVCFramework — Delphi REST API, JSON-RPC & Web-App-Framework
Das beliebteste Open-Source-Delphi-Framework auf GitHub · Produktionsreif seit 2010
TL;DR: DMVCFramework ist das #1 Delphi-Framework für den Aufbau von REST APIs und Webdiensten. Es ist kostenlos (Apache 2.0), seit 2010 produktionsreif, unterstützt JWT, WebSocket, ORM und läuft auf Windows/Linux. Von GitHub installieren, einen Controller mit
[MVCPath]-Attributen anlegen und Objekte zurückgeben, die automatisch zu JSON serialisiert werden.
Was ist DMVCFramework?
DMVCFramework (DelphiMVCFramework) ist das beliebteste Open-Source-Framework für den Aufbau von Web-APIs und Webanwendungen in Delphi. Es ermöglicht die einfache Erstellung von RESTful-Diensten (RMM Level 3), JSON-RPC-Diensten, serverseitigen Webseiten, Mobile-Backends und Microservices.
Seit 2010 in der Produktion eingesetzt, betreibt DMVCFramework einige der meistgenutzten Delphi-Web-APIs der Welt. Es ist das #1 Delphi-Projekt auf GitHub nach Bewertung, mit einer lebendigen Community von über 5.000 aktiven Entwicklern.
Einstieg: Der offizielle Leitfaden
Der schnellste Weg, DMVCFramework zu meistern, ist der offizielle Leitfaden. Dieses umfassende Buch führt Sie von den Grundlagen bis zur professionellen Entwicklung mit praxisnahen Beispielen und bewährten Vorgehensweisen.
Verfügbare Ausgaben
| Sprache | Format | Link |
|---|---|---|
| 🇬🇧 Englisch | eBook | Kaufen auf Leanpub |
| 🇬🇧 Englisch | Hardcover | Kaufen auf Lulu |
| 🇧🇷 Portugiesisch | eBook | Kaufen auf Leanpub |
| 🇪🇸 Spanisch | eBook | Kaufen auf Leanpub |
📖 Kostenloses Probekapitel lesen — In 5 Minuten loslegen!
Warum DMVCFramework wählen?
| Vorteil | Beschreibung |
|---|---|
| Bewährt im Produktionsbetrieb | Seit 2010 in kleinen, mittleren und Enterprise-Projekten weltweit eingesetzt |
| Vollständiges Feature-Set | REST, JSON-RPC, JWT, WebSocket, SSE, ORM – alles, was Sie brauchen |
| Blitzschnell | Für hohe Leistung unter starker Last optimiert |
| Leicht erlernbar | Intuitive API mit über 50 Beispielen für schnellen Produktivitätseinstieg |
| Aktive Community | Über 6.000 Entwickler in der Facebook-Gruppe stehen mit Rat zur Seite |
| Aktiv gepflegt | Regelmäßige Updates, semantische Versionierung, zukunftssicher |
Was Entwickler sagen
„DMVCFramework ist ein großartiges Framework. Es ist sehr intuitiv, schnell, einfach zu bedienen – es gibt nichts mehr, was man sich wünschen könnte."
— Samir
„Ich bin immer noch begeistert vom Code und der Dokumentation von DelphiMVCFramework. Herzlichen Dank und ich bin beeindruckt von Ihrem schnellen Feedback."
— Benjamin Y., Director of SQLGate
„Wir haben mit der Migration unserer Systeme auf Microservices begonnen und lieben DMVCFramework dabei."
— E. Costa
Neu in DMVCFramework 3.4.3-aluminium
Das neueste Release bringt wichtige neue Features:
WebSocket-Unterstützung
Vollduplex-Echtzeitkommunikation mit TMVCWebSocketServer und TMVCWebSocketClient. Erstellen Sie Chat-Anwendungen, Live-Dashboards und kollaborative Tools mit kanalbasiertem Messaging und Gruppen.
Rate-Limiting-Middleware
Schützen Sie Ihre APIs vor Missbrauch mit integrierter Ratenbegrenzung – sowohl speicherbasiert für einzelne Server als auch Redis-gestützt für verteilte Umgebungen.
Repository-Pattern
Saubere Architektur mit IMVCRepository<T> und [MVCInject] für automatische Dependency Injection.
Ausdrücke in dotEnv
Dynamische Ausdrücke in .env-Konfigurationsdateien mit Variablensubstitution und Arithmetik.
Vollständige Neuerungen für 3.4.3-aluminium ansehen →
Versionshistorie
| Version | Datum | Highlights |
|---|---|---|
| 3.4.3-aluminium | Jan 2026 | WebSocket, Rate Limiting, Repository Pattern, Delphi 13 |
| 3.4.2-magnesium | Feb 2024 | Middleware Sessions, Datenbank-Sessions |
| 3.4.1-sodium | Jan 2024 | Sempare Templates, Delphi 12, foVersion |
| 3.4.0-neon | Sep 2023 | Functional Actions, Named Queries, HTMX |
| 3.3.0-fluorine | Apr 2023 | Delphi 11.3, Prometheus, Records in Swagger |
| 3.2.3-radium | Feb 2022 | Integrierter Profiler, JSONRPC TObject |
| 3.2.2-nitrogen | Sep 2020 | Delphi 11, TMVCRESTClient, LRU Cache |
| 3.2.1-carbon | Nov 2019 | Referenz zum offiziellen Leitfaden, snake_case |
| 3.2.0-boron | Jul 2019 | Delphi 10.4, Swagger, Nullable Types |
| 3.1.0-lithium | Mär 2019 | Erweiterte Middleware |
| 3.0.0-hydrogen | 2018 | MVCActiveRecord ORM, 3.x-Architektur |
| 2.x | 2015–2017 | Foundation-Serie |
Hauptfunktionen
Web-API-Entwicklung
- RESTful APIs – Vollständige RMM-Level-3-Konformität mit korrekten HTTP-Verben und Statuscodes
- JSON-RPC 2.0 – Automatisches Object-Remoting für RPC-artige APIs
- OpenAPI-Unterstützung – Automatische API-Dokumentationsgenerierung
- Automatisches Routing – Attributbasiertes URL-Mapping mit Parameterbindung
Authentifizierung & Sicherheit
- JWT-Authentifizierung – Branchenstandard JSON Web Tokens
- HTTP-Basic-Authentifizierung – Einfache Benutzername/Passwort-Authentifizierung
- Benutzerdefinierte Authentifizierung – Flexibles Framework für beliebige Auth-Schemata
- CORS-Unterstützung – Konfiguration für Cross-Origin Resource Sharing
Echtzeitkommunikation
- WebSocket-Unterstützung – Vollduplex-Kommunikationskanäle
- Server-Sent Events (SSE) – Push-Benachrichtigungen an Clients
- Messaging-Erweiterungen – Integrierte Pub/Sub-Muster
Daten & Persistenz
- MVCActiveRecord – Leistungsstarkes ORM für Datenbankoperationen
- JSON-Serialisierung – Automatisches Objekt-zu-JSON-Mapping
- Benutzerdefinierte Serialisierer – Vollständige Kontrolle über die Datentransformation
Deployment-Flexibilität
- Windows-Konsolenanwendung
- Windows-Dienst
- Linux-Konsole/Daemon
- Apache-Modul (mod_proxy)
- IIS (ISAPI DLL)
- Load-Balanced-Umgebungen
Entwicklererfahrung
- IDE-Assistent – Projektvorlagen für den schnellen Einstieg
- 50+ Beispiele – Jedes Feature mit funktionierenden Codebeispielen erlernen
- Middleware-System – Einfache Request/Response-Hooks
- Controller-Vererbung – DRY-Prinzip für gemeinsame Logik
- Integrierter REST-Client – APIs einfach testen und konsumieren
Schnellstart: Hello World
Starten Sie mit DMVCFramework in Minuten. Hier ist ein einfacher „Hello World"-Controller:
uses
MVCFramework, MVCFramework.Commons;
type
[MVCPath('/api')] // Basispfad für alle Actions in diesem Controller
TMyController = class(TMVCController)
public
[MVCPath('/hello')] // Route: GET /api/hello
[MVCHTTPMethods([httpGET])] // Erlaubte HTTP-Methode
function GetHello: String;
[MVCPath('/hello/($Name)')] // Route: GET /api/hello/{Name}
[MVCHTTPMethods([httpGET])] // ($Name) erfasst das URL-Segment
function GetHelloName(const Name: String): String;
end;
implementation
function TMyController.GetHello: String;
begin
Result := 'Hello, World!'; // Automatisch zu JSON serialisiert
end;
function TMyController.GetHelloName(const Name: String): String;
begin
Result := 'Hello, ' + Name + '!'; // Name wird automatisch aus der URL extrahiert
end;
Das war’s! Rufen Sie GET /api/hello auf und erhalten Sie "Hello, World!". Rufen Sie GET /api/hello/John auf und erhalten Sie "Hello, John!".
DMVCFramework serialisiert Ihre Rückgabewerte automatisch zu JSON – Strings, Objekte, Arrays, Records, Datasets – alles funktioniert einfach.
Erweitertes Beispiel: REST API mit Datenbank
Für reale Anwendungen unterstützt DMVCFramework das MVCActiveRecord-ORM und das Repository-Pattern mit Dependency Injection:
uses
MVCFramework, MVCFramework.Commons, MVCFramework.ActiveRecord,
MVCFramework.Repository, System.Generics.Collections;
type
// Entity-Klasse, die einer Datenbanktabelle zugeordnet ist
[MVCTable('customers')]
TCustomer = class(TMVCActiveRecord)
private
[MVCTableField('id', [foPrimaryKey, foAutoGenerated])] // Auto-Increment PK
FID: NullableInt32;
[MVCTableField('name')] // Zuordnung zur Spalte 'name'
FName: string;
[MVCTableField('email')] // Zuordnung zur Spalte 'email'
FEmail: string;
public
property ID: NullableInt32 read FID write FID;
property Name: string read FName write FName;
property Email: string read FEmail write FEmail;
end;
[MVCPath('/api/customers')]
TCustomerController = class(TMVCController)
protected
fRepository: IMVCRepository<TCustomer>; // Repository-Interface
public
[MVCInject] // Dependency Injection – Repository wird automatisch bereitgestellt
constructor Create(Repository: IMVCRepository<TCustomer>); reintroduce;
[MVCPath] // Route: GET /api/customers
[MVCHTTPMethods([httpGET])]
function GetAllCustomers: IMVCResponse;
[MVCPath('/($ID)')] // Route: GET /api/customers/{ID}
[MVCHTTPMethods([httpGET])]
function GetCustomerByID(const ID: Integer): IMVCResponse;
[MVCPath] // Route: POST /api/customers
[MVCHTTPMethods([httpPOST])] // [MVCFromBody] deserialisiert JSON-Body zu TCustomer
function CreateCustomer([MVCFromBody] const Customer: TCustomer): IMVCResponse;
[MVCPath('/($ID)')] // Route: DELETE /api/customers/{ID}
[MVCHTTPMethods([httpDELETE])]
function DeleteCustomerByID(const ID: Integer): IMVCResponse;
end;
implementation
constructor TCustomerController.Create(Repository: IMVCRepository<TCustomer>);
begin
inherited Create;
fRepository := Repository; // Injiziiertes Repository speichern
end;
function TCustomerController.GetAllCustomers: IMVCResponse;
begin
Result := OKResponse(fRepository.GetAll); // Gibt HTTP 200 mit JSON-Array zurück
end;
function TCustomerController.GetCustomerByID(const ID: Integer): IMVCResponse;
begin
Result := OKResponse(fRepository.GetByPK(ID)); // Gibt HTTP 200 mit JSON-Objekt zurück
end;
function TCustomerController.CreateCustomer(const Customer: TCustomer): IMVCResponse;
begin
fRepository.Store(Customer); // Einfügen oder Aktualisieren anhand des PK
Result := CreatedResponse('/api/customers/' + Customer.ID.Value.ToString); // HTTP 201
end;
function TCustomerController.DeleteCustomerByID(const ID: Integer): IMVCResponse;
var
lCustomer: TCustomer;
begin
lCustomer := fRepository.GetByPK(ID); // Entity anhand des Primärschlüssels laden
fRepository.Delete(lCustomer); // Aus der Datenbank löschen
Result := OKResponse; // Gibt HTTP 200 zurück
end;
Wesentliche Vorteile:
- Functional Actions: Rückgabe von
IMVCResponsemit Hilfsfunktionen wieOKResponse(),CreatedResponse() - Dependency Injection:
[MVCInject]am Constructor für automatische Repository-Injektion - MVCActiveRecord: ORM mit Tabellenzuordnung über Attribute
- Repository-Pattern:
IMVCRepository<T>für sauberen, testbaren Datenzugriff - Auto-Serialisierung: Objekte, Records, Listen und Datasets werden automatisch serialisiert
Mit Beispielen lernen: 100+ Beispielprojekte
Der beste Weg, DMVCFramework zu erlernen, ist das Erkunden von funktionierendem Code. Das Projekt enthält über 100 Beispielprojekte, die jedes Feature und jeden Anwendungsfall abdecken. Jedes Beispiel ist eigenständig und sofort kompilierbar.
Finden Sie das Beispiel, das Ihrem Vorhaben entspricht, öffnen Sie es in Delphi und fangen Sie an zu experimentieren!
📦 Alle Beispiele: github.com/danieleteti/delphimvcframework/tree/master/samples
„Ich möchte mein erstes DMVCFramework-Projekt erstellen"
| Beispiel | Beschreibung |
|---|---|
basicdemo_server |
Minimale Server-Einrichtung – hier beginnen |
functional_actions_showcase |
Modernes Functional-Actions-Pattern |
console_sample |
Einfache Konsolenanwendung |
„Ich möchte eine REST API bauen"
| Beispiel | Beschreibung |
|---|---|
simple_api_using_mvcactiverecord |
REST API mit ORM |
simple_api_using_repository_with_injection |
Repository-Pattern + Dependency Injection |
simple_api_using_datasets |
TDataSet als JSON zurückgeben |
routing |
URL-Parameter, Pfadsegmente, Query-Strings |
validators |
Eingebaute und benutzerdefinierte Eingabevalidatoren |
file_upload |
multipart/form-data-Uploads verarbeiten |
„Ich möchte Authentifizierung und Sicherheit hinzufügen"
| Beispiel | Beschreibung |
|---|---|
jsonwebtoken |
JSON Web Token Grundlagen |
jsonwebtoken_roleauth |
Rollenbasierte Autorisierung mit JWT |
middleware_jwtwithcookiehttponly |
Sicheres HTTP-only-Cookie für JWT |
middleware_basicauthentication |
HTTP-Basic-Authentifizierung |
custom_auth |
Eigenen Auth-Handler implementieren |
middleware_cors |
Cross-Origin Resource Sharing |
middleware_ratelimit_memory |
Anfragen drosseln (speicherbasiert) |
middleware_ratelimit_redis |
Anfragen drosseln (Redis-gestützt) |
„Ich möchte Echtzeitkommunikation"
| Beispiel | Beschreibung |
|---|---|
websocket_primer |
WebSocket-Einführung |
websocket_chat |
Multi-User-Chat-Anwendung |
websocket_groups |
Kanalbasiertes Messaging |
websocket_javascript_client_sample |
Browser-Client-Beispiel |
serversentevents |
Server-Sent Events (Push-Benachrichtigungen) |
„Ich möchte HTML-Seiten rendern"
| Beispiel | Beschreibung |
|---|---|
serversideviews_templatepro |
HTML mit der TemplatePro-Engine |
serversideviews_mustache |
HTML mit der Mustache-Engine |
htmx |
Dynamisches HTML mit HTMX |
htmx_website_with_templatepro |
Vollständige Website mit HTMX + TemplatePro |
htmx_website_with_webstencils |
RAD Studio WebStencils-Integration |
„Ich möchte mit Datenbanken arbeiten"
| Beispiel | Beschreibung |
|---|---|
activerecord_showcase |
Vollständige ORM-Demo |
activerecord_restful_crud |
RESTful API mit ActiveRecord |
master_details |
Eltern-Kind-Beziehungen |
repository_showcase |
Verwendung von IMVCRepository |
ado |
Microsoft ADO Beispiel |
„Ich möchte JSON-RPC verwenden"
| Beispiel | Beschreibung |
|---|---|
jsonrpc |
JSON-RPC-2.0-Server-Implementierung |
„Ich möchte die Request/Response-Verarbeitung anpassen"
| Beispiel | Beschreibung |
|---|---|
middleware |
Eigene Middleware erstellen |
middleware_compression |
GZIP/Deflate-Antworten |
middleware_etag |
HTTP-Caching mit ETags |
middleware_staticfiles |
Statische Inhalte ausliefern |
middleware_analytics |
Request-Logging/-Tracking |
middleware_activerecord |
DB-Verbindung pro Request |
action_filters |
Before/After-Action-Hooks |
custom_exception_handling |
Benutzerdefinierte Fehlerantworten |
renders |
Benutzerdefinierte JSON-Serialisierer |
„Ich möchte in die Produktion deployen"
| Beispiel | Beschreibung |
|---|---|
windows_service |
Als Windows-Dienst ausführen |
apache_module |
Hinter Apache deployen |
isapi |
Auf IIS deployen |
ssl_server |
HTTPS-Konfiguration |
tls13 |
Modernes TLS 1.3 Setup |
„Ich möchte meine API dokumentieren"
| Beispiel | Beschreibung |
|---|---|
swagger_primer |
OpenAPI-Dokumentation Grundlagen |
swagger_ui |
Interaktiver API-Explorer |
swagger_doc_extended |
Erweiterte Dokumentationsfunktionen |
„Ich möchte erweiterte Funktionen nutzen"
| Beispiel | Beschreibung |
|---|---|
mvcasync |
Asynchrone Actions |
outputcachewithredis |
Redis-gestützter Antwort-Cache |
prometheus |
Prometheus-Monitoring-Integration |
services_injection |
Dependency Injection |
dotenv_showcase |
Umgebungskonfiguration mit .env-Dateien |
sqids_showcase |
Kurze eindeutige IDs (Sqids) |
Verwandte Open-Source-Projekte
DMVCFramework lässt sich nahtlos mit anderen Open-Source-Projekten desselben Autors integrieren:
| Projekt | Beschreibung | Verwendung mit DMVCFramework |
|---|---|---|
| LoggerPro | Asynchrones Logging-Framework mit über 20 Appendern | Strukturiertes Logging für APIs mit Datei-, Datenbank-, Redis- oder ElasticSearch-Appendern |
| TemplatePro | Leistungsstarke Template-Engine mit Jinja-ähnlicher Syntax | Serverseitiges HTML-Rendering mit dem Beispiel serversideviews_templatepro |
| DelphiRedisClient | Vollständiger Redis-Client | Caching, Session-Speicherung, Rate Limiting und Echtzeit-Features |
| DelphiGuard | RAII-Speicherverwaltung | Automatische Ressourcenbereinigung in Controllern und Middleware |
| Delphi Fake Data Utils | Testdatengenerator | Realistische Daten für API-Tests und Demos generieren |
| Expression Evaluator | Laufzeit-Formelparser | Dynamische Geschäftsregeln und berechnete Felder in Ihren APIs |
Delphi-Versionskompatibilität
| Delphi-Version | Windows | Linux |
|---|---|---|
| Delphi 13 Florence | ✅ | ✅ |
| Delphi 12 Athens | ✅ | ✅ |
| Delphi 11 Alexandria | ✅ | ✅ |
| Delphi 10.4 Sydney | ✅ | ✅ |
| Delphi 10.3 Rio | ✅ | ✅ |
| Delphi 10.2 Tokyo | ✅ | ✅ |
| Delphi 10.1 Berlin | ✅ | - |
| Delphi 10 Seattle | ✅ | - |
Das Projekt unterstützen
🎁 Werden Sie Patron-Unterstützer
DMVCFramework ist kostenlos und Open Source, aber die Pflege und Weiterentwicklung erfordert erheblichen Aufwand. Als Patron erhalten Sie:
- Zugang zu Premium-Inhalten – Exklusive Tutorials, erweiterte Beispiele und Vorabvorschauen
- Direkter Entwicklerzugang – Prioritätssupport und direkte Kommunikation mit dem Entwicklungsteam
- Mitgestaltung der Zukunft – Beeinflussen Sie die Roadmap und Prioritäten neuer Features
- Open Source unterstützen – Helfen Sie, DMVCFramework für alle kostenlos zu halten
Professionelle Dienstleistungen
Benötigen Sie Enterprise-Grade-Support? bit Time Professionals, das Unternehmen hinter DMVCFramework, bietet:
- Schulungen – Präsenz- oder Remote-Schulungen für Ihr Team
- Beratung – Architekturüberprüfung, Performance-Optimierung, Best Practices
- Individuelle Entwicklung – Feature-Entwicklung, Integration, Migration
📧 Kontakt: dmvcframework@bittime.it | 🌐 bittimeprofessionals.it
Community & Ressourcen
| Ressource | Link |
|---|---|
| 📦 GitHub-Repository | github.com/danieleteti/delphimvcframework |
| 📕 Offizieller Leitfaden (Buch) | leanpub.com/delphimvcframework |
| 👥 Facebook-Gruppe (5.000+ Mitglieder) | facebook.com/groups/delphimvcframework |
| 🎁 Patreon (Premium-Inhalte) | patreon.com/delphimvcframework |
| 📖 Kostenloses Probekapitel | Auf Leanpub lesen |
FAQ: Häufig gestellte Fragen
Was ist DMVCFramework?
DMVCFramework (DelphiMVCFramework) ist ein Open-Source-Framework für den Aufbau von Web-APIs, RESTful-Diensten und Webanwendungen in Delphi. Es ist das beliebteste Delphi-Web-Framework, seit 2010 im Produktionseinsatz, und das #1 Delphi-Projekt auf GitHub nach Sternebewertung.
Was ist das beste Framework für REST APIs in Delphi?
DMVCFramework ist das beliebteste und funktionsreichste Framework für den Aufbau von REST APIs in Delphi. Es unterstützt RESTful APIs (RMM Level 3), JSON-RPC, WebSocket, Server-Sent Events, JWT-Authentifizierung und enthält ein leistungsstarkes ORM namens MVCActiveRecord.
Wie erstelle ich eine REST API in Delphi?
Verwenden Sie DMVCFramework: Erstellen Sie eine Controller-Klasse, die von TMVCController erbt, fügen Sie [MVCPath]- und [MVCHTTPMethods]-Attribute zur Routendefinition hinzu und geben Sie Daten direkt aus Ihren Methoden zurück (Functional Actions). Das Framework serialisiert Objekte, Arrays und Records automatisch zu JSON. Sehen Sie sich die über 100 enthaltenen Beispiele an.
Wie gebe ich JSON aus einer Delphi-REST-API zurück?
Mit DMVCFramework geben Sie einfach ein Objekt, einen Record oder eine TObjectList<T> aus Ihrer Controller-Methode zurück. Das Framework serialisiert es automatisch zu JSON. Für mehr Kontrolle verwenden Sie die Hilfsfunktionen OKResponse(data) oder CreatedResponse(location).
Unterstützt DMVCFramework JWT-Authentifizierung?
Ja, DMVCFramework verfügt über integrierte JWT-Unterstützung (JSON Web Token) für zustandslose Authentifizierung. Es unterstützt Token-Generierung, Validierung, rollenbasierte Autorisierung und sichere HTTP-only-Cookies. Sehen Sie sich die Beispiele jsonwebtoken und jsonwebtoken_roleauth an.
Kann ich DMVCFramework unter Linux einsetzen?
Ja, DMVCFramework unterstützt Linux-Deployment ab Delphi 10.2 Tokyo vollständig. Sie können als Konsolenanwendung oder Daemon deployen, mit vollständiger Unterstützung aller Features einschließlich WebSocket und SSL/TLS.
Ist DMVCFramework kostenlos?
Ja, DMVCFramework ist kostenlos und Open Source unter der Apache-2.0-Lizenz. Sie können es in kommerziellen Projekten ohne Einschränkungen oder Anforderungen zur Namensnennung verwenden.
Wie erhalte ich Support für DMVCFramework?
Es stehen mehrere Support-Möglichkeiten zur Verfügung: Treten Sie der Facebook-Gruppe (5.000+ Mitglieder) bei, erkunden Sie die über 100 enthaltenen Beispiele, lesen Sie den offiziellen Leitfaden oder werden Sie Patron für Prioritätssupport und exklusive Inhalte.
Unterstützt DMVCFramework WebSocket?
Ja, DMVCFramework enthält vollständige WebSocket-Unterstützung für bidirektionale Echtzeitkommunikation. Zu den Features gehören kanalbasiertes Messaging, Gruppen und JavaScript-Client-Beispiele. Außerdem werden Server-Sent Events (SSE) für Server-zu-Client-Push-Benachrichtigungen unterstützt.
Was ist MVCActiveRecord?
MVCActiveRecord ist das integrierte ORM (Object-Relational Mapper) von DMVCFramework, das Datenbankoperationen vereinfacht. Es verwendet Attribute für Tabellen-/Spaltenzuordnung, unterstützt CRUD-Operationen, Beziehungen und RQL (Resource Query Language) für flexible Abfragen.
Wie deploye ich DMVCFramework in die Produktion?
DMVCFramework unterstützt mehrere Deployment-Optionen: Windows-Konsolenanwendung, Windows-Dienst, Linux-Daemon, Apache-Modul (mod_proxy), IIS (ISAPI DLL) und Load-Balanced-Umgebungen. Sehen Sie sich die Deployment-Beispiele für jedes Szenario an.
Unterstützt DMVCFramework OpenAPI/Swagger?
Ja, DMVCFramework kann automatisch OpenAPI-Dokumentation (Swagger) für Ihre APIs generieren. Verwenden Sie die Beispiele swagger_primer und swagger_ui, um Ihrem Projekt eine interaktive API-Dokumentation hinzuzufügen.
Wie verarbeite ich Datei-Uploads in DMVCFramework?
Verwenden Sie das Context.Request-Objekt, um auf hochgeladene Dateien zuzugreifen. Das Beispiel file_upload demonstriert die Verarbeitung von multipart/form-data-Anfragen mit einzelnen oder mehreren Datei-Uploads.
Kann ich DMVCFramework mit FireDAC verwenden?
Ja, DMVCFramework funktioniert mit jeder Datenbankzugriffsschicht, einschließlich FireDAC, ADO und anderen. MVCActiveRecord verwendet standardmäßig FireDAC, Sie können aber jede beliebige Verbindung verwenden.
Wie implementiere ich CORS in DMVCFramework?
Verwenden Sie die integrierte CORS-Middleware. Fügen Sie TMVCCORSMiddleware zu Ihrer Server-Konfiguration hinzu, um Cross-Origin-Anfragen zu ermöglichen. Sehen Sie sich das Beispiel middleware_cors für Konfigurationsoptionen an.
Welche Delphi-Versionen unterstützt DMVCFramework?
DMVCFramework unterstützt Delphi 10 Seattle bis Delphi 13 Florence, einschließlich vollständiger Linux-Unterstützung ab Delphi 10.2 Tokyo.
Wie behandle ich Fehler und Ausnahmen in DMVCFramework?
DMVCFramework konvertiert Ausnahmen automatisch in geeignete HTTP-Fehlerantworten mit JSON-Body. Für benutzerdefinierte Fehlerbehandlung verwenden Sie raise EMVCException.Create() mit spezifischen HTTP-Statuscodes oder implementieren Sie benutzerdefinierte Exception-Handler.
Unterstützt DMVCFramework Dependency Injection?
Ja, DMVCFramework verfügt über integrierte Dependency Injection. Verwenden Sie das [MVCInject]-Attribut an Constructoren oder Methodenparametern, um Services und Repositories automatisch zu injizieren. Sehen Sie sich das Beispiel services_injection an.
Kostenlos. Open Source. Produktionsreif seit 2010.
⭐ Auf GitHub mit Stern bewerten 📖 Den offiziellen Leitfaden holen
Comments
comments powered by Disqus