webForumDet fria alternativet

XML/Dataset och prestanda

11 svar · 519 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#1

Är inte van att programmera ASP.NET så detta kanske är en dum fråga. ;)

Låt oss säga att jag har en xml fil som jag läser in till ett dataset när man först besöker sidan.
Hur hanterar ni datasetet sen?
Lagrar ni den i en session för att ha den tillgänglig?

HermanMedlem sedan maj 2001431 inlägg
#2

Jag har mest jobbat utan sessioner och då använt Cache objektet för lagring av DataTable. Fungerar finemang.

NickemannenMedlem sedan aug. 20003 575 inlägg
#3

Hur stor är xml filen?
Skall det utföras utsökningar i den?
Vad är det för typ av data?
Är det olika xml filer för olika kunder?

PeddaMedlem sedan juni 20006 032 inlägg
#4

XML filen är ca 2MB, men jag plockar bara ut den data jag ska använda och sparar i mitt dataset. Så det jag har i datasetet är inte så stort.
Det är bara en xml fil, men den uppdateras emellanåt med en webservice så i princip kan olika personer få olika data i sitt dataset.

xml filen innehåller bara lite text. T.ex den jag nyss har kört är på 4500 rader, 224 KB.
Utdrag ur xml filen som är sparad ifrån datasetet:

<Documents>
    <NodeID>Doc_121558</NodeID>
    <Type>Doc</Type>
    <Documentname>Environmental Checklist</Documentname>
    <Parent>Node_1550381</Parent>
    <AllParents>Node_1550381</AllParents>
    <Comment>Checklist for project related EGD issues</Comment>
    <CustomerID />
    <DocumentID>EHDS743659</DocumentID>
    <Revision>1</Revision>
    <Data-version>-.1</Data-version>
    <Status>Docstatus_4332</Status>
    <Transmittal>Tech, Preliminary</Transmittal>
    <SubmitType />
    <SubmittalReason />
    <SubmittalTime />
    <ReceiveResponse />
    <ReceivedTime />
    <CommentInSource />
  </Documents>
NickemannenMedlem sedan aug. 20003 575 inlägg
#5

Okej, jag tycker att lägga det i en session låter som en dålig ide.
Jag hade nog egentligen röstat för en databas här.

Jag har ingen erfarenhet av det du vill göra, men utifrån det jag vet just nu är att jag hade lagrat det inlästa dataset'et i HttpApplication dvs det ligger statiskt över hela applikationen, du säger att ett par webservices ändrar i den ibland, du kan då lägga dig och lyssna på ett event när filen blir uppdaterad och då läser du om xmlfilen och uppdaterar ditt dataset.
För dataset:et i applikationen blir readonly antar jag?

Sedan om du funderar på framtiden, lägger varje serviceanrop till saker i xml filen så lär den växa ganska fort då är frågan om du inte skall använda dig av en databas istället.

PeddaMedlem sedan juni 20006 032 inlägg
#6

Ingen databas tyvärr.

Ska söka på HttpApplication och se vad det är.

PeddaMedlem sedan juni 20006 032 inlägg
#7

Har läst en hel del nu och det jag kommit fram till är att det bästa att välja på verkar vara HttpApplicationState eller HttpCache om jag förstått det bäst.

Men en följdfråga är om jag väljer att spara datasetet i någon av dom, är dom globala då?
Viktigt för mig då varje användare kommer ha ett eget dataset.

NickemannenMedlem sedan aug. 20003 575 inlägg
#8

Jaha skall varje användare ha sitt eget.. då är nog inte applicationstate eller httpcache. Som gäller. Men det känns ju riktigt surt att varje användare skulle behöva lägga in ca 2mb filer dataset i minnet :|.

Det går absolut inte med en databas menar du? Måste det vara xmlfiler? :S

Ett annat alternativ är ju att läsa in xml filen varje gång den behövs.

PeddaMedlem sedan juni 20006 032 inlägg
#9

Förtydligande:
XML filen som är 2MB läses in när man kommer till sidan. Men den läggs inte i en session som den är utan strippas ner till ca 10-20% av originalstorleken.

Sidan körs på en NAS ute på ett bygge och har inte SQL installerat.

Endast 4-5 st användare av applikationen.

HermanMedlem sedan maj 2001431 inlägg
#10

Är det så små mängder ska du inte behöva tänka på prestanda nå vidare.

Du kan enkelt använda cache objektet för sessioner också. bara lägga till sessionsID:et till nyckeln. Det fina med cache objektet är att du kan styra hur länge cache tiden ska vara per objekt lagrat.

Sen kan du kika Cache Dependancy om du vill snyggt kunna tvinga en uppdatering av innehållet.

Exempel för cachening / lagring av dataset i 900 sekunder.

string uniktIdFörEnAnvändare = "dokData_" + Session.SessionID;

Cache.Insert(uniktIdFörEnAnvändare , datasetDelen, null,DateTime.Now.AddSeconds(900), TimeSpan.Zero);
_______

PeddaMedlem sedan juni 20006 032 inlägg
#11

Ska helt klart läsa mer om Cache.
Jag tackar för tipset. (y)

PeddaMedlem sedan juni 20006 032 inlägg
#12

Ska helt klart läsa mer om Cache.
Jag tackar för tipset. (y)

145 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)