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