I’m basically replying to Yossi’s post here. I tried to leave it as a comment in his post but for some reasons my comments are not getting posted in his blog.
Myself and Yossi used to work together in a big public sector Healthcare BizTalk project for nearly 1.5 years.
First off all I need to thank Yossi for his complement about my white paper “Understanding Design-Time Properties for Custom Pipeline Components in BizTalk Server“. Yossi mentioned in his post about the potential performance problem in using XmlSerializer inside pipeline component. Until now I thought his point is valid, but after reading the very first chapter from Professional BizTalk Server 2006 by (DJ, KS and EF) , where Darren explains about Serialization and performance hit, its clear there is NO PERFORMANCE HIT by using XmlSerialization in a BizTalk solution.
I thought the explanation will be helpful for readers to make the decision. The following extract is from the book (Page 11):
“When you first use the XmlSerializer in your application against a given type, a dynamic class is created and compiled on the fly to represent the serialized class. This has an obvious performance over head, but it will be cached for susbsequent requests
This cache is maintained per AppDomain, which is fine for applications like BizTalk, as there is by default only one AppDomain per BizTalk host.
So, eventually by using XmlSerialization inside the pipeline component, you’ll hit the penalty only once during the lifetime of the component. That’s until some one restarts the host.