Sto cercando di ridefinire un codice di esecuzione lenta che scrive XML utilizzando cicli nidificati di più datatables. Ho letto che usare linq per scrivere l'xml sarebbe più veloce. Non sono esperto di linq, quindi speravo di ottenere un aiuto qui.Il modo migliore per scrivere DataTable da un servizio Web in XML?
Alcune cose che ho bisogno di menzionare è che l'attuale architettura utilizza un webservice che restituisce i dati a noi in DataTable. Quindi passiamo attraverso i datatables (iterativamente), e ce ne sono diversi che risultano diversi loop annidati.
esempio:
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
}
}
}
Come si può vedere, per ovvie ragioni, questo è terribilmente lento. C'è un modo per accelerare usando linq? Cosa vorresti suggerire ragazzi come un approccio più efficiente per refactoring questo? Mi dispiace se i dettagli sono vaghi ...
Apprezzo tutto l'aiuto chiunque potrebbe offrire.
La parte lenta qui sembra essere le chiamate a WebService, non la parte di scrittura XML. WebService ha un ring lento e ad alta latenza =) – Jens
solo un pensiero: dato lo snippet di codice corrente non ci sono dettagli su come viene creato XML, inoltre ci può essere una grande quantità di dati inviati tramite rete, troppe chiamate server e client -una popolazione di tabelle di dati: tutto potrebbe causare un impatto sulle prestazioni; quindi non vi è alcun motivo apparente per supporre che la scrittura XML sia un collo di bottiglia. –
Riesci a riscrivere o aggiungere un altro metodo getStuff che ti dà il risultato completo invece di nidificare le chiamate al servizio web? – jmservera