<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0"><channel><title>itaysk</title><link>http://blogs.microsoft.co.il/blogs/itaysk/</link><description>Itay Shakury&amp;#39;s blog</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Itaysk" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="itaysk" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>BDC -&gt; BCS?</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/05/15/bdc-gt-bcs.aspx</link><pubDate>Tue, 15 May 2012 12:40:17 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1092403</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=1092403</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/05/15/bdc-gt-bcs.aspx#comments</comments><description>&lt;p&gt;MOSS 2007 had a feature called Business Data Catalog. When SharePoint 2010 came out, this feature was introduced as Business Connectivity Services.&lt;/p&gt;  &lt;p&gt;The common belief is that BCS is the new version of BDC, and that in the new version the name was changed from BDC to BCS. According to this, there is no reason to use the term BDC in the context of SharePoint 2010.    &lt;br /&gt;This is not exactly correct.     &lt;br /&gt;BDC was and still the infrastructure that allows SharePoint to connect to other systems. It has the concept of metadata and descriptors, and is still present in 2010 under the name “Business Data Connectivity”. BCS is based on BDC and is what makes all the advanced connectivity scenarios possible (such as integration with Office, ECT,…).&lt;/p&gt;  &lt;p&gt;In the bottom-line, the terms BDC and BCS is used interchangeably, so you should too. But you don’t have to be angry if you see BDC in the same sentence with SharePoint 2010 :)&lt;/p&gt;  &lt;p&gt;Here are some supporting quotes from MSDN:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Business Data Connectivity (BDC) service is the new version of the Business Data &lt;/em&gt;&lt;em&gt;Catalog that was provided in Microsoft Office SharePoint Server 2007”      &lt;br /&gt;&lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee556407.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee556407.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Business Data Connectivity (BDC) service succeeds the Business Data Catalog that was provided in Microsoft Office SharePoint Server 2007”&lt;/em&gt;     &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee558876.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee558876.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“BDC is the foundation of Business Connectivity Services”      &lt;br /&gt;&lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee559650.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee559650.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Business Data Connectivity (BDC) service in Microsoft Business Connectivity Services (BCS) is the underlying framework in the Microsoft SharePoint Foundation 2010 platform on which Business Connectivity Services is built”&lt;/em&gt;     &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee557963.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee557963.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1092403" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cd-sjbU0pwhQ1RRunyZbTQJ50L4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cd-sjbU0pwhQ1RRunyZbTQJ50L4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cd-sjbU0pwhQ1RRunyZbTQJ50L4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cd-sjbU0pwhQ1RRunyZbTQJ50L4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category></item><item><title>Xml Serialize Interface Typed Members</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/04/30/xml-serialize-interface-typed-members.aspx</link><pubDate>Mon, 30 Apr 2012 07:48:30 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1078708</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=1078708</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/04/30/xml-serialize-interface-typed-members.aspx#comments</comments><description>&lt;p&gt;If you try to serialize a class that has a public member of an interface type to xml file using the regular .net &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx" target="_blank"&gt;XmlSerializer&lt;/a&gt;, you will get an error: “Cannot serialize member {m} of type {t} because it is an interface.” ({m} and {t} are placeholders).     &lt;br /&gt;In this post I suggest a workaround to this issue.&lt;/p&gt;  &lt;p&gt;Consider the following scenario:&lt;/p&gt;  &lt;p&gt;You have an object model like this:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Car&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Model { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; Year { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IEngine Engine { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; IEngine&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Work();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; ElectricEngine : IEngine&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; batteryPrecentageLeft;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; BatteryPrecentageLeft&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         get { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.batteryPrecentageLeft; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;         set { &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.batteryPrecentageLeft = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; IEngine.Work() { }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; InternalCombustionEngine : IEngine&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; gasLitersLeft;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; GasLitersLeft&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;         get { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.gasLitersLeft; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;         set { &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.gasLitersLeft = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; IEngine.Work() { }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And you use it like so:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; Car myCar = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Car();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; myCar.Model = &lt;span style="color:#006080;"&gt;&amp;quot;Ford Focus&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; myCar.Year = 2011;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; myCar.Engine = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ElectricEngine() { BatteryPrecentageLeft = 70 };&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; myCar.Engine.Work();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If you would try to serialize &lt;em&gt;myCar&lt;/em&gt; using the regular XmlSerializer, you will get the error above.&lt;/p&gt;

&lt;p&gt;There are many reasons why you shouldn’t want to serialize an interface typed member. I will not dive into this debate right now. I assume that you have considered this before, and are just looking for a workaround.&lt;/p&gt;

