Ich habe eine "einfache" Aufgabe. Ich habe ein bestehendes Projekt mit einem in C# geschriebenen Webdienst, der eine Methode hat, die eine riesige XML-Datei an den Client sendet. (Dies ist eine Sicherungsdatei mit Daten, die auf dem Server gespeichert sind und an eine andere Stelle gesendet werden müssen.) Für diesen Dienst wurden außerdem einige zusätzliche Authentifizierungs-/Autorisierungseinstellungen eingerichtet. Und ich habe eine vorhandene Delphi 2007-Anwendung für WIN32, die den Webdienst aufruft, um die XML-Daten für die weitere Verarbeitung zu extrahieren. Es ist ein Legacy-System, das ohne .NET-Installation ausgeführt wird. Einziges Problem: Die XML-Datei ist riesig (mindestens 5 MB) und muss als Ganzes gesendet werden. Aufgrund der Systemanforderungen kann ich das nicht einfach in mehrere Teile aufteilen. Und ich darf weder den C# - noch den Delphi-Code wesentlich ändern. (Ich kann den Methodenaufruf nur auf Client und Server ändern.) Und ich darf nicht mehr als 8 (Arbeits) Stunden damit verbringen, eine bessere Lösung zu finden, sonst bleiben die Dinge einfach unverändert.Senden eines binären Datenstroms durch SOAP
Die Änderung, die ich hinzufügen möchte, besteht darin, die XML-Daten zu komprimieren (was sie auf etwa 100 KB reduziert) und sie dann als binären Stream an den Client zu senden. Der Delphi-Code sollte dann diesen eingehenden Stream akzeptieren und die XML-Daten erneut komprimieren. Nun, mit einem Minimum an Änderungen am bestehenden Code, wie soll dies geschehen?
(Und ja, ich schrieb den ursprünglichen Client und Server in der Vergangenheit und es war nie so viele Daten auf einmal zu senden. Leider hatte der Entwickler, der es von mir übernahm, andere Ideen, machte einige dumme Änderungen, Ich habe mehr Schaden angerichtet und die Firma verlassen, bevor sich mein Stahlspitzenboot mit seinem Hintern verbinden konnte. Jetzt muss ich ein paar Dinge reparieren. Die Reparatur dieses Webdienstes hat eine sehr geringe Priorität im Vergleich zu den anderen Schäden, die wiederhergestellt werden müssen
Der Servercode basiert auf altem ASMX-Code, der Clientcode ist das Ergebnis des Delphi-SOAP-Imports mit einigen zusätzlichen Modifikationen. Das XML ist ein tägliches Update für die mehr als 3000 Benutzer, die in ihrem aktuellen Design riesig sind. Wir arbeiten daran, aber das braucht Zeit. Es gibt wichtigere Punkte, die zuerst behoben werden müssen, aber wie gesagt, es ist nur wenig Zeit verfügbar, um dieses Problem schnell zu beheben.
Sie haben nicht gesagt, ob Sie WCF oder die ältere ASMX-Technologie verwenden. –
Warum sichern Sie nicht einfach diese XML-Datei, wenn Sie die restlichen Dateien des Servers sichern? Warum behandeln Sie es besonders? Sie * sichern * den Server, nicht wahr? –