binärkompatibilität bei neuer version einer dll

15/09/2008 - 14:27 von Michael Meier | Report spam
folgende situation:
ich habe eine .net-dll entwickelt, die von verschiedenen .net-anwendungen
auf verschiedenen rechnern benutzt wird.

nur wird es in zukunft sicher passieren, daß
1. neue public methoden zu der dll hinzukommen
2. neue nicht-publics hinzukommen
3. vorhandene nicht-publics entfallen
4. sich die implementierung von public-methoden àndert
5. zu einer vorhandenen public methode eine weitere auspràgung
(überladung) hinzukommt
6. neue klassen/strukturen in die dll, manche public, manche nicht,
aufgenommen werden

in all diesen fàllen àndert sich an der vorhandenen
nach-außen-schnittstelle der dll ja logisch nichts (es kommt höchstens was
dazu).

nur die frage: kann man die dll, wenn sie sich nur entsprechend der oben
genannten regeln geàndert hat (es àndert sich also nie eine bereits
vorhandenen public-methode), gefahrlos einer breits laufenden anwendung
"unterjubeln" ohne diese neu kompilieren/installieren zu müssen und sie
làuft mit ihrer bestehenden funktionalitàt weiter?

ersten tests zufolge funktioniert das, aber ist das auch garantiert so
oder hatte ich da einfach nur glück und gevatter zufall hat da immer seine
finger im spiel?


micha
 

Lesen sie die antworten

#1 Kerem Gümrükcü
15/09/2008 - 14:40 | Warnen spam
Hallo Michael,

wenn sich wirklich nichts an der Dll àndert,
also die benutzten Schnittstellen nicht àndern
und ansonsten alles andere für das Client-Programm
genauso ausieht wie vorher, wirst Du keine
Probleme bekommen. Das ist ja der Sinn einer
Dll, das man sie einfach austauschen kann, wenn
was neues hinzukommt, was natürlich vorraussetzt,
das die alten Schnittstellen erhalten bleiben, damit
Programme diese weiter benutzen können. Ob Du
was intern in den Schnittstellen ànderst, das juckt
dein Programm nicht, solange es das bekommt,
was es will,...

Am Rande erwàhnt, basiert die gesammte Windows
Infrastruktur auf diesem Prinzip: Austauschbare
dynamische Link Bibliotheken. Sonst würden alle
deine Programme nicht laufen, wenn sich zwischen
den Windows Version die Namen der DLL Exporte
àndern würden, bzw. wegfallen...!

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.codeplex.com/restarts
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen