- Thread-Sicherheit durch `ReaderWriterLockSlim` für `_CachedTables`.
- `IsOnline`-Status mit `Interlocked`-Operationen atomar gemacht.
- Neue Methoden für Datenbankoperationen mit besserem Timeout-Handling.
- Verbesserte Fehlerbehandlung und detailliertere Protokollierung.
- Gemeinsame `ChannelFactory` für effizientere Ressourcennutzung.
- Optimierte Reconnect-Logik mit kürzeren Wartezeiten.
- Entfernen von `Task.Run` für asynchrone Methoden.
- Aktualisierung der Assembly-Version auf `2.8.0.0`.
- `MSSQLServer.vb`: Konvertierung von `Nothing`-Werten zu `DBNull.Value` und detaillierte Protokollierung von SQL-Fehlern hinzugefügt.
- `AssemblyInfo.vb`: Aktualisierung der Assembly-Version auf `2.4.0.0`.
- `Client.vb`: Einführung von `_IsReconnecting`, um parallele Reconnects zu verhindern. Verbesserte Fehlerbehandlung, Protokollierung und Ressourcenfreigabe.
- `MailSession.vb`: Konsistentere Protokollierung, Änderung von `Info` zu `Debug` beim Schließen der Verbindung.
- `EDMI.API.vbproj`: Hinzufügen der Datei `ErrorLog.txt`.
- `ErrorLog.txt`: Dokumentation von Timeout- und Verbindungsproblemen mit detaillierten Stack-Traces.
Diese Änderungen verbessern die Stabilität, Fehlertoleranz und Protokollierungsqualität der Anwendung.
Es wurde eine neue Funktion `GetServiceStatus` zur Klasse `Client` hinzugefügt, die einen Live-Monitoring-Snapshot vom Service abruft. In `ClientStatus` wurde die Eigenschaft `ClientId` als reguläre Eigenschaft hinzugefügt.
In `Reference.vb` wurden zahlreiche neue Methoden für Datenbank- und Dateioperationen implementiert, sowohl synchron als auch asynchron. Dazu gehören Funktionen wie `ReturnDatatable`, `NewFile`, `GetFileByObjectId` und `TestObjectIdExists`. Bestehende Methoden wurden überarbeitet, um die Lesbarkeit zu verbessern.
Die Datei `LogConfig.vb` wurde angepasst, indem eine Debug-Log-Meldung entfernt wurde. In `AssemblyInfo.vb` wurde die Version auf `2.7.0.0` aktualisiert. Ein neues Projekt `EDMIService` wurde zur Lösung hinzugefügt, einschließlich der entsprechenden Build-Konfigurationen.
- Implementierung von `IDisposable` in der Klasse `Client`, um Ressourcen wie Timer und Kanäle ordnungsgemäß freizugeben.
- Einführung von `ActiveClients` und `ClientStatus` zur Verfolgung und Statusanzeige aktiver Clients.
- Verbesserte Fehlerbehandlung mit der Methode `HandleCommunicationError`, die Kommunikationsfehler protokolliert, den Client offline setzt und einen Reconnect auslöst.
- Optimierung der Reconnect-Logik mit asynchronen Wiederverbindungsversuchen und gestaffelten Verzögerungen.
- Erweiterung der Konstruktoren in `Client` um einen optionalen `pClientName`-Parameter und Generierung eines eindeutigen `ClientId`.
- Verbesserte Timer-Logik und asynchrone Verarbeitung in `UpdateTimer_Elapsed`.
- Einführung der Methode `EnsureAvailable`, um sicherzustellen, dass der Kanal vor Service-Aufrufen verfügbar ist.
- Hinzufügen asynchroner Varianten für Service-Methoden (`GetDatatable`, `GetScalarValue`, `ExecuteNonQuery`) und Fallback auf direkte Datenbankzugriffe.
- Verbesserte Timeout-Einstellungen und Verbindungsverwaltung in der Klasse `Channel`.
- Erweiterungen in `DatabaseWithFallback` für asynchrone Methoden und detaillierteres Logging.
- Aktualisierung der Assembly-Version auf `2.7.0`.
In `MSSQLServer.vb` wurde die Fehlerbehandlung erweitert, indem Fehler beim Öffnen einer Verbindung (`pConnection.Open`) nun protokolliert werden.
Die Versionsinformationen in `AssemblyInfo.vb` wurden von `3.8.1.0` auf `3.8.2.0` aktualisiert.
In `XRechnungViewDocument.vb` wurde die Methode `RenderLabelValuePair` angepasst, um Eingabewerte mit der neuen Methode `SanitizeForPdf` zu bereinigen. Diese entfernt problematische Unicode-Zeichen, die Abstürze beim PDF-Rendering verursachen könnten, und protokolliert entfernte Zeichen. Dies erhöht die Stabilität und Sicherheit.
Die Logik in `ConfigManager(Of T)` wurde angepasst, um bei Fehlern beim Laden der App-Konfiguration detailliertere Informationen (Pfad und Fehlergrund) zu protokollieren.
In `AssemblyInfo.vb` wurden die Trademark-Version, Assembly-Version und File-Version von `1.4.0.0` auf `1.5.0.0` aktualisiert.
Die Funktion `SetVariableValue` wurde aus `Client.vb` entfernt, da sie umfangreiche, aber nicht mehr benötigte Logik zur Attributverarbeitung enthielt.
In `EDMI.API.vbproj` wurden Projektreferenzen durch DLL-Referenzen ersetzt (`DigitalData.Modules.Base`, `Config`, `Database`, `Logging`), um die Modularität zu verbessern.
Die Assembly-Metadaten in `AssemblyInfo.vb` wurden aktualisiert, einschließlich Copyright (2026), Trademark (2.0.0) und Assembly-Version (2.0.0.0), um die neue Hauptversion zu reflektieren.
Die Datei `DEX_API.vb` wurde entfernt, einschließlich der Klasse `DEX_API`, die von `JobBase` geerbt und das Interface `IJob(Of ADSyncArgs)` implementiert hat.
Ein neuer Job-Typ `API_SQL` wurde zur Enumeration `JobType` in `JobConfig.vb` hinzugefügt.
Neue Dateien wurden hinzugefügt:
- `APISQLArgs.vb`: Enthält die Klasse `APISQLArgs` mit der Eigenschaft `ProfileID`.
- `APISQLConfig.vb`: Enthält die Klasse `APISQLConfig` mit den Eigenschaften `BaseUrl`, `Property1`, `Property2`, `Property3`.
- `DEX_APIJob.vb`: Enthält die Klasse `DEX_APIJob`, die von `JobBase` erbt und das Interface `IJob(Of APISQLArgs)` implementiert. Die Methoden `StartDex_API` und `ShouldStart` wurden hierhin verschoben und angepasst.
Die Projektdatei `Jobs.vbproj` wurde aktualisiert, um die neuen Dateien einzubinden und den Verweis auf `DEX_API.vb` zu entfernen.
Die Methode `Create_PDFfromXML` wurde vollständig überarbeitet, um die Struktur und Lesbarkeit zu verbessern. Die Logik wurde modularisiert, indem neue Methoden wie `InitializeFilePaths`, `InitializePDF`, `ProcessInvoiceData` und `FinalizePDF` eingeführt wurden.
Neue Hilfsklassen (`FilePaths`, `PdfRenderContext`, `InvoiceItemData`) wurden hinzugefügt, um die Datenstrukturierung und den Kontext zu verbessern. Die Verarbeitung von Bereichen und Folgeelementen wurde in spezifische Methoden ausgelagert (`HandleAreaSwitch`, `HandleFollowUpItem`).
Die Rendering-Logik wurde durch Methoden wie `RenderDisplayItem` und `RenderMultiLineText` vereinfacht. Neue Konstanten für Layout und Textformate wurden eingeführt, um die Standardisierung zu fördern.
Die Debug-Logs wurden erweitert, um detaillierte Einblicke in die Verarbeitungsschritte zu bieten. Die Änderungen verbessern die Wartbarkeit, Modularität und Robustheit der PDF-Erstellung erheblich.
Die Abhängigkeit von `Logging.vbproj` wurde in den Projektdateien `Base.vbproj`, `Database.vbproj` und `Encryption.vbproj` entfernt und durch eine direkte Referenz auf die vorkompilierte DLL `DigitalData.Modules.Logging.dll` ersetzt.
Ein neuer Bereich `INCLUDED_NOTE` wurde in der Klasse `XRechnungViewDocument` hinzugefügt, um Notizen und Hinweise zu verarbeiten und im PDF darzustellen. Die PDF-Logik wurde entsprechend erweitert, und ein neues Währungsformat `INVOICE_TOTAL_CHARGE_AMOUNT` wurde hinzugefügt.
Die Datei `logParser.txt` wurde in `Jobs.vbproj` eingebunden, und neue Debug-Logs dokumentieren den Ablauf der Methode `Create_PDFfromXML`.
Die Assembly-Version wurde auf `3.6.0.0` aktualisiert.
Die Abhängigkeit von `Logging.vbproj` wurde entfernt und durch die direkte Referenzierung der DLL `DigitalData.Modules.Logging.dll` ersetzt. Dies betrifft die Dateien `Config.vbproj` und `Interfaces.vbproj`.
Die Assembly-Version wurde in `AssemblyInfo.vb` von `3.5.1.0` auf `3.5.2.0` erhöht.
SQL-Abfragen in `ImportZUGFeRDFiles.vb` wurden angepasst, um `WITH (NOLOCK)` hinzuzufügen, um potenzielle Sperrprobleme zu vermeiden.
Die Methode `CleanupTempFolder` wurde in `DocumentPathHandler.vb` hinzugefügt, um temporäre Dateien zu bereinigen.
In `AssemblyInfo.vb` wurden Copyright-Jahr und Versionen aktualisiert (u.a. auf `2.0.0.0`, `1.4.0.0`, `1.5.0.0`).
Ein neues Muster `PATTERN_TBCOL` wurde in `Patterns.vb` hinzugefügt und in die entsprechenden Listen aufgenommen.
In `SettingsState.vb` wurde das Feld `SavetoDrive` ergänzt.