5 Stimmen

Webdienst / wcf-Dienst, ist es jemals besser, einen Datensatz zurückzugeben?

Also von dem, was ich über Dienste gesehen habe, scheinen benutzerdefinierte Objekte der Weg zu gehen, wenn der Dienst geschrieben wird, um Daten zurückzugeben. Wenn ich einen Dienst schreibe, der verwendet wird, um 1) eine Datenbank aufzufüllen oder 2) Informationen für eine Website bereitzustellen, gibt es jemals eine Verwendung für die Rückgabe eines Datensatzes / datatable im Gegensatz zu einer Liste von benutzerdefinierten Objekten mit all diesen Informationen?

danke

6voto

Steven Robbins Punkte 26083

Ich denke, das größte Problem beim Senden von DataSets über die Leitung, vorausgesetzt, Sie "besitzen" beide Enden, ist das schiere "Gewicht", das ein DataSet mit sich bringt - mit seinen Beziehungsmöglichkeiten usw. tut es weit mehr als nur Daten zu transportieren. Eine einfache Sammlung von Objekten sollte wesentlich leichter sein.

Wenn Sie nicht beide Enden "besitzen" oder andere Kunden Ihren Dienst nutzen, dann ist das DataSet ein Alptraum für die Interoperabilität.

Wenn Ihnen einer dieser Punkte egal ist und Sie der Meinung sind, dass eine Sammlung von Objekten zu viel "Arbeit" bedeutet (z. B. wenn Sie sie nur in ein DataSet am anderen Ende zurückübersetzen wollen), dann ist das Ihre Entscheidung.

Es gibt einen guten Artikel darüber auf aquí .

4voto

Marc Gravell Punkte 970173

Das einzige Mal, dass ich jemals zurückkehre DataTable / DataSet über WCF ist, wo ich etwas habe, wo es einfach unmöglich ist, das Schema im Voraus zu kennen, oder sie ist einfach keinen Nutzen. In 99,99 % der Fälle werde ich mit regulären DTO-Klassen arbeiten, da diese eine gute Mischung aus Leistung, Einfachheit (zum Debuggen) und Interoperabilität bieten.

Ich arbeite seit der CTP 3.0 mit WCF... Ich habe verwendet DataTable über WCF nur ein paar Mal... Ich fühlte mich ein wenig schmutzig dabei, aber in den fraglichen Fällen gab es einfach keinen Return-on-Investment, wenn man es auf die harte Tour machte.

Beachten Sie nur, dass es sich um よほど für einen Nicht-.NET-Client schwer zu konsumieren.

2voto

olle Punkte 4567

Solche Fragen sind schwer zu beantworten, aber im Allgemeinen möchten Sie keinen Datensatz von einem Webservice zurückgeben. Versuchen Sie stattdessen, ein Geschäftsobjekt zurückzugeben. Etwas, das für einen Geschäftsmann als Konzept wie eine Auftragsklasse Sinn macht. Der Grund dafür ist, dass Sie den Webservice-Client im Allgemeinen nicht an die Implementierungsdetails der Anwendung koppeln wollen, die den Dienst bereitstellt. Der Client kümmert sich um Bestellungen und nicht darum, wie diese Bestellungen in der Datenbank strukturiert werden. Dies würde zu einer engen Kopplung führen, die dem Sinn eines Webservice zuwiderläuft. Zweitens: Wenn der Client, der den Webservice nutzt, kein .net-Client ist, müsste er eine ziemlich unangenehme XML-Datei erstellen/parsen, um den Datensatz zu lesen/schreiben, der kein Datentyp auf seiner Plattform ist.

1voto

Moose Punkte 5214

Benutzerdefinierte Objekte machen es für Ihre Kunden einfacher. DataSets/DataTables machen es für Sie einfacher.

Ich denke, dass Sie Ihre Entscheidung davon abhängig machen sollten, wem Sie es leichter machen wollen.

1voto

Shiraz Bhaiji Punkte 62129

Ich würde aus den folgenden Gründen keine Datensätze über Webdienste verwenden (sie können in Ihrem Fall relevant sein oder auch nicht):

  • Datensätze sind MS-Technologie. Was passiert, wenn Sie den Webdienst von einem Java-Client aus aufrufen möchten?
  • Sie haben keine Kontrolle über die Änderungen, die der Kunde vornimmt. Sie erhalten lediglich eine Liste der Änderungen zurück, die in der Datenbank gespeichert werden.
  • Die Datensätze enthalten viele Informationen, die möglicherweise nicht benötigt werden, was zu Leistungsproblemen führt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X