• 1
  • 2
2007-01-15, 15:20
  #13
Medlem
Citat:
Ursprungligen postat av Rbkniklas
om du använder BinaryFormater classen så blir det ju inte en xml serialisering utan än binär serialisering. för xml serialisering får du använda System.Xml.Serialization.XmlSerializer classen. men om du bara ska läsa filen i ditt eget program så ska binärserialisering vara bättre

Som jag skrev i första inlägget vill jag använda serialization som ett _alternativ_ till xml och frågan är då vad det finns för för- och nackdelar med att spara binärt VS som xml

Jag har fått för mig att det känns lättare med binary formatter.. Slipper parsa massa xml, det som avskräcker mig...
Citera
2007-01-15, 15:27
  #14
Bannlyst
Fördelen med xml serialisering är att det kompitablt med betydligt fler system än binär men om du bara ska köra det inom ditt eget program så borde dett inte vara något problem.
Var länge sen jag körde med xml- serialisering men har för mig att man var tvungen att serialisera allt på en gång annars så gick allt vad parsing heter åt helvete
Citera
2007-01-15, 15:54
  #15
Medlem
xeroc81s avatar
Inställningar i programmet som användaren kan ändra och som ska sparas mellan 2 sessioner brukar man serialisera som klartext (xml/ini/registret) medans data som programmet använder internt brukar serialisera som binärt*.

*Beror också på vad det är som programmet pysslar med, ett ordbehandlingsprogram skulle kunna spara all text som klartext eller (binärt beroende på komplexitet på formatet) medans ett program såsom photoshop som hanterar bilder passar bättre att sparas som binärt.
Citera
2007-01-18, 19:58
  #16
Medlem
Citat:
Ursprungligen postat av xeroc81
Inställningar i programmet som användaren kan ändra och som ska sparas mellan 2 sessioner brukar man serialisera som klartext (xml/ini/registret) medans data som programmet använder internt brukar serialisera som binärt*.

Ska man spara inställningar i .NET ska man nog ta sig en titt på de nya funktionerna för just detta i 2.0. Det är väldigt smidigt att använda sig av de nya klasserna, och än mycket smidigare om man använder Visual Studio då man får upptypade inställningsklasser. Kontentan av det hela blir att du aldrig behöver parsa någonting, det sköter ramverket åt dig, och skulle användaren ha kukat ur xml-filen som .NET skapat så kan ett defaultvärde anges istället.

Binära format har egentligen bara de fördelarna att de (oftast) är storleksmässigt mindre. Att binära filer skulle innebära problem på andra system är lite av en myt faktiskt. Det är inte några större problem att läsa en binär fil på något system så länge man är på det klara med vilken byteordning som gäller och filens struktur. Det är däremot lättare att klura ut den på egen hand om filen är i klartext, naturligtvis.

Binära filer har också ofta den fördelen att de är relativt lätt att skriva snabba parsers, men med den datorkraft som gemene man har idag så spelar det argumentet väldigt liten roll.

Den största fördelen som jag ser det är att man lär sig väldigt mycket om hur saker fungerar av att jobba binärt istället för i klartext. Resten är marginellt.
Citera
2007-01-18, 21:58
  #17
Medlem
Citat:
Ursprungligen postat av fopixel
Ska man spara inställningar i .NET ska man nog ta sig en titt på de nya funktionerna för just detta i 2.0. Det är väldigt smidigt att använda sig av de nya klasserna, och än mycket smidigare om man använder Visual Studio då man får upptypade inställningsklasser. Kontentan av det hela blir att du aldrig behöver parsa någonting, det sköter ramverket åt dig, och skulle användaren ha kukat ur xml-filen som .NET skapat så kan ett defaultvärde anges istället.

Binära format har egentligen bara de fördelarna att de (oftast) är storleksmässigt mindre. Att binära filer skulle innebära problem på andra system är lite av en myt faktiskt. Det är inte några större problem att läsa en binär fil på något system så länge man är på det klara med vilken byteordning som gäller och filens struktur. Det är däremot lättare att klura ut den på egen hand om filen är i klartext, naturligtvis.

Binära filer har också ofta den fördelen att de är relativt lätt att skriva snabba parsers, men med den datorkraft som gemene man har idag så spelar det argumentet väldigt liten roll.

Den största fördelen som jag ser det är att man lär sig väldigt mycket om hur saker fungerar av att jobba binärt istället för i klartext. Resten är marginellt.

Tack för för tipset med xml-funktionerna. Ska klart kollain det.

En annan bra grej med spara binärt är väl att man sparar objekt och då med objektets metoder osv. Man kan alltså skapa ett visst tillstånd på hårddisken...
Citera
2007-01-19, 01:32
  #18
Medlem
Citat:
Ursprungligen postat av zman
Tack för för tipset med xml-funktionerna. Ska klart kollain det.

En annan bra grej med spara binärt är väl att man sparar objekt och då med objektets metoder osv. Man kan alltså skapa ett visst tillstånd på hårddisken...

Det kan du lika gärna göra med en XML-struktur. Funktioner serialiseras nog inte, men jag skulle tippa på att metadata för dem gör det. Så ett serialiserat objekt måste med andra ord castas till ett användbart objekt vid deserialisering, precis som vid XML-deserialisering.

.NET gör det enkelt att serialisera både i XML och binärt format. Markera dina klasser med Serializable-attributet för binär serialisering eller använd motsvarande attribut för XML-serialisering. Google känner till många tutorials för båda teknikerna.

Du kan naturligtvis också skriva din egen serializer om du vill ha total kontroll över ditt filformat. Om all metadata är totalt onödig för dig så kan du naturligtvis välja att skippa den, men då är du helt ansvarig för både serialisering och deserialisering. Varje gång du ändrar din klass måste du uppdatera respektive funktion. Med tanke på dagens möjligheter till datalagring så är metadatan ett litet pris att betala med tanke på hur mycket man vinner på att låta .NET sköta allt jobb åt en.

Men det kan vara en kul och nyttig erfarenhet att ha gjort det själv ett par gånger också, inte att förglömma.
Citera
2007-01-19, 01:37
  #19
Medlem
Citat:
Ursprungligen postat av zman
Man kan alltså skapa ett visst tillstånd på hårddisken...

Jag insåg just att du kanske var på väg att göra en sak som jag gjorde för länge sedan, eller åtminstone provade att göra. Det går INTE att serialisera formulär för att på så vis spara dess position, storlek, utseende, knappar osv. Anledningen är att Windows Forms är väldigt beroende av så kallade window handles vilka inte går att spara, de är (ofta) annorlunda för varje gång du kör din applikation.

Vad jag gjorde istället för att spara tillstånd var att ha ett formulär som när det stängdes gick igenom sina egna och alla sina kontrollers (och deras kontroller osv) properties och sparade ner dessa i en XML-struktur. Sen när formuläret laddades så lästes denna struktur in och alla properties sattes som sig bör. Det fungerade faktiskt väldigt väl, men vissa properties var lite shaky eftersom att de bör sättas i en viss ordning. Sånt är rätt kasst faktiskt.

Oftast behöver man dock inte spara exakt hur allt såg ut, det räcker med att bara spara ett par saker. Det gör allt väldigt mycket lättare att hantera.
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in