Behalte ein WCF-transferiertes Objekt deflationiert/serialisiert

Possible Duplicate:
Get Just the Body of a WCf Message

Guten Morgen,

Ich habe einen WCF-Dienst, der ein komplexes Objekt erstellt und dann an den konsumierenden Client sendet. Momentan funktioniert der Service gut, aber das xml wird auf dem Client neu/deserialisiert und ich möchte das nicht, da der Client mit dem xml arbeiten möchte.

Gibt es eine Möglichkeit, das "XML-Dokument" zu erhalten, das als Teil der WCF-Dienstantwort übertragen wird? Natürlich könnte ich es einfach wieder auf dem Client serialisieren, aber warum sollten zusätzliche Schritte unternommen werden, wenn sie vermieden werden können.

TIA JB

1
nl ja ru
Ich bin mir nicht sicher, ob ich das verstehe ohne eine Hand zu halten. Ich mache folgendes. Mein Client hat eine Service-Referenz mit der Domain von say WCFDomain. Meine Anfrage entspricht einer Klasse der WCFDomain. Gleiches für meine Antwort. Also erstelle ich meine Anfrage- und Antwortobjekte und befülle die Anfrage. Dann rufe ich den Dienst auf, der das Anfrageobjekt sendet, und die Ergebnisse werden an mein Antwortobjekt zurückgegeben. Das Objekt ist so, wie ich es wollte, was Daten betrifft, aber ich möchte nur die XML/deserialisierte Version.
hinzugefügt der Autor GPGVM, Quelle

1 Antworten

Obwohl es Möglichkeiten gibt, die WCF-Empfangs/Sende-Schritte sowohl auf der Server- als auch auf der Client-Seite einzubinden, wo Sie beeinflussen könnten, wie die Serialisierung ausgeführt wird (in Ihrem Fall nicht ausgeführt), wäre das Ihrer Meinung nach zu viel Aufwand Szenario.

Sie sollten den Arbeitsablauf vereinfachen und die Out-of-the-Box-Funktionen beibehalten.

Ich denke, der einfachste Ansatz wäre, Ihre Objekte nur serverseitig zu serialisieren und das Ergebnis einfach als String an den Client zu senden.

Um flexibel zu bleiben (Sie könnten später weitere Daten hinzufügen, die die serialisierten Daten begleiten), fügen Sie dieses serialisierte xml in eine Eigenschaft des dedizierten Data Transfer Object (DTO) ein.

Dieser DTO wird dann an den Client gesendet, der die XML-Datei einfach von dieser Eigenschaft liest.

Unter der Haube gibt es natürlich immer noch Serialisierung. Dies wäre jedoch die integrierte Funktionalität, die durch die WCF-Dienst-/Client-Kommunikation vollständig transparent ausgeführt wird. Wenn Sie keinen ernsthaften Grund haben, es manuell zu beeinflussen, lassen Sie es so wie es ist. Wenn Sie nicht wissen, was Sie tun, öffnen Sie stattdessen die Schachtel Pandora ...

Das Senden eines einfachen Objekts wie dem oben beschriebenen DTO sollte hier keine große Rolle spielen. Ich meine, dieses Szenario würde hauptsächlich eine Reihe von Strings über die Leitung senden, die keine Probleme und sehr wenig Overhead verursachen sollten.

1
hinzugefügt
Nun, Sie wissen, dass ich diesen Weg begonnen habe, aber ein Beitrag von einer anderen Person, die auf meine Frage antwortete, sagte, dass ich nicht verstehe, wie die WCF-Dienste funktionieren. Ehrlich gesagt denke ich, dass ich die Frage nicht gut gestellt habe und somit die Antwort. Jedenfalls macht das Sinn. Danke
hinzugefügt der Autor GPGVM, Quelle