2009-04-13 10 views
3

Ich entwickle einen bestimmten Server. Bis jetzt konnten zwei Versionen nicht gleichzeitig installiert werden. Wir ändern das nun und es kam die Frage auf: Soll die Versionsnummer an die Server-Komponenten angehängt werden oder nicht? Der Server enthält 3 Exes und 5 DLLs (einige COM, einige native VC++). Sollten einige oder alle ihren Namen die Version (Serv71.exe, modul71.dll) enthalten oder nicht?Sollten ausführbare Dateien Versionsnummern in ihren Namen enthalten?

Auf der Profiseite sollte es die Verwaltung des Servers ein bisschen einfacher machen. Wenn sich eine bestimmte Instanz falsch verhält, ist sie im Task-Manager erkennbar. Es besteht auch keine Möglichkeit, dass eine fehlerhafte Installation mit gemischten Komponentenversionen endet, ohne dass sie bemerkt werden.

Auf der Gegenseite würde es die Entwicklung ein bisschen schwieriger machen. Der Server ist kein eigenständiges Produkt, sondern Teil unserer Anwendungsinfrastruktur. Dies bedeutet, dass es die Version der Haupt-App erhält. Eine bestimmte Komponente muss einen anderen Namen bekommen, auch wenn sie sich zwischen den Versionen nicht geändert hat.

Alles in allem ist dies kein entscheidendes Problem. Wir können wahrscheinlich mit beiden Wegen auskommen. Wenn ich das gesagt hätte, hätte ich vielleicht ein Gewinnerargument zugunsten einer der Strategien verpasst. Was ist die gemeinsame Wahl? Wie geht's?

Bearbeiten: Ich bin vertraut mit COM und Datei-Metadaten Versionierung, und zustimmen Dateiname Versionsverwaltung ist redundant. Ich versuche herauszufinden, was wichtiger ist - der konstante Redundanzaufwand oder der seltene Wartungsgewinn.

Antwort

1

Für COM-APIs haben Sie wirklich alle benötigten Versionsinformationen in Ihren Bibliotheken. Ich würde finden, diese DLLs mit Versionsnummern bestenfalls redundant, im schlimmsten Fall verwirrend (zumindest wenn Versionsnummern nicht mehr synchron sind). Ich bevorzuge das Anhängen einer Versionskennung an Schnittstellen- und Co-Klassennamen, wann immer ich einen klaren Upgrade-Pfad haben möchte, und antizipiere alle Änderungen.

Für einfache binäre DLL-APIs, Anhängen von Versionsnummern ist eine Idee, aber nicht eine, die ich jemals gesehen habe gut ausgeführt (und ziemlich schrecklich in diesen alten 16-Bit-VB-Laufzeit-DLLs ausgeführt!). Haben sie klare und begrenzte APIs oder stellen sie Dutzende von Funktionen zur Verfügung? Wenn die Schnittstellen groß sind, werden Sie Probleme haben, eine Nebenrolle von einer brechenden Änderung zu unterscheiden. Sobald Sie beginnen, Versionen auf diese Weise zu kennzeichnen, müssen Sie konsistent sein. Jede Versionsänderung bedeutet, dass statisch verknüpfende Clients neu kompiliert werden müssen (und daher die Version selbst umbenannt wird). Das potentielle Problem hier ist, dass Sie eine Menge von 'Version Noise' bekommen, die die wichtigen Änderungen verbergen.

Windows-Binärdateien enthalten Versionsmetadaten (die Struktur VERSIONINFO). Wie LeJeune sagt, ist das eine bekannte Route, die allerdings nicht automatisch Fehler verursacht, wenn man die falschen Sachen miteinander verbindet. Es ist jedoch eine, die Sie relativ einfach nutzen können, um das von Ihnen benötigte Konfigurationsmanagementschema zu unterstützen.

0

Ich würde sagen, wenn die DLLs verschiedene APIs in verschiedenen Versionen bereitstellen, sollte die Versionsnummer an den Dateinamen angehängt werden. Für ausführbare Dateien spielt es keine Rolle. Wenn die ausführbare Datei über eine angegebene Schnittstelle interagiert und sich dies ändert, würde ich auch die Versionsnummer in den Dateinamen der ausführbaren Dateien verwenden.

0

"Auf der Gegenseite würde es die Entwicklung etwas schwieriger machen."

Nicht ganz richtig. Es stellt ein Problem, das Sie bereits haben, zur Verfügung - alle Releases aller Komponenten ausgerichtet halten.

Sie müssen sicherstellen, dass die gesamte Anwendungsinfrastruktur über alle korrekten Releases aller Komponenten verfügt.

Machen Sie diese einfacher, indem Sie jedes Teil richtig beschriften und einen Konfigurationsbericht bereitstellen, der angibt, welche Versionen aktuell sind und welche Versionen zusammen verwendet werden müssen.

2

Normalerweise sind Versionsinformationen Teil der Metadaten (Dateierweiterungen) der DLL und nicht Teil des Dateinamens.

Der Prozess der Wartung ist einfacher. Setup-Programme wissen, wie Sie mit dieser Information arbeiten, wenn Sie eine vorhandene Binärdatei aktualisieren/ersetzen. Wenn Sie eine neue Version der DLL ausstellen müssen, müssen Sie die exe nicht erneut kompilieren/neu verknüpfen.

Als allgemeine Richtlinie - versuchen Sie nicht, neue Mechanismen zu erfinden. Benutze existierende.

Verwandte Themen