&lt;p&gt;So first lets understand what we are trying to achieve. 
  &lt;br /&gt;In the example above, I expect the serialized output of &lt;em&gt;myCar&lt;/em&gt; to be something like this:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Car&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Model&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Ford Focus&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Model&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Year&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;2011&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Year&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Engine&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ElectricEngine&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;FullAssemblyQualifiedTypeName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Common.ElectricEngine, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;BatteryPrecentageLeft&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;70&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;BatteryPrecentageLeft&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ElectricEngine&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Engine&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Car&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I have &lt;a href="http://stackoverflow.com/questions/10252207/how-to-serialize-interface-typed-member" target="_blank"&gt;asked a question&lt;/a&gt; on StackOverflow, and &lt;a href="http://stackoverflow.com/users/214222/jens-granlund" target="_blank"&gt;Jens Granlund&lt;/a&gt; has pointed me in the right direction. 

  &lt;br /&gt;The workaround that I have implemented consists of the following steps:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Mark all interface typed members with the &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlignoreattribute.aspx" target="_blank"&gt;&lt;em&gt;XmlIgnoreAttribute&lt;/em&gt;&lt;/a&gt;, that tells the XmlSerializer to not serialize those members. &lt;/li&gt;

  &lt;li&gt;Now serialize the class to produce an output similar to the one above, but without the problematic members. &lt;/li&gt;

  &lt;li&gt;For-each member marked with the attribute, get it’s current value, and that value’s type. That can only be done in runtime. &lt;/li&gt;

  &lt;li&gt;Use that type to create a standard XmlSerializer, and use that serializer to serialize that value. &lt;/li&gt;

  &lt;li&gt;Inject those serialized values to the parent class’s serialized xml. &lt;/li&gt;

  &lt;li&gt;In order to allow regular use of the &lt;em&gt;XmlIgnoreAttribute&lt;/em&gt;, implement a new attribute that act like it. &lt;/li&gt;

  &lt;li&gt;During deserialization perform the same process in reverse. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I have followed that basic recipe to create my own &lt;em&gt;“RuntimeXmlSerializer”&lt;/em&gt;. You use it the same way you would use the standard XmlSerializer.&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; RuntimeXmlSerializerAttribute : XmlIgnoreAttribute { }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; RuntimeXmlSerializer&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Type m_type;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; XmlSerializer m_regularXmlSerializer;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; k_FullClassNameAttributeName = &lt;span style="color:#006080;"&gt;&amp;quot;FullAssemblyQualifiedTypeName&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; RuntimeXmlSerializer(Type i_subjectType)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_type = i_subjectType;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_regularXmlSerializer = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XmlSerializer(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_type);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Serialize(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; i_objectToSerialize, Stream i_streamToSerializeTo)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         StringWriter sw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringWriter();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_regularXmlSerializer.Serialize(sw, i_objectToSerialize);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;         XDocument objectXml = XDocument.Parse(sw.ToString());&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;         sw.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;         SerializeExtra(i_objectToSerialize,objectXml);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; res = objectXml.ToString();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] bytesToWrite = Encoding.UTF8.GetBytes(res);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;         i_streamToSerializeTo.Write(bytesToWrite, 0, bytesToWrite.Length);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; Deserialize(Stream i_streamToSerializeFrom)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; xmlContents = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StreamReader(i_streamToSerializeFrom).ReadToEnd();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;         StringReader sr;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;         sr = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringReader(xmlContents);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; res = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_regularXmlSerializer.Deserialize(sr);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;         sr.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt;         sr = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringReader(xmlContents);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum36"&gt;  36:&lt;/span&gt;         XDocument doc = XDocument.Load(sr);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum37"&gt;  37:&lt;/span&gt;         sr.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum38"&gt;  38:&lt;/span&gt;         deserializeExtra(res, doc);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum39"&gt;  39:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; res;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum40"&gt;  40:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum41"&gt;  41:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum42"&gt;  42:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; deserializeExtra(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; i_desirializedObject, XDocument i_xmlToDeserializeFrom)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum43"&gt;  43:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum44"&gt;  44:&lt;/span&gt;         IEnumerable propertiesToDeserialize = i_desirializedObject.GetType()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum45"&gt;  45:&lt;/span&gt;             .GetProperties().Where(p =&amp;gt; p.GetCustomAttributes(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum46"&gt;  46:&lt;/span&gt;                 .FirstOrDefault(a =&amp;gt; a.GetType() ==&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum47"&gt;  47:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(RuntimeXmlSerializerAttribute)) != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum48"&gt;  48:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (PropertyInfo prop &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; propertiesToDeserialize)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum49"&gt;  49:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum50"&gt;  50:&lt;/span&gt;             XElement propertyXml = i_xmlToDeserializeFrom.Descendants().FirstOrDefault(e =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum51"&gt;  51:&lt;/span&gt;                 e.Name == prop.Name);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum52"&gt;  52:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (propertyXml == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;) &lt;span style="color:#0000ff;"&gt;continue&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum53"&gt;  53:&lt;/span&gt;             XElement propertyValueXml = propertyXml.Descendants().FirstOrDefault();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum54"&gt;  54:&lt;/span&gt;             Type type = Type.GetType(propertyValueXml.Attribute(k_FullClassNameAttributeName).Value.ToString());&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum55"&gt;  55:&lt;/span&gt;             XmlSerializer srl = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XmlSerializer(type);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum56"&gt;  56:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; deserializedObject = srl.Deserialize(propertyValueXml.CreateReader());&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum57"&gt;  57:&lt;/span&gt;             prop.SetValue(i_desirializedObject, deserializedObject, &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum58"&gt;  58:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum59"&gt;  59:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum60"&gt;  60:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum61"&gt;  61:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; SerializeExtra(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; objectToSerialize, XDocument xmlToSerializeTo)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum62"&gt;  62:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum63"&gt;  63:&lt;/span&gt;         IEnumerable propertiesToSerialize =&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum64"&gt;  64:&lt;/span&gt;             objectToSerialize.GetType().GetProperties().Where(p =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum65"&gt;  65:&lt;/span&gt;                 p.GetCustomAttributes(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;).FirstOrDefault(a =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum66"&gt;  66:&lt;/span&gt;                     a.GetType() == &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(RuntimeXmlSerializerAttribute)) != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum67"&gt;  67:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (PropertyInfo prop &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; propertiesToSerialize)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum68"&gt;  68:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum69"&gt;  69:&lt;/span&gt;             XElement serializedProperty = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XElement(prop.Name);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum70"&gt;  70:&lt;/span&gt;             serializedProperty.AddFirst(serializeObjectAtRuntime(prop.GetValue(objectToSerialize, &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum71"&gt;  71:&lt;/span&gt;             xmlToSerializeTo.Descendants().First().Add(serializedProperty); &lt;span style="color:#008000;"&gt;//TODO&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum72"&gt;  72:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum73"&gt;  73:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum74"&gt;  74:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum75"&gt;  75:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; XElement serializeObjectAtRuntime(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; i_objectToSerialize)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum76"&gt;  76:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum77"&gt;  77:&lt;/span&gt;         Type t = i_objectToSerialize.GetType();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum78"&gt;  78:&lt;/span&gt;         XmlSerializer srl = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XmlSerializer(t);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum79"&gt;  79:&lt;/span&gt;         StringWriter sw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringWriter();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum80"&gt;  80:&lt;/span&gt;         srl.Serialize(sw, i_objectToSerialize);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum81"&gt;  81:&lt;/span&gt;         XElement res = XElement.Parse(sw.ToString());&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum82"&gt;  82:&lt;/span&gt;         sw.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum83"&gt;  83:&lt;/span&gt;         XAttribute fullClassNameAttribute = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XAttribute(k_FullClassNameAttributeName, t.AssemblyQualifiedName);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum84"&gt;  84:&lt;/span&gt;         res.Add(fullClassNameAttribute);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum85"&gt;  85:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum86"&gt;  86:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; res;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum87"&gt;  87:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum88"&gt;  88:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Notice that this solution doesn’t handle situations in which the interface typed member is not a direct descendent of the type being serialized. In example if &lt;em&gt;Car&lt;/em&gt; has a member of type &lt;em&gt;List&amp;lt;IWheel&amp;gt;&lt;/em&gt; or if &lt;em&gt;Car&lt;/em&gt; has a member of type &lt;em&gt;Dashboard&lt;/em&gt; which has a member f type &lt;em&gt;IGauge, &lt;/em&gt;than serialization will fail. 

  &lt;br /&gt;This can be solved by recursively performing the “Runtime” serialization on all members, until we reach a primitive member which we can serialize using the regular serializer.&lt;/p&gt;

