Warum ist das Zurückgeben eines Datasets oder einer Datentabelle aus dem WCF-Dienst nicht empfehlenswert? Was sind die Alternativen?

8

Ich arbeite an University Management System, auf dem ich einen WCF-Dienst verwende und in dem Dienst verwende ich DataTables und DataSets zum Abrufen von Daten aus Datenbank und Datenbank ist SQL Server.

Meine Fragen sind

  • Verwendet DataTables und Datasets "Good Practice" oder "Bad Practice"?
  • Wenn es schlecht ist, was ist die Alternative von DataTable / DataSet?
  • Wenn es schlecht ist, was sind die Hauptgründe?
Khurram Ali 16.09.2014, 16:43
quelle

3 Antworten

10

Das Zurückgeben von Datensätzen aus Webdiensten wird normalerweise nicht als "gute Praxis" betrachtet. Die Probleme wurden ausführlich in den folgenden Links dokumentiert:

Ссылка
Ссылка
Ссылка

Zusammenfassend scheinen die größten Probleme bei der Rückgabe von DataSet -Objekten von Web-Services die Serialisierungsleistung und die Nicht-Net-Interoperabilität zu betreffen. Darüber hinaus erhöht die generische, polymorphe Natur von DataSet die Datenstruktur im Allgemeinen bis zur Laufzeit, sodass die WSDL-Definition keine vollständige Beschreibung der Methodensignatur bereitstellt. Wie bei jeder Design-Entscheidung müssen Sie jedoch die Kosten gegenüber den Vorteilen abwägen und die beste Anpassung anhand Ihrer spezifischen Ziele und Einschränkungen bestimmen.

Im Hinblick auf Alternativen könnten Sie eine generische Sammlung (z. B. List<yourClassHere> ) in Betracht ziehen oder vielleicht sogar einige Revisionen der Architektur in Erwägung ziehen, um die Verwendung von ODATA zu ermöglichen.

Die folgenden Links bieten eine gute Hintergrundreferenz für die Rückgabe von Entitäten über Webdienste. Ссылка Ссылка Ссылка

    
Seymour 16.09.2014, 19:06
quelle
1

Es gibt drei Gründe für einen fehlgeschlagenen Rückgabetyp als datatable in WCF-Diensten

  • Sie müssen den Datentabellennamen wie folgt angeben:

    %Vor%
  • Wenn Sie einen Verweis auf der Clientseite des WCF-Dienstes hinzufügen, wählen Sie die wiederverwendbare DLL system.data

  • Geben Sie das Attribut für datatable -Member-Variable wie

    an %Vor%
Mukesh Methaniya 02.12.2016 05:03
quelle
-1

Ich verwende DataTable in meiner WCF-Anwendung, aber es wurde ein Fehler angezeigt. So habe ich den Fehler behoben.

Beim Zurückgeben einer DataTable von einem Webdienst in WCF an die Windows-Formularanwendung. Ich habe diese Ausnahme bekommen.

  

System.ServiceModel.CommunicationException: 'Beim Empfangen der HTTP-Antwort an Ссылка ist ein Fehler aufgetreten. Dies könnte daran liegen, dass die Service-Endpunktbindung das HTTP-Protokoll nicht verwendet. Dies kann auch daran liegen, dass ein HTTP-Anforderungskontext vom Server abgebrochen wird (möglicherweise aufgrund des Herunterfahrens des Dienstes). Weitere Informationen finden Sie in den Serverprotokollen. '

Es ist jedes Mal passiert, dass ich versucht habe, DataTable

zu erhalten

Um die Ausnahme zu beheben, musste ich der DataTable einen Namen geben.

Code mit dem Fehler

%Vor%

Korrigiert Code, um die Ausnahme zu entfernen

%Vor%     
alhnoof mohamd 10.12.2017 19:37
quelle

Tags und Links