MarcRB1975 hat folgendes geschrieben: |
Hallo,
ich hätte mal eine Frage hinsichtlich DLL.
Ich habe mich schon oft gefragt, warum eigentlich viele bzw. alle Entwickler die DLL benutzen.
Nun habe ich einiges schon darüber gelesen. Ich kann z.B. Funktionen dort "auslagern", Formulare ect.
Ich würde auch Funktionen auslagern. Aber das kann ich doch in eigenen Units doch auch machen.
Welchen Vorteil hat das nun, wenn ich Funktionen in DLL erstelle? Ist z.B. der Zugriff schneller?
Vielleicht könnte mir jemand weiterhelfen.
Vielen Dank im Voraus. |
Ich glaube du wirfst hier etwas durcheinander.
Eine Unit als Programm-Modul hast du immer.
Du meinst wahrscheinlich eine BPL?
Eine dll ist eine Standardlösung und kann prinzipiell von allen Programmiersprachen aufgerufen werden.
Eine BPL ist eine Borland-Speziallösung die zu nichts, außer sich selbst in der gleichen Version, kompatibel ist.
Der Vorteil der BPL ist, das sie mit Objecten umgehen kann und es hier keine Probleme beim gesenseitigen Aufruf von
Objecten gibt.
Jedes dieser Verfahren hat Vor- und Nachteile.
DLL enthält intern eine Kopie des Delphi - Laufzeitsystems und wird damit stark aufgebläht.
Bietet dabei natürlich eine gute Kapselung. Es sind ein paar Besonderheiten bei der Parameterübergabe (Stringhandling)
zu beachten. Bekommt man aber gut in den Griff, wenn man mit Interfaces arbeitet.
BPL erzeugt eine versionsabhängige BPL Hölle, die bei größeren Projekten kaum mehr beherschbar ist.
Ohne ein Versionierungssystem (und da ist mir kein brauchbares kommerzielles System bekannt) sind BPL ein Dauerfrust für Anwender und Entwickler.
BPL kann nur mit Delphi und hier nur mit der gleichen Version verwendet werden.
Einer der wesentlichen Vorteile der MS NET Implementierung ist hier eine saubere Konzeptlösung.
Das Laufzeitsystem ist Bestandteil des Betriebssystems und die Assemblys sind versionierbare dll.
Eine weitere Möglichkeit zur Modularisierung ist die Verwendung mehrerer Exe-Files und die Parameterübergabe mittels Kommandozeile.
Zum heutigen Zeitpunkt würde ich BPL als Borland Sonderweg nicht mehr verwenden.
Ich bin gerade dabei ein Programm auf der Basis von Dll zu modularisieren.
Über PInvoke kann ich so eine Dll auch aus Net heraus aufrufen. Damit ist ein gleitender Übergang von Win32 zu net
möglich.
Win32 und damit Delphi sind leider ein Auslaufmodell und das was VCL.Net bisher geboten hat, kann konzeptionell nicht überzeugen.
Gruß
Carla