&lt;p&gt;You can find the Visual Studio project in this link:
  &lt;br /&gt;&lt;a title="http://blogs.microsoft.co.il/files/folders/1078707/download.aspx" href="http://blogs.microsoft.co.il/files/folders/1078707/download.aspx"&gt;http://blogs.microsoft.co.il/files/folders/1078707/download.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1078708" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YvrOxCUOq-e3uyQ91hliNHH1TdQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YvrOxCUOq-e3uyQ91hliNHH1TdQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YvrOxCUOq-e3uyQ91hliNHH1TdQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YvrOxCUOq-e3uyQ91hliNHH1TdQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/.net/default.aspx">.net</category></item><item><title>Enterprise Wiki site template vs. Wiki Library template</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/04/15/enterprise-wiki-site-template-vs-wiki-library-template.aspx</link><pubDate>Sun, 15 Apr 2012 17:00:52 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1065594</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=1065594</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/04/15/enterprise-wiki-site-template-vs-wiki-library-template.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/Wiki-Linking-1_0B4F1AC8.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px;" title="Wiki-Linking-1" border="0" alt="Wiki-Linking-1" align="right" src="http://blogs.microsoft.co.il/blogs/itaysk/Wiki-Linking-1_thumb_1E8FD167.png" width="349" height="225" /&gt;&lt;/a&gt;We all know wikis and how they work. It&amp;#39;s a quick way to create inter-connected items of unstructured data.    &lt;br /&gt;SharePoint 2010 Introduces two wiki solutions that appear similar on first sight, but are actually different. In this post I will cover technical differences between the two.&lt;/p&gt;  &lt;p&gt;First is the &amp;quot;&lt;strong&gt;Enterprise Wiki&lt;/strong&gt;&amp;quot; site template. It&amp;#39;s a template that can be used to create site collections, or sub-sites. The Enterprise Wiki site template creates a site that is dedicated to wiki content. The main component in the site is the &amp;quot;Pages&amp;quot; Library. We will explorer it later.&lt;/p&gt;  &lt;p&gt;Second is the &amp;quot;Wiki Page Library&amp;quot; list template. This Wiki Library can host wiki pages. It can be created in any kind of site.    &lt;br /&gt;As a matter of fact, this Wiki Library list template is used as the default pages library in the &amp;quot;Team Site&amp;quot; site template.&lt;/p&gt;  &lt;p&gt;According to &lt;a href="http://msdn.microsoft.com/en-us/library/ee721051.aspx" target="_blank"&gt;this article on MSDN&lt;/a&gt;, here is a short comparison between the two:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;If you want to:&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Use this site template:&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Encourage one-to-many communication&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Team Site&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Encourage many-to-many communication&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Enterprise Wiki&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Offer a structured exchange of information&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Team Site&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Enable a collaborative exchange of information&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Enterprise Wiki&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Insert images or files in a pages&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Team Site or Enterprise Wiki&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Mark pages for easier reference by tagging them with enterprise keywords&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Enterprise Wiki&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;These are nice guidelines, but what is the real difference of each?   &lt;br /&gt;I am now going to go through the detailed process that I took for investigating the case. You can skip to the end if you want the summary.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Wiki Page Library&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;The template is part of the feature called &amp;quot;WebPageLibrary&amp;quot;. In this feature, you can find the list definition at: &amp;quot;14\TEMPLATES\FEATURES\WebPageLibrary\ListTemlpates\WebPageLibrary.xml&amp;quot;.   &lt;br /&gt;If you look at it, you&amp;#39;ll notice that the list template id is 119, and BaseType=&amp;quot;1&amp;quot;, which means it is a regular document library.&lt;/p&gt;  &lt;p&gt;If we take a look at the schema.xml file at &amp;quot;14\TEMPLATES\FEATURES\WebPageLibrary\WebPageLib\schema.xml&amp;quot;, we will see that the template associates a content type with ID 0x010108 to the library. This content type is called &amp;quot;WikiDocument&amp;quot;, and is defined in: &amp;quot;14\TEMPLATES\FEATURES\ctypes\ctypeswss.xml&amp;quot;. It inherits from the base &amp;quot;Document&amp;quot; content type, does 2 things: Add the &amp;quot;WikiField&amp;quot;, and remove the &amp;quot;Title&amp;quot; field.    &lt;br /&gt;The &amp;quot;WikiField&amp;quot; field is what holds the content of the page.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Enterpries Wiki&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is an entierly different beast. First of all, it&amp;#39;s a site definition. You will find the &amp;quot;Enterprise Wiki&amp;quot; site definition at 14\TEMPLATE\1033\XML\webtempsps.xml. Let&amp;#39;s take a closer look at it.   &lt;br /&gt;The site definition onet.xml file is at: 14\TEMPLATE\SiteTemplates\ENTERWIKI\XML\onet.xml. In here, we can see that this is actually a publishing site (publishing features, such as &amp;quot;Publishing 22A9EF51-737B-4ff2-9346-694633FE4416&amp;quot; are activated).&lt;/p&gt;  &lt;p&gt;In addition to the standatd pablishing features, there&amp;#39;s an additional feature with id &amp;quot;76D688AD-C16E-4cec-9B71-7B7F0D79B9CD&amp;quot;. This is the EnterpriseWiki feature, you can find it&amp;#39;s source at: 14\TEMPALTE\FEATURES\EnterpriseWiki.&lt;/p&gt;  &lt;p&gt;If you take a look at EnterpriseWikiContentTypeBinding.xml, you will see that the feature takes the default pages library that is created with the publishing infrastructure, and binds to it 2 content types. One is the standard Redirect Page content type, and the other is the Enterprise Wiki content type.    &lt;br /&gt;The Enterprise Wiki content type is defined at: 14\TEMPALTE\FEATURES\EnterpriseWikiContentTypes, and defines the following fields: ModifiedBy, PublishingPageContent, Rating, RatingCount.&lt;/p&gt;  &lt;p&gt;If we take a look at the page layout at: 14\TEMPALTE\FEATURES\EnterpriseWikiLayouts\PageLayouts\EnterpriseWiki.aspx, we will see that the field that holds the content of the page is &amp;quot;PublishingPageContent&amp;quot;. This field is just like the &amp;quot;WikiField&amp;quot; field that we discussed earlier.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Rendering&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Handling wiki style markup is integrated into SharePoint foundation. From what I have found, it seems that the translation from wiki syntax to html is done in the field level (not UI control). The class &amp;quot;SPFieldMultilineText&amp;quot; has a property called &amp;quot;WikiLinking&amp;quot; (boolean), that toggles the feature on or off.    &lt;br /&gt;For publishing pages, the &amp;quot;HtmlField&amp;quot; inherits indirectly from SPFieldMultilineText, so it supports this too.&lt;/p&gt;  &lt;p&gt;You can use this feature with regular publishing pages as well (not nessicarely wiki page layouts).   &lt;br /&gt;If you look at the source of a publishing page you will see a line similar to this: document.getElementById(&amp;#39;ctl00_PlaceHolderMain_PageContent_RichHtmlField_displayContent&amp;#39;).WikiLinking = &amp;#39;on&amp;#39;;    &lt;br /&gt;This controls whether or not the wiki syntax translation is active.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SharePoint has different 2 solutions for wiki style editing:&lt;/p&gt;  &lt;p&gt;1. Wiki Library - a web pages library that uses the &amp;quot;Wiki Document&amp;quot; content type. This content type has a field called &amp;quot;WikiField&amp;quot; to hold the wiki content.&lt;/p&gt;  &lt;p&gt;2. Enterprise Wiki - a site definition that is based on the publishing infrustructure. As such, it is based on the built in &amp;quot;Pages&amp;quot; library. It uses a content type called &amp;quot;Enterprise Wiki&amp;quot;, in which the field &amp;quot;PublishingPageContent&amp;quot; is used to hold wiki content.&lt;/p&gt;  &lt;p&gt;This knowledge can be helpful if you are developing solutions that are usign the wiki features programmatically.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;-- My name is Itay Shakury, and I&amp;#39;m a SharePoint consultant --&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1065594" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DSs_IdbuKvhaEzDgaRtufQZ3GiA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DSs_IdbuKvhaEzDgaRtufQZ3GiA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DSs_IdbuKvhaEzDgaRtufQZ3GiA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DSs_IdbuKvhaEzDgaRtufQZ3GiA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category></item><item><title>More Findings from reading SharePoint 15 CTP SDK</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/27/more-findings-from-reading-sharepoint-15-ctp-sdk.aspx</link><pubDate>Tue, 27 Mar 2012 20:21:34 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1045673</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=1045673</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/27/more-findings-from-reading-sharepoint-15-ctp-sdk.aspx#comments</comments><description>&lt;p&gt;A while ago, Microsoft has released a CTP (Community Tech Preview) version for the SDK (Software Development Kit) of the next version of SharePoint (aka SharePoint 15).    &lt;br /&gt;I have already discussed Apps in a &lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/26/sharepoint-15-apps-as-documented-in-the-ctp-sdk.aspx" target="_blank"&gt;previous post&lt;/a&gt;, but there’s even more to learn from the new CTP SDK.&lt;/p&gt;  &lt;p&gt;Disclaimer: This post is my personal take from browsing through the CTP SDK. This is not an official announcement. All the info this post is based upon is publicly available here: &lt;a href="http://www.microsoft.com/download/en/confirmation.aspx?id=28768"&gt;http://www.microsoft.com/download/en/confirmation.aspx?id=28768&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SPPageContentManagerb - &lt;/strong&gt;“&lt;em&gt;Manages all the resource content that may be registered on a SharePoint page, including script files, inline scripts, style files, inline styles, and hidden input fields. Spweb Ensures that the content can be either appropriately placed on a fully-rendered HTML page or correctly transmitted to a browser in the case of a partial page load.&lt;/em&gt;”&lt;/p&gt;  &lt;p&gt;This class must work closely with this new feature:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;MdsCompliantAttribute&lt;/strong&gt; – “&lt;em&gt;Indicates whether the script, style, and field registrations of a class are compliant with the Minimal Download Strategy (MDS) framework.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;So this is an attribute that can be applied to controls (?), that specifies weather or not the control adheres to “Minimal Download Strategy (MDS)”. Googling the phrase “Minimal Download Strategy” took me to &lt;a href="http://msdn.microsoft.com/en-us/library/hh645522(office.12).aspx" target="_blank"&gt;this&lt;/a&gt; page that explains what MDS is about: “&lt;em&gt;The minimal download strategy will use a single .aspx file (start.aspx) for your pages, with the actual &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd905493(office.12).aspx#gt_433a4fb7-ef84-46b0-ab65-905f5e3a80b1"&gt;&lt;em&gt;URL&lt;/em&gt;&lt;/a&gt;&lt;em&gt; encoded in the text following the hashmark (‘#’). When navigating from page to page, only the changes between two compatible pages will be downloaded. Fewer bytes will be downloaded and the page will appear more quickly.&lt;/em&gt;”     &lt;br /&gt;So this is some kind of hardcore AJAX, in which all pages are actually a single page, and switching between pages will only load differences (so the chrome stays fixed). I wonder if this will get the same kind of bad reputation that the (pretty similar) UpdatePanel control from ASP.net has got.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Search from Client OM&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;New namespace called Microsoft.SharePoint.Client.Search.Query that indicates the Client Object Model now supports using SharePoint’s search.    &lt;br /&gt;Up until now we could only use web services to do this. Now we have convenient and familiar object model.     &lt;br /&gt;The namespace has classes like &lt;em&gt;Query&lt;/em&gt;, &lt;em&gt;KeywordQuery&lt;/em&gt; (that inharites from Query), and &lt;em&gt;ResultTable&lt;/em&gt;. This is similar to what we know from the server OM.     &lt;br /&gt;There’s also a new &lt;em&gt;SearchExecutor&lt;/em&gt; class that execute the queries (like ClientContext.Execute).&lt;/p&gt;  &lt;p&gt;Looking forward to more interesting stuff in SharePoint 15 :)&lt;/p&gt;  &lt;p&gt;Disclaimer: This post is my personal take from browsing through the CTP SDK. This is not an official announcement. All the info this post is based upon is publicly available here: &lt;a href="http://www.microsoft.com/download/en/confirmation.aspx?id=28768"&gt;http://www.microsoft.com/download/en/confirmation.aspx?id=28768&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;-- My name is Itay Shakury, and I’m a SharePoint Consultant --&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1045673" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/C7meDpHZoCszadPpwWBLdFbzF4o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C7meDpHZoCszadPpwWBLdFbzF4o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/C7meDpHZoCszadPpwWBLdFbzF4o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C7meDpHZoCszadPpwWBLdFbzF4o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/sharepoint+15/default.aspx">sharepoint 15</category></item><item><title>SharePoint 15 “Apps” (as documented in the CTP SDK)</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/26/sharepoint-15-apps-as-documented-in-the-ctp-sdk.aspx</link><pubDate>Mon, 26 Mar 2012 21:25:22 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1044348</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=1044348</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/26/sharepoint-15-apps-as-documented-in-the-ctp-sdk.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/windows_store_tile_13E48626.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px;" title="windows_store_tile" border="0" alt="windows_store_tile" align="right" src="http://blogs.microsoft.co.il/blogs/itaysk/windows_store_tile_thumb_1F99CD58.png" width="131" height="131" /&gt;&lt;/a&gt;A while ago, Microsoft has released a CTP (Community Tech Preview) version for the SDK (Software Development Kit) of the next version of SharePoint (aka SharePoint 15).     &lt;br /&gt;Browsing through it I have learned about the new concept of &lt;em&gt;Apps&lt;/em&gt; in SharePoint 15 (codename). In this post I will share my findings and conclusions.&lt;/p&gt;  &lt;p&gt;Disclaimer: This post is my personal take from browsing through the CTP SDK. This is not an official announcement. All the info this post is based upon is publicly available here: &lt;a href="http://www.microsoft.com/download/en/confirmation.aspx?id=28768"&gt;http://www.microsoft.com/download/en/confirmation.aspx?id=28768&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I start by noticing the &lt;em&gt;SPApp&lt;/em&gt; object, that lies in the &lt;em&gt;Microsoft.SharePoint.Administration &lt;/em&gt;namespace. It “&lt;em&gt;Represents an app loaded onto Microsoft SharePoint Server and ready to be installed.&lt;/em&gt;”     &lt;br /&gt;Right next to the &lt;em&gt;SPApp &lt;/em&gt;Object, we see the &lt;em&gt;SPAppCatlog &lt;/em&gt;class which “&lt;em&gt;Represents all of the &lt;/em&gt;&lt;em&gt;SPAppInstance&lt;/em&gt;&lt;em&gt; objects installed on an instance of Microsoft SharePoint Server. It provides querying capabilities for discovering installations.&lt;/em&gt;”. Naturally, if we are going to have apps, we need some sort of an App Store to obtain apps from.&lt;/p&gt;  &lt;p&gt;If we drill down a level into the &lt;em&gt;SPAppCatalog&lt;/em&gt;, we will see that it has a &lt;em&gt;GetAppInstance&lt;/em&gt; method, that “&lt;em&gt;Gets all the &lt;/em&gt;&lt;em&gt;SPAppInstance&lt;/em&gt;&lt;em&gt; objects installed at a given &lt;/em&gt;&lt;em&gt;SPWeb&lt;/em&gt;&lt;em&gt;.&lt;/em&gt;”. Also, the &lt;em&gt;SPAppInstance&lt;/em&gt; class says it “&lt;em&gt;Represents an &lt;/em&gt;&lt;em&gt;SPApp&lt;/em&gt;&lt;em&gt; object installed to a specific &lt;/em&gt;&lt;em&gt;SPWeb&lt;/em&gt;&lt;em&gt; site.”&lt;/em&gt;. So apps are scoped to the SPWeb level – cool.&lt;/p&gt;  &lt;p&gt;Continuing to the &lt;em&gt;SPWebApplication&lt;/em&gt; class, we find that is has a new method called &lt;em&gt;IsUserLicensedForEntity&lt;/em&gt;, that “&lt;em&gt;Checks if the currently logged in user has the proper license to access the specified entity.&lt;/em&gt;” If we going to have an App Store like system, we need to have a mechanism to enforce licensing.&lt;/p&gt;  &lt;p&gt;What more do we know about apps from real world? They need your permissions to access your data. This is usually done (in real world) with the OAuth protocol, and SharePoint 15 apparently supports this too! There’s a new namespace called &lt;em&gt;Microsoft.SharePoint.IdentityModel.OAuth2&lt;/em&gt; that will probably contain the basis for this, and some classes in &lt;em&gt;Microsoft.SharePoint&lt;/em&gt; like &lt;em&gt;SPApplicationCredentials&lt;/em&gt; and &lt;em&gt;SPAppPrincipalPermissionsManager&lt;/em&gt; that will probably allow programmatic handling of permissions.&lt;/p&gt;  &lt;p&gt;There’s another new namespace called &lt;em&gt;Microsoft.SharePoint.Administration.AppDeployment&lt;/em&gt; that contains two classes – &lt;em&gt;DatabaseProviderConstants&lt;/em&gt;, and &lt;em&gt;DatabaseProviderTypePersistedObject&lt;/em&gt;. So there’s apparently something with a database for an app. The SPWeb class also has new properties regarding App DBs – for example the &lt;em&gt;AppDataBaseName&lt;/em&gt; property that “&lt;em&gt;Gets the name of the app database associated with this Web.&lt;/em&gt;”. Frankly, this is still a mystery for me since it’s use is not documented in the CTP SDK, and not very self explanatory.&lt;/p&gt;  &lt;p&gt;In conclusion:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SharePoint has a new concept of Apps &lt;/li&gt;    &lt;li&gt;Apps are scoped to SPWeb &lt;/li&gt;    &lt;li&gt;Apps are distributed via the AppCatalog &lt;/li&gt;    &lt;li&gt;There’s built in support for licensing apps &lt;/li&gt;    &lt;li&gt;Apps can ask for permission using OAuth &lt;/li&gt;    &lt;li&gt;There’s something with app databases yet to be clarified &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This is a very interesting direction that the SharePoint team is taking, and probably revolutionary in the SharePoint world. I hope we can here more details soon.&lt;/p&gt;  &lt;p&gt;Disclaimer: This post is my personal take from browsing through the CTP SDK. This is not an official announcement. All the info this post is based upon is publicly available here: &lt;a href="http://www.microsoft.com/download/en/confirmation.aspx?id=28768"&gt;http://www.microsoft.com/download/en/confirmation.aspx?id=28768&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;-- My name is Itay Shakury, and I’m a SharePoint Consultant --&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1044348" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/S-gKS9JeZWrygSJV2JOGElMyxN0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S-gKS9JeZWrygSJV2JOGElMyxN0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/S-gKS9JeZWrygSJV2JOGElMyxN0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S-gKS9JeZWrygSJV2JOGElMyxN0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/sharepoint+15/default.aspx">sharepoint 15</category></item><item><title>Storing Configuration Settings For Timer Jobs</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/23/storing-configuration-settings-for-timer-jobs.aspx</link><pubDate>Fri, 23 Mar 2012 13:58:07 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1040812</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=1040812</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/23/storing-configuration-settings-for-timer-jobs.aspx#comments</comments><description>&lt;p&gt;When you develop a custom timer job, there is often a need to store configuration settings.    &lt;br /&gt;The best way to do this is using the Hierarchical Object Store in SharePoint, by creating an &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.sppersistedobject.aspx" target="_blank"&gt;SPPerststedObject&lt;/a&gt;. There are plenty of articles out there that tell you to how to do this.    &lt;br /&gt;For more info on this subject, see this:     &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc406686(office.12).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc406686(office.12).aspx&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh528519.aspx"&gt;http://msdn.microsoft.com/en-us/library/hh528519.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So it’s called &amp;quot;&lt;em&gt;hierarchical&lt;/em&gt;” object store, because you have to attach the settings to a certain object in the SharePoint object model, and that object must support this by inheriting from SPPersistedObject.&lt;em&gt;&amp;#160;&lt;/em&gt;Most of those articles shows you how to attach settings to SPFarm, SPWebApplication, or SPSiteCollection objects, but as a matter of fact, the SPJobDefinition class is also a SPPersistedObject!&lt;/p&gt;  &lt;p&gt;This means that &lt;strong&gt;you can attach settings to the job object directly&lt;/strong&gt;, and not leave them hanging at the farm or a higher level. This has two benefits:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;It’s more organized to keep timer job related settings at the timer job level (and not web application level for example)&lt;/li&gt;    &lt;li&gt;When you delete the timer job, the settings are deleted as well&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Here’s a sample:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; SPWebApplication wa = SPWebApplication.Lookup(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color:#006080;"&gt;&amp;quot;http://MySP&amp;quot;&lt;/span&gt;));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; SPJobDefinition job = wa.JobDefinitions.First(j =&amp;gt; j.Name == &lt;span style="color:#006080;"&gt;&amp;quot;MyTimerJob&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color:#008000;"&gt;//Store the settings&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; MyJobSettings settings = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MyJobSettings(&lt;span style="color:#006080;"&gt;&amp;quot;settings&amp;quot;&lt;/span&gt;, job); &lt;span style="color:#008000;"&gt;//here we set job as the parent&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; settings.settings1 = &lt;span style="color:#006080;"&gt;&amp;quot;Sample Data&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; settings.Update();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And the reading:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#008000;"&gt;//Read the settings&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; MyJobSettings res = job.GetChild&amp;lt;MyJobSettings&amp;gt;(&lt;span style="color:#006080;"&gt;&amp;quot;settings&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; setting1 = res.setting1;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;-- My name is Itay Shakury, and I’m a SharePoint consultant --&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1040812" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w9d4vqftTveeXzk8MnjfNLHfrOg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w9d4vqftTveeXzk8MnjfNLHfrOg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w9d4vqftTveeXzk8MnjfNLHfrOg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w9d4vqftTveeXzk8MnjfNLHfrOg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category></item><item><title>Follow Up on My SharePoint Extreme Session on Claims Based Authentication</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/22/follow-up-on-my-sharepoint-extreme-session-on-claims-based-authentication.aspx</link><pubDate>Thu, 22 Mar 2012 12:56:58 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1040100</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=1040100</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/22/follow-up-on-my-sharepoint-extreme-session-on-claims-based-authentication.aspx#comments</comments><description>&lt;p dir="rtl" align="right"&gt;בכנס SharePoint Extreme האחרון העברתי מצגת על Claims Based Authentication עם SharePoint 2010.    &lt;br /&gt;מכיוון שזהו נושא חדש יחסית, המצגת התמקדה בעיקר בהיכרות עם מה זה בכלל Claims Based Authenticatoin, ואיך זה עובד.     &lt;br /&gt;לאחר המצגת קיבלתי שאלות בנוגע לתהליך הטכני. פוסט זה בא להבהיר את התהליך.&lt;/p&gt;  &lt;p dir="rtl" align="right"&gt;התהליך שהצגתי הוא כזה:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="right"&gt;משתמש ניגש לשרת SP&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;המשתמש מופנה ל STS&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;STS מאמת את המשתמש&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;STS מחזיר למשתמש Token&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;המשתמש ניגש אל ה SP, הפעם עם ה Token&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;SP מאשר את ה Token ומאפשר גישה&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p dir="rtl" align="right"&gt;השאלה העיקרית הייתה בנוגע לשימוש ב Cookies, ואיך כל זה עובד עם מגבלות כמו Cross-Domain.&lt;/p&gt;  &lt;p dir="rtl" align="right"&gt;הדרך שבה זה עובד בצורה טכנית היא כזו (מספרי השורות תואמים לשלבים שתוארו מקודם):&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="right"&gt;משתמש מבצע HTTP GET ל SP&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;SP מחזיר 302 Redirect. בסופו של דבר המשתמש מופנה אל הכתובת של ה STS (בד”כ סדרה של הפניות) &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;הדפדפן ניגש אל ה STS, המשתמש מאומת באמצעות דף ה Login&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;ה STS מחזיר למשתמש דף שמכיל את ה Token (בגוף הדף, בד”כ כ hidden field), &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;באותו דף ישנו קוד Javascript שגורם לדפדפן לעשות HTTP POST אל ה SP, עם ה Token.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;SP מקבל את הבקשה ויודע לנתח אותה בהתאם&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p dir="rtl" align="right"&gt;אם כן, השאלה הבאה היא איך Cookies נכנסים לתמונה?&lt;/p&gt;  &lt;p dir="rtl" align="right"&gt;ה STS, או ה SP יכולים להשתמש ב cookies (או באיזו טכנולוגיה שהם רוצים) כדי לשמר session עם המשתמש.    &lt;br /&gt;כלומר, כדי שתהליך ההזדהות לא יקרה בכל פעם, ה SP מנפיק למשתמש cookie שמשאיר אותו מזוהה במהלך השימוש שלו באתר (ע”ע FedAuth).     &lt;br /&gt;באותה מידה ה STS יכול להנפיק למשתמש cookie כדי לזהות בצורה אוטומאטית את המשתמש אם הגיעה בקשה נוספת להזדהות.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1040100" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W0UycVUK9g2dmoucze6f0Ut6xnA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W0UycVUK9g2dmoucze6f0Ut6xnA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W0UycVUK9g2dmoucze6f0Ut6xnA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W0UycVUK9g2dmoucze6f0Ut6xnA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>I’m Speaking at SharePoint Extreme 2012</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/12/i-m-speaking-at-sharepoint-extreme-2012.aspx</link><pubDate>Mon, 12 Mar 2012 17:30:20 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1032173</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=1032173</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/12/i-m-speaking-at-sharepoint-extreme-2012.aspx#comments</comments><description>&lt;p style="direction:rtl;" align="right"&gt;ביום שלישי הקרוב עד יום חמישי, 13-15/3/2012, יתקיים כנס SharePoint Extreme – כנס מקצועי לחלוטין עם הרצאות ממוקדות לקהלי יעד שונים בנושאי SharePoint.    &lt;br /&gt;אני ארצה ביום חמישי במסלול &lt;strong&gt;Real World SharePoint Architecture&lt;/strong&gt; הרצאה על &lt;strong&gt;Claims Based Authentication&lt;/strong&gt; ב SharePoint 2010.     &lt;br /&gt;בהרצאה אציג את העולם של Claims Based Authenticatoin, את היתרונות והמניעים לטכנולוגיה, את השילוב עם SharePoint, ותרחישים לדוגמא שמתבססים עליה.&lt;/p&gt;  &lt;p style="direction:rtl;" align="right"&gt;(ההרשמה לכנס כרוכה בתשלום)&lt;/p&gt;  &lt;p style="direction:rtl;" align="right"&gt;לפרטים נוספים והרשמה:    &lt;br /&gt;&lt;a href="http://www.microsoft.com/israel/sharepointExtreme/content/Lectures/13036.aspx"&gt;http://www.microsoft.com/israel/sharepointExtreme/content/Lectures/13036.aspx&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p style="direction:rtl;" align="right"&gt;&lt;a href="http://www.microsoft.com/israel/sharepointExtreme/content/Lectures/13036.aspx" target="_blank"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="28392_Microsoft_mail_signature1" border="0" alt="28392_Microsoft_mail_signature1" src="http://blogs.microsoft.co.il/blogs/itaysk/28392_Microsoft_mail_signature1_5BC63762.jpg" width="364" height="84" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1032173" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WkhFN7duLyCYQCDE2HJ3hNUVsm0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WkhFN7duLyCYQCDE2HJ3hNUVsm0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WkhFN7duLyCYQCDE2HJ3hNUVsm0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WkhFN7duLyCYQCDE2HJ3hNUVsm0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Events/default.aspx">Events</category></item><item><title>Resources From My Session At SharePoint Extreme Event</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/03/23/resources-from-my-session-at-sharepoint-extreme-event.aspx</link><pubDate>Wed, 23 Mar 2011 19:30:50 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:813626</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=813626</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/03/23/resources-from-my-session-at-sharepoint-extreme-event.aspx#comments</comments><description>&lt;div style="text-align:right;direction:rtl;"&gt;   &lt;p&gt;שלום לכולם,&lt;/p&gt;    &lt;p&gt;בתאריך 22.3.11 העברתי בכנס SharePoint Extreme ‘הרצאה בנושא שיפור ביצועים באתרי SharePoint.&lt;/p&gt;    &lt;p&gt;תודה לכל מי שהשתתף, ותודה לירון ורועי מתבונה-מילניום שארגנו את המסלול.&lt;/p&gt;    &lt;p&gt;מצורפת המצגת שהעברתי. שימו לב שבחלק הערות (Notes) של כל שקופית יש קישורים רלוונטיים.&lt;/p&gt;    &lt;p&gt;&lt;a title="http://cid-3d176b702454b41b.office.live.com/view.aspx/blog/SPE%20-%20SharePoint%202010%20Performance.pptx" href="http://cid-3d176b702454b41b.office.live.com/view.aspx/blog/SPE%20-%20SharePoint%202010%20Performance.pptx"&gt;http://cid-3d176b702454b41b.office.live.com/view.aspx/blog/SPE%20-%20SharePoint%202010%20Performance.pptx&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;iframe src="http://r.office.microsoft.com/r/rlidPowerPointEmbed?p1=1&amp;amp;p2=1&amp;amp;p3=SD3D176B702454B41B!266&amp;amp;p4=" width="402" height="327" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=813626" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9j8MTyG4VDj7op9qz__y0kt98KI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9j8MTyG4VDj7op9qz__y0kt98KI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9j8MTyG4VDj7op9qz__y0kt98KI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9j8MTyG4VDj7op9qz__y0kt98KI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Events/default.aspx">Events</category></item><item><title>I Will Be Speaking at SharePoint Extreme Event</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/03/20/i-will-be-speaking-at-sharepoint-extreme-event.aspx</link><pubDate>Sun, 20 Mar 2011 18:22:19 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:811089</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=811089</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/03/20/i-will-be-speaking-at-sharepoint-extreme-event.aspx#comments</comments><description>&lt;div style="text-align:right;direction:rtl;"&gt;   &lt;p&gt;&lt;a href="http://www.microsoft.com/israel/sharepointExtreme/Default.aspx"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="SharePoint_Extreme" border="0" alt="SharePoint_Extreme" align="left" src="http://blogs.microsoft.co.il/blogs/itaysk/SharePoint_Extreme_12C25FC8.jpg" width="244" height="57" /&gt;&lt;/a&gt;בתאריך 22.3.11 עד 24.3.11 יתקיים כנס SharePoint Extreme - שלושה ימים של סדנאות והרצאות שכולן על SharePoint.&lt;/p&gt;    &lt;p&gt;אני אעביר סשן ביום הראשון של הכנס, 22.3, יום שלישי, על ניתוח ושיפור ביצועים של אתרי SharePoint.      &lt;br /&gt;ההרצאה שלי תארך כ 45 דקות, ותסקור את הכלים והשיטות שמסייעים למדוד ולשפר ביצועים באתר SharePoint.&lt;/p&gt;    &lt;p&gt;ההרצאה היא חלק ממסלול “צעדים ראשונים בבניית אתר אינטרנט מבוסס SharePoint 2010” אותו מוביל ירון בן שלום מחברת תבונה-מילניום.&lt;/p&gt;    &lt;p&gt;לפרטים והרשמה:      &lt;br /&gt;&lt;a title="http://www.microsoft.com/israel/sharepointExtreme/Default.aspx" href="http://www.microsoft.com/israel/sharepointExtreme/Default.aspx"&gt;http://www.microsoft.com/israel/sharepointExtreme/Default.aspx&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;ההרשמה כרוכה בתשלום.&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=811089" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/C6oY0R5u9nhpZwprKwmZWlAJJx0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C6oY0R5u9nhpZwprKwmZWlAJJx0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/C6oY0R5u9nhpZwprKwmZWlAJJx0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C6oY0R5u9nhpZwprKwmZWlAJJx0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Events/default.aspx">Events</category></item><item><title>Joining The Mothership</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/02/15/joining-the-mothership.aspx</link><pubDate>Tue, 15 Feb 2011 08:30:38 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:788694</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=788694</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/02/15/joining-the-mothership.aspx#comments</comments><description>&lt;p&gt;Short Summary for English speaking readers: I’m Joining Microsoft, no longer MVP.&lt;/p&gt;  &lt;div style="text-align:right;direction:rtl;"&gt;   &lt;p&gt;חברים וחברות יקרים, אני שמח לבשר על הצטרפותי לחברת מיקרוסופט.&lt;/p&gt;    &lt;p&gt;לאחר תקופה נהדרת שבה הקדשתי את כל כולי עבורכם – קהילת SharePoint הישראלית - הדרך מובילה אותי קדימה אל מיקרוסופט.      &lt;br /&gt;אני אשתדל להמשיך ולתרום, להשפיע ולעזור, כפי שעשיתי עד כה. עם זאת, חלק מהפעילויות אותן ביצעתי, יצטרכו לעבור לידי אחרים (עוד בנושא הזה בהמשך). אם אתם מעוניינים להשפיע על קהילת SharePoint הישראלית, &lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/contact.aspx" target="_blank"&gt;צרו איתי קשר&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;איתי שקורי.&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=788694" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/48h8kC_ekDQnMVTpyp_lJVp_PY8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/48h8kC_ekDQnMVTpyp_lJVp_PY8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/48h8kC_ekDQnMVTpyp_lJVp_PY8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/48h8kC_ekDQnMVTpyp_lJVp_PY8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>SharePoint Group–1/11</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/01/06/sharepoint-group-1-11.aspx</link><pubDate>Thu, 06 Jan 2011 09:30:17 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:763593</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=763593</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/01/06/sharepoint-group-1-11.aspx#comments</comments><description>&lt;div style="text-align:right;direction:rtl;"&gt;   &lt;p&gt;שלום לכולם,&lt;/p&gt;    &lt;p&gt;מפגש ראשון של השנה החדשה יתקיים בתאריך ה &lt;strong&gt;23/01/2011&lt;/strong&gt;. את המפגש יעבירו יוני תורג’מן ואלכס לויטין מחברת גארדיאן.&lt;/p&gt;    &lt;p&gt;שימו לב, חובה להרשם על מנת להשתתף באירוע ולקבל חניה בבניין.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;u&gt;תיאור המפגש:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;במפגש זה נעסוק בכל נושא העבודה מול ממשק ה-UI של SharePoint 2010. המפגש יתחלק לשלושה חלקים:      &lt;br /&gt;&lt;strong&gt;1&lt;/strong&gt;. &lt;strong&gt;עבודה עם ממשק ה-Ribbon:&lt;/strong&gt; בחלק זה נדבר על עבודה מול ממשק ה-Ribbon באמצעות SharePoint Designer 2010 (ללא כתיבת קוד), דרך המתאימה בעיקר למיישמים ומטמיעים, ובאמצעות Visual Studio 2010 ונראה כיצד ניתן באמצעות קוד להרחיב את יכולות הממשק.       &lt;br /&gt;&lt;strong&gt;2&lt;/strong&gt;. &lt;strong&gt;User Notifications:&lt;/strong&gt; בחלק זה נדבר על התראות למשתמש באמצעות ה-User Notifications של SharePoint 2010.       &lt;br /&gt;&lt;strong&gt;Popup Modal .3: &lt;/strong&gt;בחלק האחרון של המפגש נדבר על עבודה מול ממשק ה-Modal החדש של SharePoint 2010 ונראה איך באמצעות JavaScript ניתן להקפיץ חלונות למשתמש.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;u&gt;לפרטים נוספים והרשמה:&lt;/u&gt;&lt;/strong&gt;      &lt;br /&gt;&lt;a href="http://www.sharepoint-israel.co.il/events/SPG/SPG11"&gt;http://www.sharepoint-israel.co.il/events/SPG/SPG11&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;נתראה במפגש,     &lt;br /&gt;איתי שקורי.&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=763593" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rU5Lf31fIKQOEcsw8hSrPh-wl5A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rU5Lf31fIKQOEcsw8hSrPh-wl5A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rU5Lf31fIKQOEcsw8hSrPh-wl5A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rU5Lf31fIKQOEcsw8hSrPh-wl5A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Events/default.aspx">Events</category></item><item><title>SharePoint Group–Meeting 10 Summary</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/28/sharepoint-group-meeting-10-summary.aspx</link><pubDate>Tue, 28 Dec 2010 18:36:16 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:761003</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=761003</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/28/sharepoint-group-meeting-10-summary.aspx#comments</comments><description>&lt;div style="text-align:right;direction:rtl;"&gt;   &lt;p&gt;שלום לכולם,&lt;/p&gt;    &lt;p&gt;בתאריך 26/12/10 התקיים מפגש בנושא ALM With SharePoint 2010.     &lt;br /&gt;את המפגש העביר אסף אבן מחברת אדוונטק.&lt;/p&gt;    &lt;p&gt;את המצגת, וחומרים נוספים מהאירוע, ניתן למצוא באתר האירוע, בכתובת הבאה:&lt;a href="http://www.sharepoint-israel.co.il/events/SPG/SPG10"&gt;       &lt;br /&gt;http://www.sharepoint-israel.co.il/events/SPG/SPG10&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;שאלות המשך, ניתן לשאול בפורום בכתובת      &lt;br /&gt;&lt;a href="http://www.sharepoint-israel.co.il/forums"&gt;http://www.sharepoint-israel.co.il/forums&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;תודה לכל המשתתפים,     &lt;br /&gt;נתראה במפגש הבא,      &lt;br /&gt;איתי שקורי. &lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.sharepoint-israel.co.il/events/SPG/SPG10/Pictures/IMG_20101226_184945.jpg" width="180" height="240" alt="" /&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=761003" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vGjKYY8UsS5URH6VEUvNjxiU2iU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vGjKYY8UsS5URH6VEUvNjxiU2iU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vGjKYY8UsS5URH6VEUvNjxiU2iU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vGjKYY8UsS5URH6VEUvNjxiU2iU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/Events/default.aspx">Events</category></item><item><title>How My Latest Post Can Help You Save Time</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/19/how-my-latest-post-can-help-you-save-time.aspx</link><pubDate>Sun, 19 Dec 2010 16:01:01 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:758801</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=758801</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/19/how-my-latest-post-can-help-you-save-time.aspx#comments</comments><description>&lt;p&gt;I recently wrote &lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/15/sharepoint-is-slow-on-isolated-environments.aspx" target="_blank"&gt;a post&lt;/a&gt; regarding a certain performance issue with SharePoint that we solved. I since got some comments and questions about when is this problem relevant.&lt;/p&gt;  &lt;p&gt;Well.. It’s practically everywhere ,in an isolated environment, and It’s very common for development machines (usually virtual) to be disconnected. The fixes suggested in &lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/15/sharepoint-is-slow-on-isolated-environments.aspx" target="_blank"&gt;that post&lt;/a&gt; can help you speed up your work in the following cases:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A desktop application (WinForm\Console) that uses SharePoint APIs. &lt;/li&gt;    &lt;li&gt;STSADM.exe. &lt;/li&gt;    &lt;li&gt;PowerShell work with SharePoint. &lt;/li&gt;    &lt;li&gt;First hit of your SharePoint site. &lt;/li&gt;    &lt;li&gt;IIS reset\Recycle app pool when deploying to SharePoint. &lt;/li&gt;    &lt;li&gt;Anything else I didn’t think of, that uses SharePoint API’s in it’s own process (app domain to be precise). &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=758801" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rY30eKiB2CT-R4-I79PBWduEebs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rY30eKiB2CT-R4-I79PBWduEebs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rY30eKiB2CT-R4-I79PBWduEebs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rY30eKiB2CT-R4-I79PBWduEebs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category></item><item><title>SharePoint Is Slow On Isolated Environments</title><link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/15/sharepoint-is-slow-on-isolated-environments.aspx</link><pubDate>Wed, 15 Dec 2010 12:09:04 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:757166</guid><dc:creator>Itay Shakury</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/itaysk/rsscomments.aspx?PostID=757166</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/15/sharepoint-is-slow-on-isolated-environments.aspx#comments</comments><description>&lt;p&gt;This is an interesting case that was solved thanks to the help of &lt;strong&gt;&lt;a href="http://oneboredadmin.blogspot.com/2010/12/stsadm-new-spsite-is-slow.html" target="_blank"&gt;Nitsan Raz&lt;/a&gt;&lt;/strong&gt; – an all mighty system administrator and SharePoint admin. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Problem&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So I was asked to investigate a performance problem at one of my regular clients.&lt;/p&gt;  &lt;p&gt;To demonstrate the performance problem, the client’s developers showed me a simple WinForm application (on the server), that created an instance of an SPSite object. the code had 1 line of interest, which is:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;SPSite site = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SPSite(&lt;span style="color:#006080;"&gt;&amp;quot;http://mySite&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;That line alone took&lt;strong&gt; 30 seconds to execute!&lt;/strong&gt; What’s more interesting, was that subsequent calls was very fast to execute. It was just the first one that took so long.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Cause&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First thing we though was to isolate the location of the hang. Was it on the application side, or DB side? We ran SQL profiler and saw that SQL queries took like a millisecond to execute. That test eliminated the option of DB problem.&lt;/p&gt;

