2009-07-28 4 views
1

Ich würde gerne wissen, was schneller ist. Lass mich dir das Szenario geben. Ich bin auf einem LAN, haben einen Bericht erstellen Daten aus einer SQL Server-Datenbank (wenn wir brauchen die Version wollen wir 2005 sagen) und haben diese Möglichkeiten, den Bericht zu erledigen:Welches ist am schnellsten zu übertragen: XML oder DataTables?

  1. Haben Sie einen Web-Service auf dem Server, wo die Daten vom Server genommen und in XML serialisiert werden. Der Client verwendet diese XML als Quelle für einen Bericht, der auf dem Clientcomputer erstellt wurde. Der Client wäre eine Windows-Formular-App.

  2. Verbinden Sie von der Clientseite aus mit ADO.Net eine Verbindung zur Datenbank, rufen Sie eine DataTable ab und verwenden Sie sie als Quelle für den im Client erstellten Bericht.

  3. Das gleiche wie (2), aber mit einem DataReader.

Gibt es auch einen besseren Weg, dies zu tun?

+0

Ist dies ein ASMX-Webdienst oder WCF? –

Antwort

3

Die Serialisierung in XML wird sowohl hinsichtlich der dafür erforderlichen Zeit, des Overheads der XML-Struktur als auch der Deserialisierungszeit kosten. Es wird jedoch ein Format bereitstellen, das von mehr Technologien konsumierbar ist. Wenn Sie .NET Ende-zu-Ende verwenden und sich dies wahrscheinlich nicht ändert, würde ich nicht XML verwenden, sondern die vom Framework bereitgestellten Datenzugriffsmethoden verwenden. Persönlich würde ich wahrscheinlich LINQ über DataTables oder einen DataReader verwenden, aber das mehr für Benutzerfreundlichkeit und Lesbarkeit auf der Clientseite als jeder Leistungsvorteil.

2

Die beste Vorgehensweise besteht darin, keine .NET-spezifischen Typen in der Schnittstelle eines Webdienstes zu verwenden. Selbst wenn Sie heute sicher sind, dass Ihr Dienst niemals von etwas anderem als einem .NET-Programm aufgerufen wird, ändern sich die Dinge, und morgen wird Ihnen vielleicht gesagt, dass der Dienst von einem Perl-Programm aufgerufen wird.

Perl-Programme verstehen DataSet nicht. Genauso wenig wie Java-Programme oder irgendetwas anderes als .NET.

Die beste Vorgehensweise besteht darin, ein Datenübertragungsobjekt zu erstellen, das nur die Daten enthält, die übertragen werden sollen, in einfachen Eigenschaften mit primitiven Typen oder Sammlungen oder Arrays primitiver Typen oder Sammlungen oder Arrays von Datenübertragungsobjekten usw. Diese wird von jedem Kunden verständlich sein.

+0

ich weiß nicht darüber. Design für das, was Sie wissen. Vergeuden Sie keine Zeit mit der Kodierung von XML, wenn es nicht wahrscheinlich ist. Ich bin ein Fan von Interoperabilität, aber ich bin ein größerer Fan davon, keine Zeit mit etwas zu verschwenden, das nicht sofort benötigt wird. Wenn es keinen geschäftlichen Mehrwert gibt, tun Sie es nicht. – geowa4

+0

Ich stimme zu, zu entwerfen, was Sie wissen. Du weißt, dass sich die Dinge täglich ändern. Sie wussten, dass Web-Services für wenig mehr interoperabel sein können als die Kosten, nicht zu interoperabel zu sein. Gehen Sie nicht umsonst vor, aber es ist einfach zu entwerfen, so dass Web Services die Interoperabilität für Sie übernehmen können. –