160 lines
6.3 KiB
Markdown
160 lines
6.3 KiB
Markdown
# Technische Dokumentation
|
|
|
|
**Stand:** 2026-08-06
|
|
|
|
**Version:** 2.1.0
|
|
|
|
**Technik:** C# WinForms, .NET Framework 4.6.1
|
|
|
|
## Ziel und Sicherheitsprinzip
|
|
|
|
Das Tool unterstützt geplante BizTalk-Wartungen, ohne den fachlich gewünschten
|
|
Ausgangszustand zu verlieren. Der Vorher-Snapshot ist die einzige Quelle für
|
|
den Restore. Das bedeutet insbesondere:
|
|
|
|
- Nur Artefakte, die im Snapshot aktiv waren, werden heruntergefahren.
|
|
- Nur Artefakte, die im Snapshot aktiv waren, werden wieder gestartet.
|
|
- Zuvor gestoppte, gebundene oder deaktivierte Artefakte werden beim Restore nicht verändert.
|
|
- Ein vorhandener Vorher-Snapshot wird durch **Herunterfahren** nicht ersetzt.
|
|
- Snapshot und Zielserver müssen übereinstimmen; Kurzname und FQDN desselben Servers werden akzeptiert.
|
|
- Bei mehrdeutiger WMI-Auflösung wird abgebrochen, statt möglicherweise das falsche Objekt zu verändern.
|
|
|
|
## Oberfläche
|
|
|
|
Die Oberfläche führt von links nach rechts durch sechs Schritte:
|
|
|
|
1. **Verbindung prüfen**
|
|
2. **Zustand erfassen**
|
|
3. **Herunterfahren**
|
|
4. **Wiederherstellen**
|
|
5. **Nachher erfassen**
|
|
6. **Vergleichen**
|
|
|
|
Kopfbereich, Status-Badge, einheitliche Eingabefelder, gleich große
|
|
Workflow-Schaltflächen, farblich getrennte destruktive und wiederherstellende
|
|
Aktionen sowie responsive Ergebnis- und Logtabellen sorgen für eine klare
|
|
Bedienung auch bei kleineren Bildschirmgrößen und DPI-Skalierung.
|
|
|
|
Der Dry-run ist standardmäßig aktiviert. Bei echten Änderungen zeigt die
|
|
Statusleiste einen roten Hinweis und jede Änderung verlangt eine zusätzliche
|
|
Bestätigung mit Zielserver und verwendeter Zustandsdatei. Während einer
|
|
Operation sind Eingaben gesperrt; das Fenster kann nicht versehentlich
|
|
geschlossen werden.
|
|
|
|
## Erfasster Zustand
|
|
|
|
Über `root\MicrosoftBizTalkServer` werden gelesen:
|
|
|
|
| WMI-Klasse | Relevanter Zustand |
|
|
| --- | --- |
|
|
| `MSBTS_ReceiveLocation` | `IsDisabled`, Name, Receive Port, Adapter |
|
|
| `MSBTS_SendPort` | `Status`, Name, Adaptertyp |
|
|
| `MSBTS_Orchestration` | `OrchestrationStatus`, Name und Assembly-Identität |
|
|
| `MSBTS_HostInstance` | `ServiceState`, Hostname und ausführender Server |
|
|
|
|
Transportadressen werden bewusst nicht persistiert. Sie sind für Start/Stop
|
|
nicht erforderlich und können Benutzerinformationen, Kennwörter oder andere
|
|
sensible Bestandteile enthalten.
|
|
|
|
## Zustandswerte
|
|
|
|
- Send Port: `1=Bound`, `2=Stopped`, `3=Started`
|
|
- Orchestrierung: `1=Unbound`, `2=Bound`, `3=Stopped`, `4=Started`
|
|
- Hostinstanz: `1=Stopped`, `2=StartPending`, `3=StopPending`, `4=Running`
|
|
- Receive Location: `Enabled = !IsDisabled`
|
|
|
|
Weitere Host-Servicezustände werden als unbekannt angezeigt und nicht
|
|
automatisch als gestartet behandelt.
|
|
|
|
## Shutdown-Plan
|
|
|
|
1. Alle im Snapshot aktivierten Receive Locations deaktivieren.
|
|
2. Alle im Snapshot gestarteten Orchestrierungen kontrolliert stoppen.
|
|
3. Alle im Snapshot gestarteten Send Ports stoppen.
|
|
4. Alle im Snapshot gestarteten Hostinstanzen des ausgewählten Servers stoppen.
|
|
|
|
Hostinstanzen anderer BizTalk-Knoten erscheinen als übersprungene Hinweise.
|
|
Damit kann derselbe Gruppen-Snapshot nachvollziehbar bleiben, ohne remote
|
|
Hostinstanzen versehentlich vom falschen Knoten aus zu verändern.
|
|
|
|
## Restore-Plan
|
|
|
|
1. Zuvor gestartete Hostinstanzen starten.
|
|
2. Zuvor gestartete Send Ports starten.
|
|
3. Zuvor gestartete Orchestrierungen starten.
|
|
4. Zuvor aktivierte Receive Locations zuletzt aktivieren.
|
|
|
|
Gestoppte oder gebundene Send Ports, gestoppte/gebundene/ungebundene
|
|
Orchestrierungen, deaktivierte Receive Locations und gestoppte Hostinstanzen
|
|
erzeugen keine Restore-Aktion.
|
|
|
|
## Eindeutige WMI-Auflösung
|
|
|
|
WMI-Abfragen werden ohne dynamisch zusammengesetzte WQL-`WHERE`-Klauseln
|
|
ausgeführt. Die Filterung erfolgt im Prozess und behandelt Sonderzeichen in
|
|
Namen sicher. Zusätzlich werden verwendet:
|
|
|
|
- Receive Location: `Name` plus `ReceivePortName`
|
|
- Orchestrierung: `Name` plus `AssemblyName`
|
|
- Hostinstanz: `InstanceName` plus `RunningServer`
|
|
|
|
Die vollständige Assembly-Identität einer Orchestrierung wird im Snapshot und
|
|
beim Vergleich berücksichtigt. Liefert WMI trotz der Qualifier mehrere
|
|
Treffer, wird die Operation mit einer eindeutigen Fehlermeldung abgebrochen.
|
|
Jeder Schritt prüft vor dem Methodenaufruf den aktuellen Zustand. Bereits
|
|
erreichte Zielzustände werden protokolliert und übersprungen; dadurch können
|
|
teilweise ausgeführte Pläne nach einer Fehlerkorrektur sicher erneut gestartet
|
|
werden.
|
|
|
|
## Dateisicherheit
|
|
|
|
JSON-Dateien werden zunächst vollständig in eine temporäre Datei geschrieben,
|
|
auf den Datenträger gespült und anschließend atomar ersetzt. Leere Dateien und
|
|
Dateien über 16 MiB werden verworfen. UTF-8 mit und ohne BOM sowie der sichtbare
|
|
BOM-Marker älterer Konvertierungen werden beim Lesen toleriert.
|
|
|
|
Vergleiche verwenden zusammengesetzte Identitäten. Gleichnamige Artefakte in
|
|
unterschiedlichen Anwendungen, Receive Ports oder Assembly-Versionen werden
|
|
nicht miteinander vermischt.
|
|
|
|
## Verzeichnisse
|
|
|
|
```text
|
|
%ProgramFiles%\BizTalkPlatformManagementTool\
|
|
BizTalkPlatformManagementTool.exe
|
|
BizTalkPlatformManagementTool.exe.config
|
|
|
|
%ProgramData%\BizTalkPlatformManagementTool\
|
|
Wartungen\
|
|
Logs\
|
|
```
|
|
|
|
Die Trennung verhindert, dass ein Update Zustandsdateien überschreibt, und
|
|
ermöglicht normale Logrotation außerhalb des geschützten Programmverzeichnisses.
|
|
Logs werden für den aktuellen Tag und vier vorherige Tage aufbewahrt.
|
|
|
|
## Installer und Rollback
|
|
|
|
Der .NET-Installer benötigt keine PowerShell. Er validiert die Assembly, baut
|
|
ein Staging-Verzeichnis auf, verschiebt eine bestehende Installation in ein
|
|
Backup und aktiviert anschließend die neue Version. Bei einem Fehler wird das
|
|
Backup zurückverschoben. Startmenü- und optionale Desktop-Verknüpfung werden
|
|
systemweit angelegt.
|
|
|
|
Der Release-Packager erzeugt den Installationsordner, ein ZIP, eine
|
|
Base64-Transportdatei und eine SHA-256-Datei.
|
|
|
|
## Tests
|
|
|
|
Die Regressionstests prüfen:
|
|
|
|
- Restore enthält ausschließlich zuvor aktive Artefakte.
|
|
- Shutdown enthält ausschließlich zuvor aktive Artefakte.
|
|
- Receive Locations erhalten ihren zusätzlichen WMI-Qualifier.
|
|
- Vergleiche trennen gleichnamige Artefakte verschiedener Anwendungen.
|
|
- fremde Server-Snapshots werden abgewiesen.
|
|
- atomarer JSON-Ersatz hinterlässt keine temporären Dateien.
|
|
|
|
Ein echter WMI-Integrationstest muss auf einem BizTalk-2020-System im Dry-run
|
|
und anschließend in einem freigegebenen Wartungsfenster erfolgen.
|