&lt;p&gt;Having figured that out, we decided to run some tests on the application server (SharePoint Web Front End). After hours of time measures and watching endless performance counters go up and down the screen, we decided to monitor network activity.&lt;/p&gt;

&lt;p&gt;We found 2 interesting lines in the log. These were DNS queries for crl.microsoft.com. How is that has to do with our application?&lt;/p&gt;

&lt;p&gt;It turns out, that SharePoint’s assemblies are signed using a Authenticode, and that every time they are loaded into an app domain, the system tries to verify their validity by asking Microsoft for Certificate Revocation List (CRL). This is a list that contains certificates that are no longer valid. 
  &lt;br /&gt;Our environment was disconnected from the internet, so obviously we can’t reach Microsoft’s servers to get the CRL. That process failed on the very beginning , when trying to lookup Microsoft.com on DNS. The DNS didn’t respond on time, so we were waiting for the lookup to time out… guessing what’s the&amp;#160; time out for DNS lookups? 15 seconds. This explains why we waited 30 seconds (for 2 assemblies to load).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Solution&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are several ways we can deal with this: (You should choose only one of the following)&lt;/p&gt;

&lt;p&gt;1. Add the following configuration to the configuration file for the application that is loading the files: (This could be MyApp.config, web.config, machine.config, etc… – depending on your application)&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;runtime&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;generatePublisherEvidence&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;enabled&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;runtime&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;This solution requires a hotfix for .NET 2.0, and is already built into later versions. More info:
  &lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/936707"&gt;http://support.microsoft.com/kb/936707&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2. Turn off CRL checks (the the user level).&lt;strong&gt; Internet Options&lt;/strong&gt;-&amp;gt;&lt;strong&gt;Advanced&lt;/strong&gt; tab-&amp;gt;&lt;strong&gt;Security&lt;/strong&gt; section under the Settings area-&amp;gt;&lt;strong&gt;Check for publisher’s certificate revocation&lt;/strong&gt;-&amp;gt;turn that &lt;strong&gt;off&lt;/strong&gt; (uncheck).&amp;#160; &lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/image_458D4447.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/itaysk/image_thumb_2A747539.png" width="244" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3. Add a fake DNS record that points to yourself (127.0.0.1), that will shorten the time to fail.&lt;/p&gt;

