tisdag 28 maj 2013

Lagra custom property sträng som binär protobuf-net sträng istället för xml

Hej!

Som en reaktion på mitt föregående inlägg bestämde jag mig för att kika på alternativ för serialisering/deserialisering. Kom över följande "benchmark" (vetenskapligheten i inlägget orkar jag inte analysera).

http://stackoverflow.com/questions/3790728/performance-tests-of-serializations-used-by-wcf-bindings/3793091#3793091

Sagt och gjort, protobuf-net it is.

1. Börjar med att tanka ner dll från https://code.google.com/p/protobuf-net/

2. Följer instruktionerna och dekorerar min databärande klass med attributen [ProtoContract] & [ProtoMember(x)] (https://code.google.com/p/protobuf-net/wiki/GettingStarted)















3. Implementerar ToString() override och den statiska Parse-metoden som min custom property använder när objektet skrivs och läses:














4. Som synes använder jag mig av en statisk helper-klass för ändamålet:



5. Och nu ska det alltså bara vara att tuta å köra! Mindre dret i databasen ist krieg! Medger dock att läsbarheten försämras rejält vid t.ex. hantering av olika objekt-versioner. Men det är ett senare problem! :)






fredag 24 maj 2013

EPiServer Custom Property som lagras som longstring och stringDelayedLoadThreshold

Hej igen. Nej bloggen är inte död, den har bara idlat lite.

Stötte på en irriterande detalj i EPiServer 7 när jag lekte med en custom property (använder legacyeditorn tills jag orkat sätta mig in i Dojo-tänket) vars Data serialiserades till en sträng och lagrades i EPiServers db som en LongString.

Egenskapen fungerade utmärkt i redigeraläget och efter publicering av en sida. Ända tills en IISRESET av sidan gjordes. Då returnerade propertyn alltid null. Troligtvis nåt i cache-mekanismen som strular alltså.

Det visade sig härröra från ett filter för longstrings-egenskaper vars värden är för långa. Lite osäker på vad defaultvärdet är, men när jag satte attributet stringDelayedLoadThreshold="0" för noden siteSettings i EPiServer.config så försvann problemet. Drygt fel...

Länk till var jag hittade lösningen:
http://world.episerver.com/Modules/Forum/Pages/thread.aspx?id=65572&pageIndex=1#reply

Dokumentation för egenskapen:
http://world.episerver.com/Documentation/Class-library/?documentId=cms/7/89421fe0-ae9b-42fe-06d0-224bd9e4a528