2009-01-15

[NonSerialized]

När ett workflow smäller i samband med persistering är det inte alltid busenkelt att veta vad som är problemet. Jag har med tiden upptäckt att felsökning av denna typ av problem kan vara rejält tidsödande och frustrerande och ibland så utmanande att utvecklarna tvekar till workflow foundation som teknik.

Problemet är ofta själva serialiseringen, detta är något du själv kan styra men det är knappast den vanligaste vägen att gå utan workflowet kör antagligen i en vanlig host eller i en host som exempelvis sharepoint bidrar med (som inte heller direkt förenklar felsökningen...)

Exempel på egen serialisering i en aktivitet

[DesignerSerializer(typeof(ExampleActivityMarkupSerializer), typeof(WorkflowMarkupSerializer))]
public class ExampleActivity : Activity { }

Vad är det då som kan vara problemet? Det handlar nästan uteslutande om fält som serialiseras i en aktivitet eller direkt i workflowet. Det kan vara bra att känna till att arrayer och generics är stora no-no's i dessa sammanhang. Detta gäller även längre ned i din objektgraf!

Det är även pga denna teknik vi inte kan använda nästlade aktiviteter, något som vi kan lösa med en egen serialiserare!

Slutsats

Tänk på vilka datatyper du exponerar för serialiseraren, använd inte arrayer och var sparsam med generics (dessa kan funka...ibland)

Läs mer här

Inga kommentarer: