Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: Sinn von DLL-Formularen

  Alt 15. Sep 2005, 18:15
Es gibt zwei Formen von DLL's:

1.) die normalen DLLs die somit die kompletten Sourcen der VCL jedesmal einlinken, als Plugins bekannt
2.) die Packages *.BPL und darauf aufbauen DLLs die komplett mit Packages kompiliert werden und sozusagen nur den Code + Resourcen der darin enthaltenen Forms einlinken.

Der Unterschied ist schnell erklärt an Hand eines Beispieles:

Eine Anwednung mit 30 Formularen, Druckmodulen, Datenbankzugriffen etc. pp.

als Single EXE schätzungsweise 4-8 Mb groß.
als Single EXE und jedes Foum inr eigener DLL ca. 2Mb + 30 * 1Mb jenachdem was die Forumlare so benötigen. Im WorstCase also maximal 2Mb + 30 * 4Mb = 122Mb.

Nun als Packages:

Exe ca. 40-80 Kb.
Packages für VCL, Reporte und Datenbank ca. 5-7 Mb groß.
1 Form in DLL mit Packages ca. 100Kb groß.

Macht 80Kb + 5-7Mb + 30 * 100Kb = 9-11Mb insgesamt.

Es gibt also einen klaren BreakEven ab dem sich ein packagesbasiertes modulares System in jedem Falle lohnt gegenüber einer single EXE. Nicht nur in der Größe der Binaries sondern gerade auch im Support oder Entwicklung in Teams.

Pure DLL's ohne Packages lohnen sich im Grunde niemals, das ist alles nur Getrickse und bringt immer wieder nur Ärger ein. Auch wenn jetzt einige hier einen Aufschrei des Entsetzens loslassen Packages und DLL/EXE mit Packages gelinkt sind die einzigste Alternative um auch OOP konform modulübergreifend auf Klassen/globale Variablen etc. zugreifen zu können. Die "Endstelle" in diesem Konzept ist die nachladbare DLL die als alleinige Vollzugriff auf die in ihr enthaltenen Klassen und Formulare hat. Sogesehen eine zusätzliche Sichtbarkeitssufe. Alles was in Packages enthalten ist kann nun durch die EXE und diese DLLs gleichermaßen benutzt werden. Ohne Tricks etc. pp. UND es wird somit mehrfach "wiederverwendet" und nicht jedesmal eine separate Kopie in die PlugIn-DLL eingelinkt.

Gruß Hagen
  Mit Zitat antworten Zitat