<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Technical Learnings</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/amolgote/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/amolgote/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:14:19 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Product Demo Videos FOR FSIS</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/product-demo-videos-for-fsis</link>
      <pubDate>Sat, 05 Nov 2011 22:37:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2011/11/05/product-demo-videos-for-fsis/</guid>
      <description><![CDATA[Some of product demos for FSIS (FAST Search for Internet Sites) which includes CTS (Content...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;">Some of product demos for FSIS (FAST Search for Internet Sites) which includes CTS (Content Transformation Services) and IMS (Interaction Management Services)</span></p>
<p><span style="font-size: x-large;"><strong>CTS - Content Transformation Services</strong></span>&nbsp;</p>
<p><object data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAJAADgOQAAjiAAAAAAAAAAAAAAAAAAAAAAAACGAAAAaAB0AHQAcAA6AC8ALwBzAGgAYQByAGUAcABvAGkAbgB0AC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAF8AbABhAHkAbwB1AHQAcwAvAGMAbABpAGUAbgB0AGIAaQBuAC8AbQBlAGQAaQBhAHAAbABhAHkAZQByAC4AeABhAHAAAAA8AAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAngIAAGQAaQBzAHAAbABhAHkATQBvAGQAZQA9AEkAbgBsAGkAbgBlACwAbQBlAGQAaQBhAFMAbwB1AHIAYwBlAD0AaAB0AHQAcAA6AC8ALwBzAGgAYQByAGUAcABvAGkAbgB0AC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAGUAbgAtAHUAcwAvAFYAaQBkAGUAbwBzAEwAaQBiAHIAYQByAHkALwBGAEEAUwBUAF8ASQBTAC0ARQBuAHIAaQBjAGgAXwBDAG8AbgB0AGUAbgB0AF8ANQAwADAAawAuAHcAbQB2ACwAcAByAGUAdgBpAGUAdwBJAG0AYQBnAGUAUwBvAHUAcgBjAGUAPQBoAHQAdABwADoALwAvAHMAaABhAHIAZQBwAG8AaQBuAHQALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8AZQBuAC0AdQBzAC8AUAB1AGIAbABpAHMAaABpAG4AZwBJAG0AYQBnAGUAcwAvAEkAQgAtAFMAYwByAGUAZQBuAHMAaABvAHQAcwAvAEYAQQBTAFQAXwBGAEkAUwAtAE4AYQB0AGUAXwBUAHIAZQBsAG8AYQByAF8AdABoAHUAbQBiAC4AagBwAGcALAByAGEAdABpAG4AZwBzAEQAYQB0AGEAPQAyAC4ANgA2ADUALABtAGUAZABpAGEARgBpAGwAZQBFAHgAdABlAG4AcwBpAG8AbgBzAD0AdwBtAHYAOwB3AG0AYQA7AGEAdgBpADsAbQBwAGcAOwBtAHAAMwA7ACwAcwBpAGwAdgBlAHIAbABpAGcAaAB0AE0AZQBkAGkAYQBFAHgAdABlAG4AcwBpAG8AbgBzAD0AdwBtAHYAOwB3AG0AYQA7AG0AcAAzADsAAAAAAAAAAAAAAP//AAABAAAAAAAAAAAAAAAAAAAAGAAAADIALgAwAC4AMwAxADAAMAA1AC4AMAAAAAAAAAAAAAAAAAAAAAAAAAA=" width="560" type="application/x-silverlight-2" height="315"><param name="source" value="https://sharepoint.microsoft.com/_layouts/clientbin/mediaplayer.xap" /><param name="initParams" value="displayMode=Inline,mediaSource=https://sharepoint.microsoft.com/en-us/VideosLibrary/FAST_IS-Enrich_Content_500k.wmv,previewImageSource=https://sharepoint.microsoft.com/en-us/PublishingImages/IB-Screenshots/FAST_FIS-Nate_Treloar_thumb.jpg,ratingsData=2.665,mediaFileExtensions=wmv;wma;avi;mpg;mp3;,silverlightMediaExtensions=wmv;wma;mp3;" /><param name="windowless" value="true" /><param name="enableHtmlAccess" value="true" /><param name="minRuntimeVersion" value="2.0.31005.0" /></object></p>
<p>&nbsp;</p>
<p><strong><span style="font-size: x-large;">IMS - Interction Management Services</span></strong></p>
<p><object data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAJAADgOQAAjiAAAAAAAAAAAAAAAAAAAAAAAACGAAAAaAB0AHQAcAA6AC8ALwBzAGgAYQByAGUAcABvAGkAbgB0AC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAF8AbABhAHkAbwB1AHQAcwAvAGMAbABpAGUAbgB0AGIAaQBuAC8AbQBlAGQAaQBhAHAAbABhAHkAZQByAC4AeABhAHAAAAA8AAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAIAAGQAaQBzAHAAbABhAHkATQBvAGQAZQA9AEkAbgBsAGkAbgBlACwAbQBlAGQAaQBhAFMAbwB1AHIAYwBlAD0AaAB0AHQAcAA6AC8ALwBzAGgAYQByAGUAcABvAGkAbgB0AC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAGUAbgAtAHUAcwAvAFYAaQBkAGUAbwBzAEwAaQBiAHIAYQByAHkALwBGAEEAUwBUAF8ASQBTAC0AUQB1AGUAcgB5AF8AUgBlAHMAdQBsAHQAcwBfAEYAbABvAHcAcwBfADUAMAAwAGsALgB3AG0AdgAsAHAAcgBlAHYAaQBlAHcASQBtAGEAZwBlAFMAbwB1AHIAYwBlAD0AaAB0AHQAcAA6AC8ALwBzAGgAYQByAGUAcABvAGkAbgB0AC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAGUAbgAtAHUAcwAvAFAAdQBiAGwAaQBzAGgAaQBuAGcASQBtAGEAZwBlAHMALwBJAEIALQBTAGMAcgBlAGUAbgBzAGgAbwB0AHMALwBGAEEAUwBUAF8ARgBJAFMALQBOAGEAdABlAF8AVAByAGUAbABvAGEAcgBfAHQAaAB1AG0AYgAuAGoAcABnACwAcgBhAHQAaQBuAGcAcwBEAGEAdABhAD0AMwAsAG0AZQBkAGkAYQBGAGkAbABlAEUAeAB0AGUAbgBzAGkAbwBuAHMAPQB3AG0AdgA7AHcAbQBhADsAYQB2AGkAOwBtAHAAZwA7AG0AcAAzADsALABzAGkAbAB2AGUAcgBsAGkAZwBoAHQATQBlAGQAaQBhAEUAeAB0AGUAbgBzAGkAbwBuAHMAPQB3AG0AdgA7AHcAbQBhADsAbQBwADMAOwAAAAAAAAAAAAAA//8AAAEAAAAAAAAAAAAAAAAAAAAYAAAAMgAuADAALgAzADEAMAAwADUALgAwAAAAAAAAAAAAAAAAAAAAAAAAAA==" width="560" type="application/x-silverlight-2" height="315"><param name="source" value="https://sharepoint.microsoft.com/_layouts/clientbin/mediaplayer.xap" /><param name="initParams" value="displayMode=Inline,mediaSource=https://sharepoint.microsoft.com/en-us/VideosLibrary/FAST_IS-Query_Results_Flows_500k.wmv,previewImageSource=https://sharepoint.microsoft.com/en-us/PublishingImages/IB-Screenshots/FAST_FIS-Nate_Treloar_thumb.jpg,ratingsData=3,mediaFileExtensions=wmv;wma;avi;mpg;mp3;,silverlightMediaExtensions=wmv;wma;mp3;" /><param name="windowless" value="true" /><param name="enableHtmlAccess" value="true" /><param name="minRuntimeVersion" value="2.0.31005.0" /></object></p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>How to build visual interfaces and shape how people interact with information with FAST Search Search 2010 for Internet Sites</strong></span></p>
<p><object data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAJAADgOQAAjiAAAAAAAAAAAAAAAAAAAAAAAACGAAAAaAB0AHQAcAA6AC8ALwBzAGgAYQByAGUAcABvAGkAbgB0AC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAF8AbABhAHkAbwB1AHQAcwAvAGMAbABpAGUAbgB0AGIAaQBuAC8AbQBlAGQAaQBhAHAAbABhAHkAZQByAC4AeABhAHAAAAA8AAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAArAIAAGQAaQBzAHAAbABhAHkATQBvAGQAZQA9AEkAbgBsAGkAbgBlACwAbQBlAGQAaQBhAFMAbwB1AHIAYwBlAD0AaAB0AHQAcAA6AC8ALwBzAGgAYQByAGUAcABvAGkAbgB0AC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAGUAbgAtAHUAcwAvAFYAaQBkAGUAbwBzAEwAaQBiAHIAYQByAHkALwBGAEEAUwBUAF8ASQBTAC0AQgB1AGkAbABkAF8ATgBlAHcAXwBVAHMAZQByAF8ARQB4AHAAZQByAGkAZQBuAGMAZQBfADUAMAAwAGsALgB3AG0AdgAsAHAAcgBlAHYAaQBlAHcASQBtAGEAZwBlAFMAbwB1AHIAYwBlAD0AaAB0AHQAcAA6AC8ALwBzAGgAYQByAGUAcABvAGkAbgB0AC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAGUAbgAtAHUAcwAvAFAAdQBiAGwAaQBzAGgAaQBuAGcASQBtAGEAZwBlAHMALwBJAEIALQBTAGMAcgBlAGUAbgBzAGgAbwB0AHMALwBGAEEAUwBUAF8ARgBJAFMALQBOAGEAdABlAF8AVAByAGUAbABvAGEAcgBfAHQAaAB1AG0AYgAuAGoAcABnACwAcgBhAHQAaQBuAGcAcwBEAGEAdABhAD0AMwAsAG0AZQBkAGkAYQBGAGkAbABlAEUAeAB0AGUAbgBzAGkAbwBuAHMAPQB3AG0AdgA7AHcAbQBhADsAYQB2AGkAOwBtAHAAZwA7AG0AcAAzADsALABzAGkAbAB2AGUAcgBsAGkAZwBoAHQATQBlAGQAaQBhAEUAeAB0AGUAbgBzAGkAbwBuAHMAPQB3AG0AdgA7AHcAbQBhADsAbQBwADMAOwAAAAAAAAAAAAAA//8AAAEAAAAAAAAAAAAAAAAAAAAYAAAAMgAuADAALgAzADEAMAAwADUALgAwAAAAAAAAAAAAAAAAAAAAAAAAAA==" width="560" type="application/x-silverlight-2" height="315"><param name="source" value="https://sharepoint.microsoft.com/_layouts/clientbin/mediaplayer.xap" /><param name="initParams" value="displayMode=Inline,mediaSource=https://sharepoint.microsoft.com/en-us/VideosLibrary/FAST_IS-Build_New_User_Experience_500k.wmv,previewImageSource=https://sharepoint.microsoft.com/en-us/PublishingImages/IB-Screenshots/FAST_FIS-Nate_Treloar_thumb.jpg,ratingsData=3,mediaFileExtensions=wmv;wma;avi;mpg;mp3;,silverlightMediaExtensions=wmv;wma;mp3;" /><param name="windowless" value="true" /><param name="enableHtmlAccess" value="true" /><param name="minRuntimeVersion" value="2.0.31005.0" /></object></p>]]></content:encoded>
    </item>
    <item>
      <title>FSIA - Running CTS flows in Parallel</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/fsia-running-cts-flows-in-parallel</link>
      <pubDate>Tue, 31 May 2011 09:21:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2011/05/31/fsia-running-cts-flows-in-parallel/</guid>
      <description><![CDATA[During the CTS flow development, some time there might be requirement to the CTS flows in parallel....]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;"><span style="font-family: Calibri;">During the CTS flow development, some time there might be requirement to the CTS flows in parallel. This will help in developing the flows in for execution inner sub flows in parallel. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/5657.ParalleFlows.jpeg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/5657.ParalleFlows.jpeg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/5657.ParalleFlows.jpeg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/5657.ParalleFlows.jpeg" border="0" /></a></span><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Thread operator is the vital component for running different set of flows in parallel. So CTS flow with parallel execution of flows can be built as shown above, please note that this is just one of the samples. So what you have in the flow is </span></span></p>
<ol>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Common starting point, in the above flow it is just a database reader, but in other flows it can be any other starting point like file reader, range generator or any other type of reader available out of the box for CTS components. After common starting point then you can branch the flow execution to as many number of flows that you want to execute in parallel.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Next in each branch if you want to start parallel flow execution with delay of sometime then you can use the timer operator, so that main thread of execution does not spins another thread for flow execution. For Each timer operator in each of the branch you can increase the delay time with equal intervals like 5 sec, 10 sec, 15 sec, 15 sec&hellip;&hellip;.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">In each branch then you can put the thread operator. The Thread operator inserts an extra thread in the evaluation at the point it is located. Use of the Thread operator leads to increased throughput of the flow on multi-core servers. The operator can be used to increase the performance for a chain of CPU-intensive operators and for flows with multiple branches.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Once the additional thread is spin off by the thread operator, then all the further execution for the CTS flows is responsible by the spin off thread, in this case we are using flow runner operator. So in this case additional spin off thread is responsible for the flow execution configured by the flow runner operator. Once the flow execution is completed by the flow runner operator which is been executed in thread context of additional thread which is spin off, flow execution returns to the main execution thread.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Please not that flow executing in parallel will execute on different content engine node as available in round robin fashion.</span></span></li>
</ol>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>FSIA - Database polling in CTS Flows</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/fsia-database-polling-in-cts-flows</link>
      <pubDate>Mon, 16 May 2011 13:49:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2011/05/16/fsia-database-polling-in-cts-flows/</guid>
      <description><![CDATA[Imagine you are developing series of CTS flow which need to be executed in sequence. As part of the...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;"><span style="font-family: Calibri;">Imagine you are developing series of CTS flow which need to be executed in sequence. As part of the sequence of flows you have requirement for database polling, for e.g. you can execute further flows only after you get green signal for certain field or table in database. This typically happens in main frame databases, where they have jobs been executed during night and then you can crawl the database or get the data from database only when the jobs have been completed. Job completion notification is then updated in certain table. For such scenario you can implement database polling mechanism as explained below. </span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/3580.FlowSequence.jpeg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/3580.FlowSequence.jpeg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/3580.FlowSequence.jpeg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/3580.FlowSequence.jpeg" border="0" /></a></span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">As stated above, suppose you have sequence of flows, you complete the flow execution for Flow Runner 1 and then you cannot execute next flow executed by flow runner 2 unless you get a green signal from the database table or field. For this requirement for polling what can be done is, push another flow runner in between the flow runner 1 and 2. This intermediate flow runner would be doing the activity of database polling. The intermediate flow can be implemented in following manner. The flow would be combination for while loop, timer and database reader. </span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/5287.DBPolling.jpeg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/5287.DBPolling.jpeg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/5287.DBPolling.jpeg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/5287.DBPolling.jpeg" border="0" /></a></span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">As part of the CTS flow for polling start with While operator, put the valid condition for the while operator for e.g. &ldquo;<b><i>IsNullOrEmpty(SystemName)</i></b>&rdquo; where <b><i>SystemName</i></b> is the flow variable declared in the mapper and assigned with empty string value. After the while operator put timer operator, for allowing it periodic repetition of particular activity, in the above case it is going to be polling the &nbsp;database with particular query. Configure the time value with which you want to poll the database. After the time operator, put a look up join operator, which will do the look up for the particular table or field in a database. The look up join will use the database reader to get the data from the polling table in database. &nbsp;After the look up join put a mapper operator which will assign the value from the query to the condition variable, in the above case &ldquo;<b><i>SystemName</i></b>&rdquo;. &ldquo;<b><i>SystemName</i></b>&rdquo; will have valid value only if the query from the database reader operator returns valid value, else it would be empty. So the execution for the above flow will continue until the database reader return valid value. In case if you want to stop the DB polling explicitly after certain number of polling action, then you can use run code operator to check the number of polling done and then assign the value to the flow variable &ldquo;<b><i>SystemName</i></b>&rdquo;, so that the flow execution comes out of the while loop.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Above is one of the options on database polling using content transformations flows, there could be other alternatives as well. </span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>FSIA - Exception Handling and Notification to Monitoring tools when the CTS flow execution fails.</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/fsia-exception-handling-and-notification-to-monitoring-tools-when-the-cts-flow-execution-fails</link>
      <pubDate>Mon, 16 May 2011 09:14:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2011/05/16/fsia-exception-handling-and-notification-to-monitoring-tools-when-the-cts-flow-execution-fails/</guid>
      <description><![CDATA[Typically when developing CTS flows and deploying in production environment, one of the concerns...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;"><span style="font-family: Calibri;">Typically when developing CTS flows and deploying in production environment, one of the concerns that comes along is how do we do exception handling of flows and monitor the flows, how do we notify the monitoring tools when flow is failed and then appropriate alarm can be raised by monitoring tools and teams. So below is one of the approaches that we have implemented currently in one of the implementations which is in production environments.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Here is the one of approach for exception handling.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">For all the operators in the CTS flows wherever, there is chance that error can occur, add an error edge to the operator like shown below.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/4666.FlowException.jpeg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/4666.FlowException.jpeg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/4666.FlowException.jpeg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/4666.FlowException.jpeg" border="0" /></a></span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Then point the error edge operator to a common flow that will do the common exception handling and notification through flow runner. In the above case we point the error edge to a common flow through flow runner; the error edge flow runner will execute the common flow. This common flow will do the common exception handling. Below can be one of the sample exceptions handling flow. In the common flow you use the run code operator to do all the exception logging that can be down to various sources like event logs, FSIA log files etc.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/1273.ExceptionHandling.jpeg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/1273.ExceptionHandling.jpeg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/1273.ExceptionHandling.jpeg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/1273.ExceptionHandling.jpeg" border="0" /></a></span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Even after logging the exception challenge remains how this can be notified to various monitoring. Typically monitoring tools are port based so what they do is monitor certain set of ports on a particular server. &nbsp;So for notification you can create an exe which leverages certain port and ask the monitoring tools to monitor that port. So whenever exception is raised, you can terminate exe which is leveraging particular port. On the exe termination, monitoring tools do not receive the response and then they raise the red flag or an alert. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;">Instead of leveraging or building an exe, you can leverage IIS services as well, any ways IIS is pre-requisite for FSIA deployment. So you can have default web site with port (*.80) been stopped when the exception is been raised. Then you can have monitoring tools monitoring the default web site port. So in the exception handling flow you can execute the script which will stop the default web site or any web site configured in IIS for monitoring of flows. Below is sample, in the exception handling flow, in the run code operator, below code would launch as command prompt exe which would then execute the &ldquo;</span><em><strong>StopFlowHostingEngineSite.bat</strong></em><span style="font-size: small;"><span style="font-family: Calibri;">&rdquo; batch file which has script for stopping particular web site on an IIS.</span></span></p>
<p><span style="font-family: courier new,courier;"><span style="font-size: small;">&nbsp;</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><b>
<pre class="scroll"><code class="csharp"><span style="color: #0000ff;">string </span>command = @"D:\Temp\StopFlowHostingEngineSite.bat";<br /><span style="color: #99cc00;">// create the ProcessStartInfo using "cmd" as the program to be run,</span><br /><span style="color: #99cc00;">// and "/c " as the parameters.</span><br /><span style="color: #99cc00;">// Incidentally, /c tells cmd that we want it to execute the command that follows,</span><br /><span style="color: #99cc00;">// and then exit.</span><br />System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);<br /><br /><span style="color: #99cc00;">// The following commands are needed to redirect the standard output.</span><br /><span style="color: #99cc00;">// This means that it will be redirected to the Process.StandardOutput StreamReader.</span><br />procStartInfo.RedirectStandardOutput = true;<br />procStartInfo.UseShellExecute = false;<br /><span style="color: #99cc00;">// Do not create the black window.</span><br />procStartInfo.CreateNoWindow = false;<br /><span style="color: #99cc00;">// Now we create a process, assign its ProcessStartInfo and start it</span><br />System.Diagnostics.Process proc = new System.Diagnostics.Process();<br />proc.StartInfo = procStartInfo;<br />proc.Start();<br />System.Threading.Thread.Sleep(5000);<br />proc.Kill();</code></pre>
</b></span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><b>&nbsp;</b></span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><b>StopFlowHostingEngineSite.bat </b>will contain the following script</span></span></p>
<p>%windir%\system32\inetsrv\appcmd stop site /site.name:"Default Web Site"</p>
<p>Please note that this is one of the approaches for exception handling and notification to external monitoring tools, there can be other ways as well. Depending on you requirements, please make appropriate selection.</p>]]></content:encoded>
    </item>
    <item>
      <title>FSIA, ESP 5.3 SP3 - Resolving issue related to FQL error, when query the query server. Query server throws following exception “packfql:Query Error:Unknown root scope: fieldname”.</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/fsia-esp-5-3-sp3-resolving-issue-related-to-fql-error-when-query-the-query-server-query-server-throws-following-exception-packfqlquery-errorunknown-root-scope-fieldname</link>
      <pubDate>Sat, 14 May 2011 17:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2011/05/14/fsia-esp-5-3-sp3-resolving-issue-related-to-fql-error-when-query-the-query-server-query-server-throws-following-exception-packfqlquery-errorunknown-root-scope-fieldname/</guid>
      <description><![CDATA[Resolving issue related to FQL error, when query the query server. Query server throws following...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: large;"><span style="font-family: Calibri;">Resolving issue related to FQL error, when query the query server. Query server throws following exception &ldquo;<strong>packfql:Query Error:Unknown root scope: fieldname</strong>&rdquo;.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">When querying the query server with valid FQL query and with all fields in index profile and valid index profile been uploaded, if you get following error &ldquo;<b><i>packfql:Query Error:Unknown root scope: fieldname</i></b>&rdquo;, then resolution for the same is to do the below steps</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">It is quite possible that your QRServer was not properly update with the new index profile. Recommendation would be to try the following and see if any step resolves it:</span></span></p>
<ol>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Restart the QRServer</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Remove/Backup the %FASTSEARCH%\var\qrserver\webcluster\15100\cache_cs directory and restart the QRServer</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Refresh views: view-admin &ndash;m refresh &ndash;a</span></span></li>
</ol>]]></content:encoded>
    </item>
    <item>
      <title>FSIA - ESP 5.3 SP3 - Resolving issue related ESP 5.3 SP3 installation on Windows Server 2008 or Windows server 2008 R2 even with IP V6 disabled.</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/fsia-esp-5-3-sp3-resolving-issue-related-esp-5-3-sp3-installation-on-windows-server-2008-or-windows-server-2008-r2-even-with-ip-v6-disabled</link>
      <pubDate>Sat, 14 May 2011 06:42:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2011/05/14/fsia-esp-5-3-sp3-resolving-issue-related-esp-5-3-sp3-installation-on-windows-server-2008-or-windows-server-2008-r2-even-with-ip-v6-disabled/</guid>
      <description><![CDATA[One of the recommendations for installing ESP 5.3 SP3 on Windows server 2008 or Windows Server 2008...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;"><span style="font-family: Calibri;">One of the recommendations for installing ESP 5.3 SP3 on Windows server 2008 or Windows Server 2008 R2 is to disable IPV6, even after disabling IPV6 on windows server 2008, if you are getting following error </span></span></p>
<p><i><span style="font-family: Calibri;">Could not connect to Config Server at host FQDN for Server port 16005</span></i></p>
<p><b><span style="font-family: Calibri;">&nbsp;Resolution</span></b></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Unchecking IPv6 option in network property does not work. You have to completely disable by adding &ldquo;<b><i>DisabledComponents&rdquo;</i></b> <b>DWORD</b> entry with value <b>0xFF</b> under <b><i>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6 \Parameters\ </i></b></span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span><span style="font-family: Calibri; font-size: small;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/1185.IPV6.jpeg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/1185.IPV6.jpeg"><img height="147" width="563" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/08/1185.IPV6.jpeg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-08/1185.IPV6.jpeg" border="0" /></a></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span><span style="font-size: small;"><span style="font-family: Calibri;">Even if is 64 Bit Windows Server 2008 or Windows Server 2008 R2, please ensure that you are creating 32 bit DWORD value as mentioned above. Irrespective of 32 bit or 64 bit, you have to create 32 bit DWORD value as mentioned above.</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Generating Wix file (*.wxs) from an MSI</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/generating-wix-file-wxs-from-an-msi</link>
      <pubDate>Fri, 18 Jul 2008 03:04:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2008/07/18/generating-wix-file-wxs-from-an-msi/</guid>
      <description><![CDATA[For generating Wix file (*.wxs) from an existing MSI we can utilize dark.exe that comes with Wix....]]></description>
      <content:encoded><![CDATA[<P>For generating Wix file (*.wxs) from an existing MSI we can utilize dark.exe that comes with Wix. Following is the command for generating it</P>
<P>C:\Program Files\Windows Installer XML v3\bin&gt;dark.exe&nbsp;&lt;MSI File Path&gt; &lt;Path for Wix File (*.wxs)&gt;</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Ajax Instrumentation</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/ajax-instrumentation</link>
      <pubDate>Tue, 24 Jun 2008 04:07:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2008/06/24/ajax-instrumentation/</guid>
      <description><![CDATA[1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Introduction

.NET supports...]]></description>
      <content:encoded><![CDATA[<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 3pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h1 style="margin: auto 0cm auto 36pt;"><a name="_Toc201749096" title="_Toc201749096"></a><a name="_Toc157845561" title="_Toc157845561"></a><span style="mso-bookmark: _Toc201749096;"><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">1</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Introduction</span></span></span></h1>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">.NET supports lot of API&rsquo;s for doing instrumentation with help of trace, TraceSource classes etc, but there is nothing on the client side front in web apps to do the instrumentation. With so many applications been build using Ajax there is no way to instrument the java script code. In fact ASP.Net Ajax framework also has nothing to support this out of the box. This gives the approach to instrument the client side java script code</span></span></p>
<p class="MsoNormal"><span style="font-family: Verdana;"><b style="mso-bidi-font-weight: normal;"><span lang="EN-US">Note:</span></b><span lang="EN-US"> This is currently in development phase. Will upload the code when it is fully developed and tested</span></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 3pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h1 style="margin: auto 0cm auto 36pt;"><a name="_Toc201749097" title="_Toc201749097"></a><a name="_Toc157845563" title="_Toc157845563"></a><span style="mso-bookmark: _Toc201749097;"><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">2</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Overview</span></span></span></h1>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">Ajax instrumentation framework gives the option to instrument the client side java script code. This framework comprises of ASP.Net script controls and client-script libraries. Client side java script code invokes the Ajax instrumentation java script API&rsquo;s to instrument the code.<br style="mso-special-character: line-break;" /><br style="mso-special-character: line-break;" /></span></span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 3pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h1 style="margin: auto 0cm auto 36pt;"><a name="_Toc201749101" title="_Toc201749101"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">3</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Technologies</span></span></h1>
</div>
<p class="MsoListParagraphCxSpFirst"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: x-small;">1.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: x-small;"><span style="font-family: Calibri;"><span style="mso-spacerun: yes;">&nbsp;</span>.Net 2.0</span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: x-small;">2.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: x-small;">Asp .Net Ajax Framework.</span></p>
<p class="MsoListParagraphCxSpLast"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: x-small;">3.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: x-small;">IIS.</span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 3pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h1 style="margin: auto 0cm auto 36pt;"><a name="_Toc201749102" title="_Toc201749102"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Proposed Solution</span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;"> </span></span></h1>
</div>
<p class="MsoNormal"><span lang="EN-US"><v:shapetype stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600" id="_x0000_t75"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></span></p>
<p class="MsoCaption" align="center"><strong><span style="font-family: Verdana;"><span lang="EN-US"><img mce_src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8zbNCYOXg7T5Z4MU3rh9HJKMq0VxQn4AogHP44FBVOn8XZKF6lWypwIHNIa8D_KxeCWPLgdxoRglg/Ajax-Instr-Architecture.jpeg" height="450" width="501" src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8zbNCYOXg7T5Z4MU3rh9HJKMq0VxQn4AogHP44FBVOn8XZKF6lWypwIHNIa8D_KxeCWPLgdxoRglg/Ajax-Instr-Architecture.jpeg" style="width: 501px; height: 450px;" />&nbsp;</span></span></strong></p>
<p class="MsoCaption" align="center"><strong><span style="font-family: Verdana;"><span lang="EN-US">Figure </span><span lang="EN-US"><span style="mso-no-proof: yes;">3</span></span><span lang="EN-US">‑</span><span lang="EN-US"><span style="mso-no-proof: yes;">1</span></span><span lang="EN-US">: Ajax Instrumentation</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">Ajax instrumentation can be categorized in to following components </span></span></p>
<p class="MsoListParagraphCxSpFirst"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: x-small;">1.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: x-small;">Server Side Components</span></p>
<p class="MsoListParagraphCxSpMiddle"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: x-small;">2.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: x-small;">Client Side Components</span></p>
<p class="MsoListParagraphCxSpLast"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: x-small;">3.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: x-small;">Ajax Web Service / WCF Service</span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h2 style="margin: 24pt 0cm 6pt 36pt;"><a name="_Toc201749103" title="_Toc201749103"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.1</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Server Side Components</span></span></h2>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">This would be typically an ASP.Net 2.0 Web app using Ajax Instrumentation. Block diagram is been shown below</span></span></p>
<p class="MsoNormal"><span lang="EN-US"><img mce_src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8xGAHYE6u5NbPyKbVti64Tp0JZqlrTJr10Ky0A_Ew8JjXpZ9m48cpn5OAYKCB5etXP2aYRIGxjxDw/Ajax-Instr-Server%20Side-Architecture.jpeg" height="248" width="600" src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8xGAHYE6u5NbPyKbVti64Tp0JZqlrTJr10Ky0A_Ew8JjXpZ9m48cpn5OAYKCB5etXP2aYRIGxjxDw/Ajax-Instr-Server%20Side-Architecture.jpeg" align="middle" style="width: 600px; height: 248px;" /></span></p>
<p class="MsoNormal" align="center"><span lang="EN-US"><b style="mso-bidi-font-weight: normal;"><span style="font-family: Verdana;">Figure </span></b></span><span style="font-family: Verdana;"><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="mso-no-proof: yes;">3</span></span></b><b style="mso-bidi-font-weight: normal;"><span lang="EN-US">‑</span></b><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="mso-no-proof: yes;">2</span></span></b><b style="mso-bidi-font-weight: normal;"><span lang="EN-US">: Server Side Components for Web Apps.<o:p></o:p></span></b></span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h3 style="margin: 18pt 0cm 6pt 36pt;"><a name="_Toc201749104" title="_Toc201749104"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.1.1</span><span style="font: 7pt 'Times New Roman';">&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Trace Manager</span></span></h3>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">It is script control which adds the Ajax trace listeners as per the config file. There would be separate config file for Ajax instrumentation. Please see the configuration section for details.</span></span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h3 style="margin: 18pt 0cm 6pt 36pt;"><a name="_Toc201749105" title="_Toc201749105"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.1.2</span><span style="font: 7pt 'Times New Roman';">&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Ajax Trace Listener</span></span></h3>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">Ajax trace listener is a component which when added to the trace manager listener collection will emit the java script so as to add the listener at client side. It is been inherited from Base Listener class. </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h3 style="margin: 18pt 0cm 6pt 36pt;"><a name="_Toc201749106" title="_Toc201749106"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.1.3</span><span style="font: 7pt 'Times New Roman';">&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Web Page Base</span></span></h3>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">All the web apps that need to use the Ajax instrumentation need to inherit their web page from Web Page Base class. This class basically overrides the pre-render and Init events to inject the trace manager script control which in turn will injects the trace listener. Trace manager script control has overridden pre-render method, which basically gets the list of the listeners added to trace manager; each listener has Create Script property which returns the script for registering the listener at client side. Trace managers just iterates through all the listeners in the collection gets the script associated with it and registers it using the script manager.</span></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></p>
<p><span lang="EN-US" style="font-size: 10pt; line-height: 115%; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;"><br clear="all" style="page-break-before: always; mso-special-character: line-break;" /></span></p>
<p class="MsoNormal"><b style="mso-bidi-font-weight: normal;"><span lang="EN-US" style="font-size: 12pt; line-height: 115%; mso-bidi-font-family: Arial; mso-bidi-font-style: italic;"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></b></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h2 style="margin: 24pt 0cm 6pt 36pt;"><a name="_Toc201749108" title="_Toc201749108"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.2</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Client Side Components</span></span></h2>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">This can also be stated as Client Side asynchronous communication layer.</span></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoCaption" align="center"><strong><span style="font-family: Verdana;"><span lang="EN-US"><img mce_src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8x-pruz2gkvHdskFJoYcDDzvlwIqbhoBhXWK9jZ9eIfCFOTi-1V0dAKz8aleCETD-PPb1AEfrj-NQ/Ajax-Instr-Client%20Side-Architecture.jpeg" height="415" width="560" src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8x-pruz2gkvHdskFJoYcDDzvlwIqbhoBhXWK9jZ9eIfCFOTi-1V0dAKz8aleCETD-PPb1AEfrj-NQ/Ajax-Instr-Client%20Side-Architecture.jpeg" style="width: 560px; height: 415px;" />&nbsp;</span></span></strong></p>
<p class="MsoCaption" align="center"><strong><span style="font-family: Verdana;"><span lang="EN-US">Figure </span><span lang="EN-US"><span style="mso-no-proof: yes;">3</span></span><span lang="EN-US">‑</span><span lang="EN-US"><span style="mso-no-proof: yes;">3</span></span><span lang="EN-US">: Client Side Components (Asynchronous Communication Layer)</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h3 style="margin: 18pt 0cm 6pt 36pt;"><a name="_Toc201749109" title="_Toc201749109"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.2.1</span><span style="font: 7pt 'Times New Roman';">&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Client Side Java Script Code</span></span></h3>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">This comprises of the java script code associated with web app. For invoking the Ajax instrumentation API&rsquo;s, java script code associated with it needs to be injected. This needs to be done manually by the developer. Developer will adding java script code for the API&rsquo;s and will be passing appropriate parameters to it.</span></span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h3 style="margin: 18pt 0cm 6pt 36pt;"><a name="_Toc201749110" title="_Toc201749110"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.2.2</span><span style="font: 7pt 'Times New Roman';">&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Ajax Instrumentation Java script API&rsquo;s</span></span></h3>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">Java script code which invokes the Ajax instrumentation API&rsquo;s </span></span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h3 style="margin: 18pt 0cm 6pt 36pt;"><a name="_Toc201749111" title="_Toc201749111"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.2.3</span><span style="font: 7pt 'Times New Roman';">&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Ajax Trace Manager</span></span></h3>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">This is a client side java script class. The entire set of java script API&rsquo;s that need to be invoked to do java script diagnostics will be in this class. This class will also be holding the listeners collections, which will be initialized by the scripts generated by the trace manager control. The trace manager control will be injected in to the page by Web page base class. When the trace manager Ajax instrumentation API is been invoked internally it iterates through all the listener collection and calls the respective API&rsquo;s of that Ajax listener class. </span></span></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h3 style="margin: 18pt 0cm 6pt 36pt;"><a name="_Toc201749112" title="_Toc201749112"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.2.4</span><span style="font: 7pt 'Times New Roman';">&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Ajax Trace Listener</span></span></h3>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">This is again a java script class. API&rsquo;s of this class will be only be invoked if the listener is been added in the trace manager using configuration. API&rsquo;s of this class will invoke the Ajax trace web service / WCF service and pass the trace data to it. This class will be basically queuing up all the tracing requests, will be passing all the queued data after configured time interval. Web Service will be invoked by the trace listener class after specific interval.</span></span></p>
<p><span lang="EN-US" style="font-size: 10pt; line-height: 115%; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;"><br clear="all" style="page-break-before: always; mso-special-character: line-break;" /></span></p>
<p class="MsoNormal"><b style="mso-bidi-font-weight: normal;"><span lang="EN-US" style="font-size: 12pt; line-height: 115%; mso-bidi-font-family: Arial; mso-bidi-font-style: italic;"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></b></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: silver 3pt solid; mso-element: para-border-div;">
<h2 style="margin: 24pt 0cm 6pt 36pt;"><a name="_Toc201749113" title="_Toc201749113"></a><span lang="EN-US" style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana;"><span style="mso-list: Ignore;"><span style="font-family: Verdana; font-size: x-small;">4.3</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><span style="font-family: Verdana; font-size: x-small;">Ajax Web Service / WCF Service</span></span></h2>
</div>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">This also can be categorized as server side component for Asynchronous communication layer.</span></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal" align="center"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoCaption" align="center"><strong><span style="font-family: Verdana;"><span lang="EN-US"><img mce_src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8y9llUWDRIvLwKqv9AGPeh3FGPNvC1-zTLW5irTqiZq3r1VXAuKnZOXxS85ID8HTKfcsGqwl_7DYg/Ajax-Instr-Web%20Service-Architecture.jpeg" height="137" width="379" src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8y9llUWDRIvLwKqv9AGPeh3FGPNvC1-zTLW5irTqiZq3r1VXAuKnZOXxS85ID8HTKfcsGqwl_7DYg/Ajax-Instr-Web%20Service-Architecture.jpeg" style="width: 379px; height: 137px;" /><br />Figure </span><span lang="EN-US"><span style="mso-no-proof: yes;">3</span></span><span lang="EN-US">‑</span><span lang="EN-US"><span style="mso-no-proof: yes;">4</span></span><span lang="EN-US">: Server Side Asynchronous Communication Layer</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="font-family: Verdana;">This service will be invoked by the java script Ajax instrumentation API&rsquo;s. This service then passes the trace data that it has received to the Sym Instrumentation.</span></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><span style="font-family: Verdana;">&nbsp;</span></o:p></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Custom Trace Listener and Provider model</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/custom-trace-listener-and-provider-model</link>
      <pubDate>Wed, 07 May 2008 06:45:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2008/05/07/custom-trace-listener-and-provider-model/</guid>
      <description><![CDATA[A listener is an object that receives the trace output and outputs it somewhere; that somewhere...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal"><span style="font-family: Calibri; font-size: small;">A listener is an object that receives the trace output and outputs it somewhere; that somewhere could be a window in your development environment, a file on your hard drive, a Windows Event log, a SQL Server or Oracle database, or any other customized data store. You can think of a Trace Listener as a conduit for passing tracing information from your application to the output store. Application write tracing information on Trace Listeners and Trace Listeners in turn output the tracing information to the target media.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p><span style="font-family: Calibri; font-size: small;">.Net has some in built standard listeners </span></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">1.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">TextWriterTraceListener- Writes the trace output to the xml, csv, text files. There are couple of variants of TextWriterTraceListener</span></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">a.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">XmlWriterTraceListener</span></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">b.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">DelimitedListTraceListener</span></p>
<p class="MsoNormal"><span style="font-family: Calibri; font-size: small;">Above 2 trace listeners are derived from the TextWriterTraceListener and are used for writing the trace information to XML files and CSV files respectively.</span></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">2.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">EventLogTraceListener &ndash; It is used to route tracing messages to the Windows event log</span></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">3.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">DefaultTraceListener - This class is used when we want to see the tracing output in the Visual Studio Environment. If there is requirement to capture Trace messages outside of Visual Studio .NET, then some other Trace Listeners must be used.</span></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">4.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">ConsoleTraceListener &ndash; Writes the trace information to the console output.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p class="MsoNormal"><span style="font-family: Calibri; font-size: small;">.NET framework provides the flexibility of writing custom Trace Listeners. In order to implement custom Trace Listener, it must be inherited from TraceListener class. Typically a custom trace listener is used where trace data needs to be saved in some kind of custom data source, now number of custom data sources may vary, for each custom data source a separate listener needs to be written. There might be requirement to log the same trace data in to different data source. So in that case .Net provider model in combination with custom trace listener comes in handy. Below is high level diagram of how to use same custom trace listeners accross diffrent data sources.</span></p>
<p class="MsoNormal"><v:shapetype stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600" id="_x0000_t75"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>&nbsp;<img mce_src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8zwUxGxvh56T2CTwcoHcGe3SCG-aqr82435m2FbfKx1wE3fcokmrGIaYrD8Okz5gFzgapeONRy2iA/ProviderModelAndCutomTraceListener.jpeg" height="611" width="769" src="https://kdnxtq.bay.livefilestore.com/y1pOAk3Im0LP8zwUxGxvh56T2CTwcoHcGe3SCG-aqr82435m2FbfKx1wE3fcokmrGIaYrD8Okz5gFzgapeONRy2iA/ProviderModelAndCutomTraceListener.jpeg" align="middle" alt="Design for Custom Trace Listener and Provider Model" title="Design for Custom Trace Listener and Provider Model" style="width: 769px; height: 611px;" /></p>
<p class="MsoNormal"><span style="font-family: Calibri; font-size: small;">In this case Custom trace listener will be generic trace listener and will not be agnostic to any data source. Instead of creating separate listener, different set of providers for each data source will be created; common functionality across the provider will be encapsulated in base provider class. Another advantage with this approach is that if trace data needs to be logged in to the additional data source, then we just need to write another provider specific to that data source and plug it in the config file.</span></p>
<p class="MsoNormal"><b style="mso-bidi-font-weight: normal;"><span style="font-size: small;"><span style="font-family: Calibri;">Advantage of using the .Net provider model<o:p></o:p></span></span></b></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">1.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">The main advantage by using the provider model is that, Custom Trace Listener becomes a generic trace listener; it can be configured to trace the data in any of the data source by writing the provider for that data source. If the provider model is not been used then Custom Trace Listener becomes specific to custom data source, and if the trace information needs to be traced in some other data source then new custom trace listener needs to be written right from scratch. </span></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">2.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">If additional tracing information needs to be passed, then provider model can provide single insertion point, but if it is not been used then it needs to replicated to all the custom listeners.</span></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">3.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">No need to explicitly instantiate classes. The .NET framework will automatically manage class instantiation, including re-using classes that have already been instantiated. This improves the memory management of your application.</span></p>
<p class="MsoNormal"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">4.</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri; font-size: small;">Switching data sources is much easier. Changing the data source of trace data is a simple as replacing your existing concrete (implementer) class with a new concrete (implementer) class and inheriting from your provider class. Code in the custom trace listener remains unchanged, thereby reducing effort required to switch data sources and the amount of regression testing required thereafter.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/08/46/56/93/ProviderModelAndCutomTraceListener.jpeg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-08-46-56-93/ProviderModelAndCutomTraceListener.jpeg">ProviderModelAndCutomTraceListener.jpeg</a></p>]]></content:encoded>
    </item>
    <item>
      <title>XML Serializable Dictionary</title>
      <link>https://docs.microsoft.com/archive/blogs/amolgote/xml-serializable-dictionary</link>
      <pubDate>Tue, 06 May 2008 01:15:00 GMT</pubDate>
      <dc:creator><![CDATA[Aamol Gote]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amolgote/2008/05/06/xml-serializable-dictionary/</guid>
      <description><![CDATA[Typically generic dictionaries are not serializable. For serializing the generic dictionaries we can...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal"><span style="font-size: 12pt; color: #1f497d; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Typically generic dictionaries are not serializable. For serializing the generic dictionaries we can write custom xml serializable dictionary class by inheriting from </span></span><span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN;">Dictionary</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN;">&lt;TKey, TValue&gt; </span><span style="font-size: 12pt; color: #1f497d; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">and</span></span><span style="font-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN;"> </span><span style="font-size: 12pt; color: #1f497d; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">also implementing the</span></span><span style="font-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN;"> IXmlSerializable interface. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 12pt; color: #1f497d; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Below code snippet contains the code of XMLSerializable dictionary.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;">using</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"> System;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;">using</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"> System.Collections.Generic;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;">using</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"> System.Text;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;">using</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"> System.Xml.Serialization;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;">using</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"> System.Runtime.Serialization;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;">namespace</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"> CustomType<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> Xml serializable dictionary object.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;typeparam name="TKey"&gt;</span><span style="color: green;">Key type</span><span style="color: gray;">&lt;/typeparam&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;typeparam name="TValue"&gt;</span><span style="color: green;">Object type</span><span style="color: gray;">&lt;/typeparam&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>[<span style="color: #2b91af;">SerializableAttribute</span>]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">public</span> <span style="color: blue;">class</span> XmlSerializableDictionary&lt;TKey, TValue&gt; : <span style="color: #2b91af;">Dictionary</span>&lt;TKey, TValue&gt;, IXmlSerializable<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#region</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"> Constructors.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> Initializes a new instance of the </span><span style="color: gray;">&lt;see cref="XmlSerializableDictionary&amp;lt;TKey, TValue&amp;gt;"/&gt;</span><span style="color: green;"> class.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">public</span> XmlSerializableDictionary()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>: <span style="color: blue;">base</span>()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: green;">// default constructor.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> Initializes a new instance of the </span><span style="color: gray;">&lt;see cref="XmlSerializableDictionary&amp;lt;TKey, TValue&amp;gt;"/&gt;</span><span style="color: green;"> class.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name="info"&gt;</span><span style="color: green;">A </span><span style="color: gray;">&lt;see cref="T:System.Runtime.Serialization.SerializationInfo"&gt;&lt;/see&gt;</span><span style="color: green;"> object containing the&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;information required to serialize the </span><span style="color: gray;">&lt;see cref="T:System.Collections.Generic.Dictionary`2"&gt;&lt;/see&gt;</span><span style="color: green;">.</span><span style="color: gray;">&lt;/param&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name="context"&gt;</span><span style="color: green;">A </span><span style="color: gray;">&lt;see cref="T:System.Runtime.Serialization.StreamingContext"&gt;&lt;/see&gt;</span><span style="color: green;"> structure </span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; containing&nbsp;the&nbsp;source and destination of the serialized stream associated with the </span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">&lt;see&nbsp; </span></span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: gray;">cref="T:System.Collections.Generic.Dictionary`2"&gt;&lt;/see&gt;</span><span style="color: green;">.</span><span style="color: gray;">&lt;/param&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">protected</span> XmlSerializableDictionary(<span style="color: #2b91af;">SerializationInfo</span> info, <span style="color: #2b91af;">StreamingContext</span> context)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>: <span style="color: blue;">base</span>(info, context)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#endregion</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;">&nbsp;</span>&nbsp;</p>
<p class="MsoNormal">
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region<span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: #000000;"> Constants.<o:p></o:p></span></span></span></div>
</p>
<p><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;">
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">private</span> <span style="color: blue;">const</span> <span style="color: blue;">string</span> ITEM = <span style="color: #a31515;">"item"</span>;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">private</span> <span style="color: blue;">const</span> <span style="color: blue;">string</span> KEY = <span style="color: #a31515;">"key"</span>;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">private</span> <span style="color: blue;">const</span> <span style="color: blue;">string</span> VALUE = <span style="color: #a31515;">"value"</span>;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#endregion<o:p></o:p></span></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#region</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"> IXmlSerializable Members</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> This property is reserved, apply the </span><span style="color: gray;">&lt;see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"&gt;&lt;/see&gt;</span><span style="color: green;"> to </span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the class instead.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;returns&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> An </span><span style="color: gray;">&lt;see cref="T:System.Xml.Schema.XmlSchema"&gt;&lt;/see&gt;</span><span style="color: green;"> that describes the XML representation of the object that is </span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; produced by the </span><span style="color: gray;">&lt;see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"&gt;&lt;/see&gt;</span><span style="color: green;"> method </span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and consumed by the </span><span style="color: gray;">&lt;see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"&gt;&lt;/see&gt;</span><span style="color: green;"> </span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/returns&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">public</span> System.Xml.Schema.XmlSchema GetSchema()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">return</span> <span style="color: blue;">null</span>;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> Generates an object from its XML representation.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name="reader"&gt;</span><span style="color: green;">The </span><span style="color: gray;">&lt;see cref="T:System.Xml.XmlReader"&gt;&lt;/see&gt;</span><span style="color: green;"> stream from which the object is </span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deserialized.</span><span style="color: gray;">&lt;/param&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">public</span> <span style="color: blue;">void</span> ReadXml(System.Xml.XmlReader reader)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>XmlSerializer keySerializer = <span style="color: blue;">new</span> XmlSerializer(<span style="color: blue;">typeof</span>(TKey));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>XmlSerializer valueSerializer = <span style="color: blue;">new</span> XmlSerializer(<span style="color: blue;">typeof</span>(TValue));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">bool</span> wasEmpty = reader.IsEmptyElement;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>reader.Read();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">if</span> (wasEmpty)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">return</span>;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">while</span> (reader.NodeType != System.Xml.XmlNodeType.EndElement)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reader.ReadStartElement(ITEM);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reader.ReadStartElement(KEY);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TKey key = (TKey)keySerializer.Deserialize(reader);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reader.ReadEndElement();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reader.ReadStartElement(VALUE);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TValue value = (TValue)valueSerializer.Deserialize(reader);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reader.ReadEndElement();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">this</span>.Add(key, value);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reader.ReadEndElement();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reader.MoveToContent();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reader.ReadEndElement();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> Converts an object into its XML representation.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name="writer"&gt;</span><span style="color: green;">The </span><span style="color: gray;">&lt;see cref="T:System.Xml.XmlWriter"&gt;&lt;/see&gt;</span><span style="color: green;"> stream to which the object is </span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="color: green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; serialized.</span><span style="color: gray;">&lt;/param&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">public</span> <span style="color: blue;">void</span> WriteXml(System.Xml.XmlWriter writer)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>XmlSerializer keySerializer = <span style="color: blue;">new</span> XmlSerializer(<span style="color: blue;">typeof</span>(TKey));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>XmlSerializer valueSerializer = <span style="color: blue;">new</span> XmlSerializer(<span style="color: blue;">typeof</span>(TValue));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">foreach</span> (TKey key <span style="color: blue;">in</span> <span style="color: blue;">this</span>.Keys)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>writer.WriteStartElement(ITEM);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>writer.WriteStartElement(KEY);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>keySerializer.Serialize(writer, key);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>writer.WriteEndElement();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>writer.WriteStartElement(VALUE);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TValue value = <span style="color: blue;">this</span>[key];<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>valueSerializer.Serialize(writer, value);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>writer.WriteEndElement();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>writer.WriteEndElement();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#endregion<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes;">}</span><span style="font-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-IN;"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>]]></content:encoded>
    </item>
  </channel>
</rss>