Ich versuche, einige langsam laufenden Code, der XML mit verschachtelten Schleifen mehrerer Databases schreibt. Ich habe gelesen, dass die Verwendung von linq zum Schreiben der XML schneller wäre. Ich bin in Linq nicht sehr versiert, also hoffte ich, hier Hilfe zu bekommen.Die beste Möglichkeit, DataTables von einem Web Service in XML zu schreiben?
Einige Dinge, die ich erwähnen muss ist, dass die aktuelle Architektur einen Webservice verwendet, der Daten an uns in DataTables zurückgibt. Wir gehen dann durch die Datenblätter (iterativ), und es gibt mehrere, die mehrere verschachtelte Schleifen ergeben.
Beispiel:
dt1 = Webservice.getStuff();
for each (datarow r1 in dt1.Rows) {
dt2 = Webservice.getMoreStuff(r1[col1], r1[col2]);
// write out some xml
for each (datarow r2 in dt2.Rows) {
dt3 = Webservice.getEvenMoreStuff(r2[col1], r2[col2]);
// write out more xml
for each (datarow r3 in dt3.Rows) {
// write out more xml
}
}
}
Wie Sie aus offensichtlichen Gründen sehen, das ist schrecklich langsam. Gibt es eine Möglichkeit, dies mit Linq zu beschleunigen? Was würdest du vorschlagen, um dies effizienter zu gestalten? Es tut mir leid, wenn die Details vage sind ...
Ich schätze jede Hilfe, die jemand anbieten könnte.
Der langsame Teil scheint hier die Aufrufe von WebService zu sein, nicht der XML-Schreibteil. WebService hat eine langsame, hohe Latenz zu ihm =) – Jens
nur ein Gedanke: gegebenen aktuellen Code-Snippet gibt es keine Details, wie XML erstellt wird, und es kann eine große Menge an Daten über das Netzwerk gesendet werden, zu viele Server-Aufrufe und Client -Seite Population von Datentabellen - alle könnten zu Leistungseinbußen führen; Es gibt also keinen ersichtlichen Grund anzunehmen, dass XML-Schreiben ein Engpass ist. –
Können Sie eine andere getStuff-Methode neu schreiben oder hinzufügen, die Ihnen das volle Ergebnis liefert, anstatt Webservice-Aufrufe zu verschachteln? – jmservera