&lt;p&gt;4. Pre-fetch CRL files, so that it will be pulled locally and not from the internet.&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;Download these:&lt;br /&gt;http:&lt;span style="color:#008000;"&gt;//crl.microsoft.com/pki/crl/products/CodeSignPCA.crl&lt;/span&gt;&lt;br /&gt;http:&lt;span style="color:#008000;"&gt;//crl.microsoft.com/pki/crl/products/CodeSignPCA2.crl&lt;/span&gt;&lt;br /&gt;Add to certificate store:&lt;br /&gt;certutil -addstore CA CodeSignPCA.crl &lt;br /&gt;certutil -addstore CA CodeSignPCA2.crl&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;5. Allow internet access, obviously (if only to crl.microsoft.com)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Credits&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://dirkvandenberghe.com/2009/01/08/speed-up-sharepoint-spin-up-and-stsadm-execution-time-by-jeroen-ritmeijer.html"&gt;Dirk Van den Berghe&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://oneboredadmin.blogspot.com/2010/12/stsadm-new-spsite-is-slow.html" target="_blank"&gt;Nitsan Raz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more info on assembly signing: 
  &lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/junfeng/archive/2006/03/11/549355.aspx"&gt;http://blogs.msdn.com/b/junfeng/archive/2006/03/11/549355.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=757166" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Hq0yJPm1r19r45lQGbhbVTW42Xk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hq0yJPm1r19r45lQGbhbVTW42Xk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Hq0yJPm1r19r45lQGbhbVTW42Xk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hq0yJPm1r19r45lQGbhbVTW42Xk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.microsoft.co.il/blogs/itaysk/archive/tags/DEV/default.aspx">DEV</category></item></channel></rss>

