webForumDet fria alternativet

Läsa xml fil via http

.NET

11 svar · 1 520 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#1

Vilket är bästa sättet att läsa en xml fil som är på en annan webbserver?
Filen är 2MB så jag funderar på om det är bättre att hämta över din till servern som kör min applikation och sen läsa den därifrån.

Har ni länkar till lite exempel så blir jag glad då jag är helt ny på ASP.NET

Medlem sedan aug. 20003 575 inlägg
#2

För hämtning så skulle jag använda mig av WebClient klassen.
För läsning av Xml filen finns det lite olika lösningar.

Du kan skapa ett schema för den som automatiskt gör om xml filen till en objektstruktur, eller så kan du använda dig av XmlDocument eller Linq för att söka i xmlfilen.

Medlem sedan juni 20006 031 inlägg
#3

För läsning kommer jag använda XmlDocument. Linq kommer inte att användas då det är Framework 2.0.

Vill egentligen inte hämta filen då den uppdateras imellanåt med nytt innehåll.
Men med tanke på storleken så kanske det är bäst att hämta den, läsa den och sen radera den?

Medlem sedan aug. 20003 575 inlägg
#4

Pedda skrev:

För läsning kommer jag använda XmlDocument. Linq kommer inte att användas då det är Framework 2.0.

Vill egentligen inte hämta filen då den uppdateras imellanåt med nytt innehåll.
Men med tanke på storleken så kanske det är bäst att hämta den, läsa den och sen radera den?

Tja på ett eller annat sätt kommer du ju att hämta den, är det data som du skall presentera så kanske du kan hitta på något kul med javascript? Så att du slipper tanka över den till servern utan att du med javascript tankar över den till klienten. Men eftersom den är på 2 mb så antar jag att det inte är något alternativ :).

Så att tanka den till din server lite då och då är väl det bästa :).

Medlem sedan juni 20006 031 inlägg
#5

Har funderat och läst lite nu.
WebClient klassen ger ingen möjlighet att styra var den sparas eller med vilket filnamn och det kan ju ställa till det om fler än en samtidigt hämtar filen. (Iaf hittar jag inget om att det går).
Då återstår det att läsa filen från servern.
Funkar det att köra XmlDocument.Load(url); direkt, eller behöver man köra en XmlReader istället för URL?

Får nog testa att ladda upp en xml fil till en server imorgon och testa med.

Medlem sedan aug. 20003 575 inlägg
#6

Från WebClient får du en Stream, en Stream kan du lagra i minnet medans du processar den eller spara ner den till en fil.

Jag vet inte om det går att ladda in en url direkt i XmlDocument.

Medlem sedan jan. 20022 440 inlägg
#7

Pedda skrev:

Har funderat och läst lite nu.
WebClient klassen ger ingen möjlighet att styra var den sparas eller med vilket filnamn och det kan ju ställa till det om fler än en samtidigt hämtar filen. (Iaf hittar jag inget om att det går).
Då återstår det att läsa filen från servern.
Funkar det att köra XmlDocument.Load(url); direkt, eller behöver man köra en XmlReader istället för URL?

Får nog testa att ladda upp en xml fil till en server imorgon och testa med.

Rekommenderar inte att läsa in från http:// det går väldigt mycket långsammare än att ha en kopia lokalt.

Sedan beror det lite på hur många användare osv. Kom ihåg att om du läser in filen för varje användare * 2MB så försvinner det rätt mycket minne om du har 1000 samtidiga användare :)

Medlem sedan jan. 20022 440 inlägg
#8

Hmm du läser in filen en gång från http, sparar den lokalt och använder i första hand den lokala kopian.

Medlem sedan juni 20006 031 inlägg
#9

Det kommer nog aldrig vara många användare samtidigt. Skulle bli förvånad om det skulle vara mer än fem samtidigt. Troligtvis är det bara en eller max två st.

Medlem sedan feb. 2005280 inlägg
#10

hur ofta uppdateras xml datat?

har du access till servern? jag brukar bygga windows service som sköter att skyffla hem filen med en Timer, säg varje kvart eller så. Vill absolut inte rekommendera att man på något synkront sätt sköter hämtandet, direkt i o med requests på nån webbsida eller så, då det blir seg, trögt och om källan ligger nere så står det o tuggar ett tag osv o man vill ju inte ha tröga websidor.

Medlem sedan juni 20008 205 inlägg
#11

Externa services, filer på disk etc är onödigt krångliga lösningar. Använd valfritt sätt att hämta XML-filen och spara den i en cache: http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx

Medlem sedan juni 20006 031 inlägg
#12

freguz skrev:

hur ofta uppdateras xml datat?

Har ställt den frågan till företaget som har servern, men ännu inte fått svar.

freguz skrev:

har du access till servern? jag brukar bygga windows service som sköter att skyffla hem filen med en Timer, säg varje kvart eller så. Vill absolut inte rekommendera att man på något synkront sätt sköter hämtandet, direkt i o med requests på nån webbsida eller så, då det blir seg, trögt och om källan ligger nere så står det o tuggar ett tag osv o man vill ju inte ha tröga websidor.

Personligen har jag inte access, men eftersom det är kundens server så kan det eventuellt gå att installera en service.

280 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
147 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)