Vor und Nachteile einer DLL?

exiter28

Erfahrenes Mitglied
Hallo,
zum ersten mal hab ich kein Problem, sondern nur eine Frage :)

Kann mir jemand ein paar Vor und Nachteile aufzählen, wenn ich einen Quellcode
in eine DLL auslagere? Beispiel:
ich erstelle eine externe DLL mit benötigten Code und importiere diese dann in´s
Projekt. Das funktioniert eigentlich recht gut,
aber:

- hat das Auswirkungen auf den Speicherverbrauch? (da ja eine DLL nur einmal geladen werden muss) Vor- oder Nachteil?

- kann man überhaupt dann den Code in Verbindung mit einer DLL debuggen?
(also wenn ich den Code in der DLL debuggen will)

- kann ich bei einem Fehler in der DLL eine bereinigte DLL einfach auswechseln?

Danke Euch schon mal...
 

napstermania

Mitglied
Hallo exiter,

quelltexte Modular aufbauen ist prinzipiell schon mal keine falsche Sache. Es zwingt dich i.d.R. mit Schnittstellen zu arbeiten womit das prinzip der Kapselung schonmal leichter erreicht werden kann. Weitere Vorteile ergeben sich aus vielerlei hinsicht. Du hast schonmal kein rießen Projekt mit 100 Klassen, welches zum einen ungewollte Abhängigkeiten schaffen kann zum anderen auch nicht gerade Übersichtlich ist.
Es könnten auch bei festgelegten Schnittstellen viele Programmierer simultan an einem Projekt arbeiten. Da hinter der Schnittstelle ein einfach implementierte Simuation hängen kann und somit der Programmier der DLL nicht wissen muss was der Programmierer der EXE macht. (Vorteile der Kapselung)
Es kann aber auch zu Nachteilen führen, wenn sich Schnittstellen bei viel eingesezten DLL's ständig ändern. Irgendwann bekommt man einen "Versionsinfarkt" und ohne gute Versionierung weiß man am Ende gar nicht mehr welche DLL Version mit welcher kann und welche nicht.

Zu deinen Fragen:

Speicherverbrauch: "Jaein" Es kommt natürlich immer darauf an was mit der Klasse(n) aus der DLL gemacht wird. Jedes mal wenn du eine Objektinstanz erzeugst wird speicher angelegt. Du kannst natürlich 100 Instanzen aus einer Klasse der DLL erzeugen womit auch 100 mal speicher dafür angelegt wrid.

Um also mit Klassenbiblioteken vorteilhalt arbeiten zu können müssen solche Projekte im vorfeld undbedingt definert werden. Und daran muss sich auch jeder halten. Dann können alle Vorteile der DLL ausgeschöft und wunderbar umgesetzt werden.

- Debuggen: Kein Problem :)

- Austauschen: Natürlich! Sofern sich die Schnittstellt nicht ändert.
 

exiter28

Erfahrenes Mitglied
Hi napstermania,

vielen Dank für Deine ausführlichen Infos. Soweit hast Du mir alles beantwortet.
Nur mit dem Debuggen, weiß ich nicht, wie ich das machen sollte.
Wenn ich die DLL im Objektkatalog öffne, werden mir ja nur die Klassen und Methoden, usw,...
der DLL angezeigt, jedoch komme ich da nicht mehr in den Code oder?
Gibt´s da einen Trick?

Danke
 

Masterclavat

Erfahrenes Mitglied
Nur mit dem Debuggen, weiß ich nicht, wie ich das machen sollte.
Wenn ich die DLL im Objektkatalog öffne, werden mir ja nur die Klassen und Methoden, usw,...
der DLL angezeigt, jedoch komme ich da nicht mehr in den Code oder?
Gibt´s da einen Trick?

Danke

Du musst einfach die Quellcodedatei der DLL mit Datei/Datei öffnen... (Visual Studio) hinzufügen.
 

napstermania

Mitglied
Du musst einfach die Quellcodedatei der DLL mit Datei/Datei öffnen... (Visual Studio) hinzufügen.

Richtig.
Wenn du allerdings keinen Quelltext besitzt dann kannst du natürlich auch nicht rein Debuggen.

Aber für mich klang das so als wenn du die DLL selbst Programmierst. Dann besitzt du ja auch den Quelltext. Und wenn dann noch die Solution der EXE das DLL Projekt beinhaltet springt der Debugger ohne jedliches zutun deinerseit in die DLL.