AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Codedesign für modulare Anwendung
Thema durchsuchen
Ansicht
Themen-Optionen

Codedesign für modulare Anwendung

Ein Thema von Codehunter · begonnen am 1. Okt 2013 · letzter Beitrag vom 1. Nov 2013
Antwort Antwort
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.492 Beiträge
 
Delphi 12 Athens
 
#1

AW: Codedesign für modulare Anwendung

  Alt 2. Okt 2013, 09:27
Jede DLL schleppt praktisch ihre eigene Implementation der UniDac-Komponenten mit.
Die kann identisch sein, muss aber nicht.
Selbst wenn diese identisch ist, kann der Kompiler dass nicht erkennen (es wird nur der Zeiger auf die Klasse verglichen und die sind immer unterschiedlich, auch wenn die Klassen den selben Namen tragen).

Ein Ausweg wäre alles mit BPL-Dateien umzusetzen, das betrifft dann auch die VCL und alle anderen Komponenten die gemeinsam genutzt werden.
Allerdings sind durch die Abhängigkeiten BPL-Dateien nicht so einfach austauschbar.
Wird eine BPL-Datei ausgetauscht, müssen auch alle davon abhängigen BPL-Dateien mit dieser Version neu kompiliert und ausgetauscht werden.

Eine andere Möglichkeit wäre eine ganz andere Plattform zu wählen, z.B. NET.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

AW: Codedesign für modulare Anwendung

  Alt 2. Okt 2013, 09:32
Eine andere Möglichkeit wäre eine ganz andere Plattform zu wählen, z.B. NET.
Das war auch mein erster Gedanke... da bekommt man das mit dem Managed Extensibility Framework geschenkt (und ordentlich). Allerdings schätze ich mal, dass das für den TE keine Option sein wird...
Leo S.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#3

AW: Codedesign für modulare Anwendung

  Alt 2. Okt 2013, 09:53
Nö, nicht wirklich Wobei ich noch ergänzen möchte dass das Plugin-System nicht so gedacht ist dass Drittanbieter Plugins liefern können. Vielmehr will ich nur erreichen, dass ich in einer einheitlichen Host-Anwendung verschiedene GUI auf die selbe Datenbank setzen kann. Die Plugins kämen alle von mir.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.054 Beiträge
 
Delphi 12 Athens
 
#4

AW: Codedesign für modulare Anwendung

  Alt 12. Okt 2013, 16:28
Ich habe da einmal etwas zusammengebaut... siehe Anhang.

Wenn ich mal Zeit dafür haben sollte, schreibe ich dazu auch noch mehr.
Angehängte Dateien
Dateityp: 7z InterfaceDLLDemo.7z (8,8 KB, 43x aufgerufen)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#5

AW: Codedesign für modulare Anwendung

  Alt 31. Okt 2013, 16:28
Hallo!

Sorry dass ich mich jetzt erst wieder melde. Ich brüte da nun schon eine ganze Weile über deiner Demo. Was sich mir da noch nicht so recht erschließt: Du arbeitest da jetzt zwar mit Generics (was mal wieder Neuland für mich ist), aber prinzipiell schiebst du da über ein Interface auch nur einen UnicodeWide-String (AExample.Connection.Host) zwischen der DLL und der Hostanwendung hin und her. So weit war ich ja mit meinem Code auch, wenn auch wesentlich weniger elegant. Da sehe ich aber noch nix von wegen gemeinsamer Nutzung einer TConnection (bzw. im Fall von UniDAC einer TUniConnection).

Über das Thema Runtime-Packages habe ich viel nachgedacht, es aber am Ende wieder verworfen. Denn dadurch würde ich den Vorteil einer modularen Anwendung eigentlich wieder verspielen. Denn in der Praxis müsste ich zu jedem Modul-Installer sowohl die jeweils passend kompilierte Hostanwendung als auch sämtliche BPL-Packages mitliefern.

Vielleicht habe ich aber auch deine Demo nur nicht richtig verstanden. Kann ja sein, bin auch nur ein Newbie in Sachen Interfaces und Generics.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (31. Okt 2013 um 16:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.054 Beiträge
 
Delphi 12 Athens
 
#6

AW: Codedesign für modulare Anwendung

  Alt 1. Nov 2013, 05:45
Du arbeitest da jetzt zwar mit Generics (was mal wieder Neuland für mich ist), aber prinzipiell schiebst du da über ein Interface auch nur einen UnicodeWide-String (AExample.Connection.Host) zwischen der DLL und der Hostanwendung hin und her. So weit war ich ja mit meinem Code auch, wenn auch wesentlich weniger elegant. Da sehe ich aber noch nix von wegen gemeinsamer Nutzung einer TConnection (bzw. im Fall von UniDAC einer TUniConnection).
Das Interface kapselt ja die TConnection. Das müsstest du dann auch machen. Bei der Zuweisung an ein anderes Interface wird die in dem Objekt, das hinter dem Interface steckt wieder auf das Objekt gecastet. So kannst du dann deine Connection in ein Interface stecken, an die DLL übergeben und dort an ein anderes Interface zuweisen, das du ebenfalls von deiner Anwendung bekommen hast. Dieses löst dann das Objekt auf und weist es an die echte Connection Eigenschaft zu.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz