7 Stimmen

Welche Muster zu verwenden, um Schichten für Delphi Win 32 Anwendung zu bauen

Ich möchte mysql-Datenbank-Anwendung mit dbexpress von Grund auf zu entwickeln oder mit bestehenden Datenbanken arbeiten. Um wiederverwendbare Schichten zu erstellen, welche Muster-Komponenten sollte ich verwenden. Ich möchte, dass die Anwendung leicht auf n-Tier skalierbar ist. Versucht google Suche für fertige Frameworks, aber ich fand nichts viel informativ (einige fehlen Dokumentation, einige fehlen Beispiele).

Etwas in den Adern der berühmten Java-Frameworks i.batis oder Hibernate wäre nützlich. Ich bin mit der Verwendung eines solchen Frameworks in PHP vertraut, um xml-definierte Geschäftsobjekte zu entwickeln. Ich habe versucht, es in Delphi zu konvertieren, aber es ist viel Arbeit (Abstraktion mit strenger Typisierung in Delphi macht alles schwer für mein Erfahrungsniveau).

Auch eine Ruby on Rails Activerecord-ähnliche Implementierung könnte nützlich sein.

Ich konnte mir nie darüber im Klaren sein, ob ich dbaware-Komponenten vernichten sollte oder nicht.

Ich habe versucht, einige Entwurfsmuster zu implementieren, um die Schichten (Datenzugriff/Verbindung), (Geschäftsobjekte) und (Benutzeroberfläche) zu trennen, aber ohne Erfolg. Was ich zu erreichen versuche, ist, Lego zu imitieren (ich kann jede Datenbank-Engine, jede Delphi-Datenbank-Technologie (bde, ado etc.. dbexpress ist ein Muss, andere sind optional) verwenden. Ich kann auch xml (mybase oder native), Textdateien (csv-ähnlich, Legacy-Parsing-Code) verwenden.

Ich kann Single-Tier, Client/Server und N-Tier benötigen.

Auch ich kann irgendeine Art von Web-Service-Implementierung benötigen (die Client-Seite kann jede Technologie abgesehen von Delphi ausführbare sein, so dass ich denke, generieren xml, wsdl leicht notwendig ist)

Die Datenzugriffsschicht ist der wichtigste Teil. Sie muss flexibel sein, da andere Frameworks darauf aufgebaut werden (Benutzerauthentifizierung, App-Konfiguration usw.).

  • Ich könnte mich der Herausforderung stellen, mein eigenes einfaches Framework zu entwickeln (ich weiß nicht, was ich befolgen soll: Datenbankadaptermuster, DB-Verbindungsfabrik, Mapper, Datenzugriffsobjekte usw.).
  • Ich kann eine bestehende (instantobjects nicht anwendbar. nicht mit bestehenden db Schema arbeiten). Einige der anderen, die ich versucht habe, fehlen dbexpress Unterstützung oder ich konnte nicht verstehen, die Konfiguration.

6voto

David Taylor Punkte 1856

Die Antwort von Mohammed deckt den n-Tier-Teil Ihrer Frage ab. Der Teil über die Ähnlichkeit mit i.batis oder hibernate drängt Sie in Richtung objektorientierter Persistenz-Frameworks wie tiOPF, die eine etwas andere Art von Tier sind.

Hier ist die Liste der Persistenz-Frameworks für Delphi, die mir zur Zeit bekannt sind. Ich glaube, CG hat auch eine Art von Persistenz-Demo auf der Delphi Live, so könnte es etwas anderes am Horizont sein.

FWIW - Ich habe InstantObjects (IO) in mehreren kommerziellen Produkten verwendet (wenn auch auf eine nicht standardisierte Weise) und arbeite an einer Portierung nach Delphi 2009. PressObjects ist von einem der IO-Entwickler und ich habe mich kürzlich diesem Projekt angeschlossen, da es interessant aussieht. Ich würde Frameworks wie tiOPF, Jazz usw. nicht außer Acht lassen, denn das ist Geschmackssache. Ich würde diesen Frameworks einen schlechten Dienst erweisen, wenn ich sie kommentiere, da ich sie nicht über einfache Testfälle hinaus verwendet habe.

3voto

Mohammed Nasman Punkte 10872

Wenn Sie Delphi n-Tiers Lösungen erstellen möchten, auf die von verschiedenen Clients (nicht Delphi) zugegriffen werden kann, haben Sie folgende Möglichkeiten:

  1. RemObjects' DataAbstrct.
  2. kbmMW
  3. MIDAS/DataSnap erstellt in Delphi

1voto

Birger Punkte 4305

In meinem Unternehmen verwenden wir dazu den tiOPF-Rahmen. Es verwendet mehrere Muster, um die grafische Benutzeroberfläche vom Objektmodell zu trennen. Es enthält eine Datenbankschicht, die eine Verbindung zu fast jeder Datenbank oder Textdatei ermöglicht.

Zur Verknüpfung der nicht datengestützten Kontrollen mit dem Modell stehen mehrere Mediatoren zur Verfügung. Mit etwas mehr Erfahrung können Sie Ihre eigenen Mediatoren schreiben. Wir haben z. B. mehrere Mediatoren für die Verknüpfung mit den DevExpress-Steuerelementen geschrieben.

Die Dokumentation der Konzepte hinter dem Framework ist gut. Für alle anderen Fragen gibt es eine Newsgroup, die von allen Kernentwicklern häufig besucht wird.

Werfen Sie einen Blick auf die tiOPF Website!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X