<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Come Get Some...Thoughts On Software Technology</title><link>http://blogs.msdn.com/astrauss/default.aspx</link><description>Alexander Strauss goes Blog</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>DHL Shipment Tracking Accelerator for IE8</title><link>http://blogs.msdn.com/astrauss/archive/2009/11/10/dhl-shipment-tracking-accelerator-for-ie8.aspx</link><pubDate>Tue, 10 Nov 2009 13:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9920133</guid><dc:creator>astrauss</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9920133.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9920133</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9920133</wfw:comment><description>&lt;P&gt;Today it’s going to be a short and extremely non technical post however I thought this may be of interest to some of you. I had some spare time and was waiting for DHL to deliver my copy of &lt;A href="http://dragonage.bioware.com/" target=_blank&gt;Dragon Age: Origins&lt;/A&gt;. So I consulted the DHL tracking system quite a few times. And because I found it quite annoying to copy and paste the shipment number out of the Amazon UK webpage into the tracking system on the DHL website I decided to quickly create a DHL Shipment Tracking Accelerator. Although many ecommerce shops already provide links to the tracking system there are still quite a few that don’t. So I think this provides at least some value.&lt;/P&gt;
&lt;P&gt;Here’s a little screenshot of the preview. Luckily DHL designed the page so that at least some relevant info is presented within the preview. To get full fidelity however you can hit the mouse button on the accelerator menu item to go to the full page.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/DHLShipmentTrackingAcceleratorforIE8_CCB4/screen1_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="DHL Accelerator Preview Screenshot" border=0 alt="DHL Accelerator Preview Screenshot" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/DHLShipmentTrackingAcceleratorforIE8_CCB4/screen1_thumb.jpg" width=644 height=378&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;If you want to add the accelerator yourself…here you go. I provide a English and a German version.&lt;/P&gt;
&lt;TABLE style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;BUTTON id=dhl_de_Btn onclick="window.external.AddService('http://www.level70.de/ie/accelerators/dhl/dhl_tracking_de.xml')"&gt;DHL Tracking dem Internet Explorer 8 hinzufügen&lt;/BUTTON&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;BUTTON id=dhl_en_Btn onclick="window.external.AddService('http://www.level70.de/ie/accelerators/dhl/dhl_tracking_en.xml')"&gt;Add DHL tracking to Internet Explorer 8&lt;/BUTTON&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;TABLE class=class border=0 cellSpacing=0 cellPadding=2 width=600 class="class"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=class width=70 class="class"&gt;&lt;A href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2009/11/10/dhl-shipment-tracking-accelerator-for-ie8.aspx" mce_href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2009/11/10/dhl-shipment-tracking-accelerator-for-ie8.aspx"&gt;&lt;IMG src="http://digg.com/img/digg-it-tiny.gif" mce_src="http://digg.com/img/digg-it-tiny.gif"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=class width=190 class="class"&gt;&lt;IMG alt=Delicious src="http://static.delicious.com/img/delicious.small.gif" width=15 height=15&gt;&lt;A style="FONT-SIZE: 8pt" onclick="window.open('http://delicious.com/save?v=5&amp;amp;noui&amp;amp;jump=close&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=550,height=550'); return false;" href="http://delicious.com/save"&gt;Bookmark this on Delicious&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=class width=150 class="class"&gt;
&lt;SCRIPT&gt;




function fbs_click() {u=location.href;t=document.title;window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');return false;}&lt;/SCRIPT&gt;

&lt;STYLE&gt;





html .fb_share_button {
	border-right: #d8dfea 1px solid; padding-right: 20px; border-top: #d8dfea 1px solid; display: inline-block; padding-left: 5px; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) no-repeat right top; padding-bottom: 0px; border-left: #d8dfea 1px solid; padding-top: 1px; border-bottom: #d8dfea 1px solid; height: 15px
}
html .fb_share_button:hover {
	border-left-color: #295582; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) #3b5998 no-repeat right top; border-bottom-color: #295582; color: #fff; border-top-color: #295582; text-decoration: none; border-right-color: #295582
}&lt;/STYLE&gt;
&lt;A style="TEXT-DECORATION: none" class=fb_share_button onclick="return fbs_click()" href="http://www.facebook.com/share.php?u=%3Curl%3E" rel=nofollow target=_blank&gt;Share&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=class width=150 class="class"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9920133" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/User+Experience/default.aspx">User Experience</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Internet+Explorer+8/default.aspx">Internet Explorer 8</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Quick+Wins/default.aspx">Quick Wins</category></item><item><title>Installing IEAK IN A VPC without Disk Space Determination</title><link>http://blogs.msdn.com/astrauss/archive/2009/10/14/installing-ieak-in-a-vpc-without-disk-space-determination.aspx</link><pubDate>Wed, 14 Oct 2009 10:48:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907088</guid><dc:creator>astrauss</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9907088.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9907088</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9907088</wfw:comment><description>&lt;p&gt;If you try to install the &lt;a href="http://technet.microsoft.com/en-us/ie/cc889351.aspx" target="_blank"&gt;Internet Explorer Administration Kit&lt;/a&gt; on a &lt;a href="http://www.microsoft.com/windows/virtual-pc/" target="_blank"&gt;Virtual PC&lt;/a&gt; image you may have probably encountered the following situation&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/InstallingIEAKINAVPCwithoutDiskSpaceDete_B070/disk_space_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="disk_space" border="0" alt="disk_space" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/InstallingIEAKINAVPCwithoutDiskSpaceDete_B070/disk_space_thumb.jpg" width="244" height="100" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The box shown above appears and stays there forever. The only option you have is to click the “Return” button and cancel the installation process. But as you may still want to have this piece of software installed on your virtual pc you are pretty much stuck here. However there is at least still one possibility to install the .msi package. That is by using the &lt;a href="http://technet.microsoft.com/en-us/library/cc759262(WS.10).aspx" target="_blank"&gt;msiexec.exe&lt;/a&gt; tool with the quiet or passive option. So after opening a Command Window (eventually as Administrator) you can use the following command line to silently install the IEAK install image:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;msiexec /quiet /i &amp;lt;PATH&amp;gt;\ieak.msi&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;This will install the package and it will be available for use. However there is one problem with this approach. In the GUI you need to choose a license type from three options (Internet Service Provider (ISP), Internet Content Provider (ICP) and Corporate). With the above method you cannot do that and therefore the product is installed with the default license which obviously is the ISP license. Implication of this is that there are certain features enabled or disabled in IEAK depending on the license mode. So if you need the ICP or the Corporate mode you are stuck again. However as a quick hack you can modify one (or better) two registry key in order to adapt IEAK to your needs and requirements.&lt;/p&gt;

&lt;p&gt;You need to go to:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IEAK&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;And then there are the two string values which you can modify:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;font size="2" face="Courier New"&gt;Mode: &amp;lt;0|1|2&amp;gt;&lt;/font&gt;&lt;/em&gt; where 0 is ISP, 1 is ICP and 2 is Corporate&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;Organization Name&lt;/em&gt;&lt;/font&gt;: Which is the name that gets inserted in certain UI areas of IE and which probably has also some legal meaning with respect to licensing.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;So finally it will look something like this which is the correct setting for your requirements and you then are ready to start creating custom IE8 packages.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/InstallingIEAKINAVPCwithoutDiskSpaceDete_B070/ieak_reg_4.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ieak_reg" border="0" alt="ieak_reg" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/InstallingIEAKINAVPCwithoutDiskSpaceDete_B070/ieak_reg_thumb_1.jpg" width="644" height="182" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907088" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Internet+Explorer+8/default.aspx">Internet Explorer 8</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/IEAK/default.aspx">IEAK</category></item><item><title>Win7 your Visual Search if it speaks RSS</title><link>http://blogs.msdn.com/astrauss/archive/2009/10/12/win7-your-visual-search-if-it-speaks-rss.aspx</link><pubDate>Mon, 12 Oct 2009 08:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9906216</guid><dc:creator>astrauss</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9906216.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9906216</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9906216</wfw:comment><description>&lt;P&gt;I already blogged quite a bit about the new &lt;A href="http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx" target=_blank mce_href="http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx"&gt;Visual Search feature&lt;/A&gt; in Internet Explorer 8. Since this needs some customizations on the server side in order to create search responses that correspond to the Visual Search standard and are either in JSON or XML format changes are good that your search already is able to provide the search results in RSS format.&lt;/P&gt;
&lt;P&gt;And if this is the case you can easily add an entry to your existing OpenSearch descriptor file to include the URL template for the RSS search response. And then you could use exactly that same file in order to publish and distribute it as an &lt;A href="http://msdn.microsoft.com/en-us/library/dd742958(VS.85).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/dd742958(VS.85).aspx"&gt;Federated Search Connector&lt;/A&gt; for &lt;A href="http://msdn.microsoft.com/en-us/windows/dd433113.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/windows/dd433113.aspx"&gt;Windows 7&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;To create a RSS template URL that can be used with Windows 7 the same parameters are valid as for the visual search or a standard web search provider and adhere to the &lt;A href="http://www.opensearch.org/Specifications/OpenSearch/1.1" target=_blank mce_href="http://www.opensearch.org/Specifications/OpenSearch/1.1"&gt;OpenSearchDescription&lt;/A&gt; specification. So such a URL template could look like the following (with &lt;A href="http://www.bing.com/" target=_blank mce_href="http://www.bing.com"&gt;Bing&lt;/A&gt; search as an example).&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;A href="http://api.search.live.com/rss.aspx?source=web&amp;amp;query={searchTerms" mce_href="http://api.search.live.com/rss.aspx?source=web&amp;amp;query={searchTerms"&gt;http://api.search.live.com/rss.aspx?source=web&amp;amp;query={searchTerms&lt;/A&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Of course even if you do not already have a IE8 Visual Search but a RSS response mode for your search you still can use it with Windows 7. The minimal configuration that you provide a “ShortName” and the template URL. The rest is optional however it is recommended that you add also a standard web search template so that Windows 7 displays a button to let you start a standard web search eventually using different parameters.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/Win7yourVisualSearchifitspeaksRSS_C8E4/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/Win7yourVisualSearchifitspeaksRSS_C8E4/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/Win7yourVisualSearchifitspeaksRSS_C8E4/image_thumb.png" width=244 height=31 mce_src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/Win7yourVisualSearchifitspeaksRSS_C8E4/image_thumb.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;So a valid and minimal open search configuration for use as a Windows 7 search provider that searches my blog would look something like this:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id=codeSnippetWrapper&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xml&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;version&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="1.0"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;encoding&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="utf-8"&lt;/SPAN&gt;?&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OpenSearchDescription&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xmlns:ms-ose&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="http://schemas.microsoft.com/opensearchext/2009/"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="http://a9.com/-/spec/opensearch/1.1/"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;  &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;ShortName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;Come Get Some...Search&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;ShortName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;  &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Url&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="application/rss+xml"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;template&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="http://api.search.live.com/rss.aspx?source=web&amp;amp;amp;query={searchTerms}+site:http://blogs.msdn.com/astrauss"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;  &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Url&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="text/html"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;template&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="http://www.bing.com/search?q={searchTerms}+site:http://blogs.msdn.com/astrauss&amp;amp;amp;go=&amp;amp;amp;form=QBRE&amp;amp;amp;scope=web"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;  &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Description&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;Windows 7 Search Connector for the Blog of Alex Strauss&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Description&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;OpenSearchDescription&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;As you may realize it is quite simple to create such a configuration. Then you can provide it as a file using the .osdx extension. If you provide as a URL the Mime-Type is already registered and the user can directly install the provider from a simple link.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;So if you want to add the search provider for my blog then click the link below.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="http://www.level70.de/silverlight/fedsearch/ComeGetSome.osdx"&gt;Come Get Some...Search&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;And to make it even easier for you to create your own configuration file I created a little &lt;A href="http://www.silverlight.net/" target=_blank mce_href="http://www.silverlight.net"&gt;Silverlight&lt;/A&gt; application that creates a configuration XML from the parameters you provide. Unfortunately as I’m not able to host ASP.Net applications you have to copy&amp;amp;paste the XML string to a text editor. However I hope you like it anyway.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;IFRAME height=360 src="http://www.level70.de/silverlight/fedsearch/Win7FedSearchCreator.html" frameBorder=0 width=610 mce_src="http://www.level70.de/silverlight/fedsearch/Win7FedSearchCreator.html"&gt;
&lt;/div&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;&lt;/IFRAME&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9906216" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/astrauss/attachment/9906216.ashx" length="637" type="application/opensearchdescription+xml" /><category domain="http://blogs.msdn.com/astrauss/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Standards/default.aspx">Standards</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Internet+Explorer+8/default.aspx">Internet Explorer 8</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Update: Enterprise RIA Project Now Running on Silverlight 3 Release Version</title><link>http://blogs.msdn.com/astrauss/archive/2009/09/08/update-enterprise-ria-project-now-running-on-silverlight-3-release-version.aspx</link><pubDate>Tue, 08 Sep 2009 11:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9892469</guid><dc:creator>astrauss</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9892469.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9892469</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9892469</wfw:comment><description>&lt;P&gt;As the release schedule of our Enterprise RIA template and sample application was a little bit unfortunate we now had the time to update the project. We needed to do some changes to the code which we couldn’t do before now due to some time constraints. For example the way ton include &lt;A href="http://msdn.microsoft.com/en-us/library/cc221363(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc221363(VS.95).aspx"&gt;application services&lt;/A&gt; into the app changed quite a bit. The way to declare the service in XAML was using the attached property &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT face="Courier New"&gt;&amp;lt;Application.Services&amp;gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;a full example of the “old” way is posted &lt;A href="http://www.mokosh.co.uk/post/Silverlight-3-Application-Services.aspx" target=_blank mce_href="http://www.mokosh.co.uk/post/Silverlight-3-Application-Services.aspx"&gt;here&lt;/A&gt;. The new way to declare an application service is to use the &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT face="Courier New"&gt;&amp;lt;Application.ApplicationLifetimeObjects&amp;gt;&lt;/FONT&gt;&lt;/EM&gt; attached property. But not only the name of the property changed there are more changes to that concept including the mechanisms to obtain an instance of such a service. Now you can simply query the ApplicationLifetimeObjects collection e.g.&amp;nbsp; using extension methods.&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt; IUnityService GetUnityService(&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt; Application application)&lt;BR&gt;{    &lt;BR&gt;    &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; application.ApplicationLifetimeObjects.OfType&amp;lt;IUnityService&amp;gt;().Single();&lt;BR&gt;}&lt;/PRE&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;Another full example is posted &lt;A href="http://wildermuth.com/2009/08/24/The_Application_Class_and_Application_Services_in_Silverlight_3" mce_href="http://wildermuth.com/2009/08/24/The_Application_Class_and_Application_Services_in_Silverlight_3"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;However now the updated version finally does run on the release version of the Silverlight 3 Runtime.&lt;/P&gt;
&lt;P&gt;In addition I attach the code here as the push out onto the &lt;A href="http://www.microsoft.com/germany/msdn/knowhow/VisualStudioTemplateProjekte/templates.mspx" mce_href="http://www.microsoft.com/germany/msdn/knowhow/VisualStudioTemplateProjekte/templates.mspx"&gt;mymsdn&lt;/A&gt; site may take some time.&lt;/P&gt;
&lt;P&gt;Please remember that you may need to update some references to assemblies which are not included in the project such as the Unity or the Silverlight Toolkit.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9892469" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/astrauss/attachment/9892469.ashx" length="245114" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/astrauss/archive/tags/Programming+Tasks/default.aspx">Programming Tasks</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>The Music Industry – Your Dear Pals</title><link>http://blogs.msdn.com/astrauss/archive/2009/08/20/the-music-industry-your-dear-pals.aspx</link><pubDate>Thu, 20 Aug 2009 10:51:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9876567</guid><dc:creator>astrauss</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9876567.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9876567</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9876567</wfw:comment><description>&lt;p&gt;Due to some recent changes in licensing for &lt;a href="http://lyricwiki.org/Main_Page"&gt;LyricWiki&lt;/a&gt; to provide song lyrics via web service calls my famous &lt;a href="http://blogs.msdn.com/astrauss/archive/2009/06/09/the-viewmodel-pattern-in-silverlight-an-example.aspx"&gt;Radio GaGa&lt;/a&gt; Silverlight application does no more show lyrics of the selected songs. As said this is due to &lt;a href="http://groups.google.com/group/lyricwiki-api/browse_thread/thread/733ccd919d654040"&gt;some restrictions made by the music publishers&lt;/a&gt; and is neither my nor the fault of LyricWiki. While this is just a sample application it is not too much of a problem at all however I just wanted to make you aware of this. I’m reflecting now how I can change the application to still add some value. For example the web service still returns discographies and other artist/song related information.&lt;/p&gt;  &lt;p&gt;So if you have any ideas on how to pimp Radio GaGa I would appreciate if you’d leave a comment. Until then stay tuned and at least leave out one purchase of music to show the publishers that consumers still have a voice. Or better send them a note and tell them that they still don’t know how the internet works.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9876567" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Links/default.aspx">Links</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Web+2.0/default.aspx">Web 2.0</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Advisory/default.aspx">Advisory</category></item><item><title>Silverlight 3 Business Applications Made Easy</title><link>http://blogs.msdn.com/astrauss/archive/2009/08/20/silverlight-3-business-applications-made-easy.aspx</link><pubDate>Thu, 20 Aug 2009 10:39:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9876557</guid><dc:creator>astrauss</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9876557.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9876557</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9876557</wfw:comment><description>&lt;p&gt;&lt;a href="http://www.joergjooss.de/"&gt;Jörg&lt;/a&gt; an I created a new RIA Template and sample application for enterprise applications based on Silverlight 3 and the Silverlight Toolkit.&lt;/p&gt;  &lt;p&gt;This Visual Studio template and sample application provides a basic structure with sample code for an Enterprise RIA. The intention of providing this was to show how Microsoft Silverlight 3 can be used to create Rich Internet Applications (RIAs) in an enterprise environment. This means e.g. to effectively visualize enterprise data and provide functionalities which may allow to better work with and manipulate such data in comparison to traditional web applications. The focus when designing this template and sample was on the following two main subjects:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Make use of the latest Silverlight technology and Silverlight extensions such as the Silverlight Toolkit or the Silverlight port of the Unity container in order to get to working results as fast as possible while preserving a high level of quality. &lt;/li&gt;    &lt;li&gt;Design and implementation of the application following some proven architectural patterns and software development techniques in order to provide code that meets usual requirements in enterprise application development in order to provide a baseline that can be used to create own custom enterprise RIAs on top of it. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The sample application deals with financial data and stock trades. It exemplary implements certain aspects of visualizing of data which can be relevant and helpful while buying or selling stocks and managing accounts.&lt;/p&gt;  &lt;p&gt;The functionality of the sample application is best described using a screenshot of the application itself.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/c8958889e2d3_874B/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/c8958889e2d3_874B/image_thumb.png" width="677" height="447" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;RSS ticker with detail view using visual effects which are rendered with GPU hardware support &lt;/li&gt;    &lt;li&gt;Possibility to filter the available data via ComboBox (timeframes) and textbox (ticker symbol) &lt;/li&gt;    &lt;li&gt;Accounts are displayed and selectable in a TreeView control &lt;/li&gt;    &lt;li&gt;Scatter graph for clear display of transactions and transaction cluster (resolution is per day) &lt;/li&gt;    &lt;li&gt;Transaction nodes in the scatter diagram show the value of the transactions (or sum if its a transaction cluster) via mouse hover effect. A detail view is also available and is shown after clicking a node in the graph &lt;/li&gt;    &lt;li&gt;Line graph that shows all stocks in the account evaluated with the respective stock price at that day in order to visualize the overall account value which is explicitly shown when hovering over the line graph nodes &lt;/li&gt;    &lt;li&gt;Tabular view of the transactions in a certain timeframe or of a certain stock with detail view &lt;/li&gt;    &lt;li&gt;Tabular view of a stock ranking for the selected timeframe regarding their performance showing performance figures, highs and lows with the respective dates &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This template and sample application is based on&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://silverlight.net/getstarted/silverlight3/default.aspx"&gt;Microsoft Silverlight 3 Beta&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=Silverlight"&gt;Microsoft Silverlight Toolkit&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd362339.aspx"&gt;Microsoft Silverlight port of the Unity Container&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;and was developed using&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/de-de/vstudio/products/default.aspx"&gt;Microsoft Visual Studio 2008&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/expression/try-it/blendpreview.aspx"&gt;Microsoft Expression Blend 3 Preview&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=11dc7151-dbd6-4e39-878f-5081863cbb5d&amp;amp;displaylang=en"&gt;Microsoft Silverlight 3 Tools for Visual Studio&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The architecture of the application is, besides others based on the following patterns and techniques&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The ViewModel pattern (a MVC variant) to decouple the UI and the application logic as much as possible &lt;/li&gt;    &lt;li&gt;Comprehensive data binding via collections implementing the observer pattern. Therefore we were able to implement the sample without any references to UI components in the C# code &lt;/li&gt;    &lt;li&gt;Almost no use of custom events for notification &lt;/li&gt;    &lt;li&gt;Use of Unity a dependency injection container infrastructure which manages certain application components and services during their lifecycles and provides concrete instances of those artifacts when those are needed during runtime &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;More in depth and technical details to this implementation and techniques can probably found soon in theses blogs:&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://blogs.msdn.com/mtcmuc/default.aspx"&gt;Blog of the Microsoft Technology Center Munich&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://www.joergjooss.de/"&gt;Blog of Jörg Joos&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://blogs.msdn.com/astrauss/"&gt;Blog of Alexander Strauß&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The template and sample application can be found &lt;a href="http://www.microsoft.com/germany/msdn/knowhow/VisualStudioTemplateProjekte/templates.mspx"&gt;here on MyMSDN&lt;/a&gt; or just drop me a note. Due to some time constraints it is still based on Silverlight 3 Beta however we will provide a SL 3 release version pretty soon.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9876557" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Service+Orientation/default.aspx">Service Orientation</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Expression/default.aspx">Expression</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/User+Experience/default.aspx">User Experience</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Standards/default.aspx">Standards</category></item><item><title>Radio GaGa New Version And Live On Windows Azure</title><link>http://blogs.msdn.com/astrauss/archive/2009/07/13/radio-gaga-new-version-and-live-on-windows-azure.aspx</link><pubDate>Mon, 13 Jul 2009 14:19:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9831451</guid><dc:creator>astrauss</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9831451.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9831451</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9831451</wfw:comment><description>&lt;p&gt;I took some more time to enhance Radio GaGa, the sample application from my &lt;a href="http://blogs.msdn.com/astrauss/archive/2009/06/09/the-viewmodel-pattern-in-silverlight-an-example.aspx" target="_blank"&gt;last post&lt;/a&gt;. It now supports search, has a home button, artist paging functionality and an updated layout and was updated to work with the final Silverlight 3 runtime.&lt;/p&gt;  &lt;p&gt;And as I was evaluating the current &lt;a href="http://www.azure.com" target="_blank"&gt;Windows Azure SDK&lt;/a&gt; I thought it might be an interesting idea to deploy Radio GaGa onto the Azure Fabric as is. My guess was that it must be a straight forward process as this is a Silverlight only application that uses no Azure Services or resources besides the basic hosting. So I tried it and unlike some other tries where I thought everything should be quite easy and straight forward this time it really worked well. &lt;a href="http://radiogaga.cloudapp.net/" target="_blank"&gt;So here it is&lt;/a&gt;. Remember to get the &lt;a href="http://silverlight.net/GetStarted/" target="_blank"&gt;Silverlight 3 runtime&lt;/a&gt; in order to use the application.&lt;/p&gt;  &lt;p&gt;And as always if you would like to get the Source Code for this sample application feel free to contact me.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://radiogaga.cloudapp.net/" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Radio GaGa Link" border="0" alt="Radio GaGa Link" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/RadioGaGaNewVersionAndLiveOnWindowsAzure_BB44/RGaGa_3.jpg" width="244" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9831451" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Azure/default.aspx">Azure</category></item><item><title>The ViewModel Pattern in Silverlight – An Example</title><link>http://blogs.msdn.com/astrauss/archive/2009/06/09/the-viewmodel-pattern-in-silverlight-an-example.aspx</link><pubDate>Tue, 09 Jun 2009 18:25:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9716270</guid><dc:creator>astrauss</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9716270.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9716270</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9716270</wfw:comment><description>&lt;p&gt;During the last few weeks I was working with Silverlight again quite a bit. This meant I had to write some code for several showcase projects, too. Of course no real production code (beware) but nevertheless in the end the applications were doing what they were supposed to do. However as it usually happens in those cases you have to decide between a quick and dirty fire and forget kind of stumble into the programming of the app or to put some basic effort in planning and designing to have at least the basic rudiment of an application architecture. And although I’m in the role of architect evangelist I’m always tempted to start coding without big thinking right away. This time however we took some time and designed our applications so that we would have a nice separation between UI and application logic. In particular we chose a ViewModel approach which is quite common in the world of WPF and Silverlight. ViewModel stands for Model-View-ViewModel (MVV) and is a variation of the widely known Model-View-Controller (MVC) pattern. I won’t dig deep into the explanation of this patterns as they have been described in depth at many places already including &lt;a href="ttp://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx" target="_blank"&gt;John Gossman’s&lt;/a&gt; or &lt;a href="http://blogs.msdn.com/dphill/archive/2009/01/31/the-viewmodel-pattern.aspx" target="_blank"&gt;David Hill’s Blog&lt;/a&gt; for MVV or the &lt;a href="http://c2.com/cgi-bin/wiki?ModelViewController" target="_blank"&gt;Portland Pattern Repository&lt;/a&gt; for MVC. This said I want to focus on a short example driven walkthrough on how to create an Silverlight Application implementing the MVV pattern.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The example application allows to view songs and song lyrics of the current top artists listed on &lt;a href="http://www.lastfm.com" target="_blank"&gt;LastFM&lt;/a&gt;. In order to aggregate the data this small sample application already is a mash up of two different web services.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.lastfm.de/api/intro" target="_blank"&gt;&lt;strong&gt;LastFM REST web service&lt;/strong&gt;&lt;/a&gt; provides the list of top artists &lt;/li&gt;    &lt;li&gt;&lt;a href="http://lyricwiki.org/LyricWiki:REST" target="_blank"&gt;&lt;strong&gt;The LiyricsWiki REST web service&lt;/strong&gt;&lt;/a&gt; provides the lyrics for a particular song &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So in order to give you a high level impression of the application here is a simple architecture sketch.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TheViewModelPatterninSilverlightAnExampl_C61E/Architecture_4.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Architecture Sketch" border="0" alt="Architecture Sketch" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TheViewModelPatterninSilverlightAnExampl_C61E/Architecture_thumb_1.png" width="660" height="403" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The Visual Studio 2008 project is organized accordingly. To maintain the highest level of simplicity a service access layer has been omitted although this would be something you would probably want to consider in a real application development project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TheViewModelPatterninSilverlightAnExampl_C61E/ProjectStructure_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Project Structure" border="0" alt="Project Structure" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TheViewModelPatterninSilverlightAnExampl_C61E/ProjectStructure_thumb.png" width="244" height="209" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The folders contain the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Icons&lt;/strong&gt; contains the icons for the Silverlight 3 out-of-browser feature as I enabled OOB for this sample app however it is obviously not relevant for the ViewModel part &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Model&lt;/strong&gt; contains, well, the ViewModel class and any other class necessary to build the object model for this application. In this case those are classes like Artist and Track which mainly consist of private fields and the related public properties. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Views&lt;/strong&gt; contains the UI which in this sample is a single XAML page with it’s code behind &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Servicedata &lt;/strong&gt;contains some constant REST URIs for the services I call &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As this baseline structure could be already called something like a best practice for ViewModel projects one could use such a structure as a base template for such applications.&lt;/p&gt;  &lt;p&gt;Now let’s start with the meat of the application. The best way to start off with would probably be to create an empty ViewModel class stub which basically is a standard C# class stub. Next step could be to create something like a ViewModel Base class which enables change notification for properties of the ViewModel. This is absolutely helpful in order to have your views automatically updated when the properties change to which any UI Element is bound to.&lt;/p&gt;  &lt;p&gt;This would look something like this:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;abstract&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ViewModelBase : INotifyPropertyChanged&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnPropertyChanged(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; propertyName)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        PropertyChangedEventHandler handler = PropertyChanged;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (handler != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            handler(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PropertyChangedEventArgs(propertyName));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;So the ViewModel then extents this ViewModelBase class and instantly gains those notification capabilities when the OnPropertyChanged method is called in the setter of a property.&lt;/p&gt;

&lt;p&gt;The same requirement also exists for collections which are data bound however this is almost even easier as Silverlight (as well as WPF) comes with a special collection class which implements the &lt;a href="http://msdn.microsoft.com/en-us/library/ms954621.aspx" target="_blank"&gt;Observer pattern&lt;/a&gt; which of course is tightly related with any MVC pattern. This class is a generic collection class and is called &lt;a href="http://msdn.microsoft.com/en-us/library/ms668604(VS.95).aspx" target="_blank"&gt;ObservableCollection&amp;lt;T&amp;gt;&lt;/a&gt;. So with this knowledge we can start filling our ViewModel with life. For this sample this would look like the following up until now:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; RadioGaGaViewModel : RadioGaGa.Model.ViewModelBase&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; Fields&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; ObservableCollection&amp;lt;Artist&amp;gt; topArtists;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; ObservableCollection&amp;lt;Track&amp;gt; topTracks;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; currentLyrics = &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Empty; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; C'tor&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; RadioGaGaViewModel()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.topTracks = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;Track&amp;gt;();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.topArtists = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;Artist&amp;gt;();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        } &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; Properties&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; CurrentLyrics&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.currentLyrics; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            set&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.currentLyrics = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                OnPropertyChanged(&lt;span style="color: #006080"&gt;&amp;quot;CurrentLyrics&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ObservableCollection&amp;lt;Track&amp;gt; TopTracks&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.topTracks; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ObservableCollection&amp;lt;Artist&amp;gt; TopArtists&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.topArtists; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        } &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Now what we have to do next is to make the ViewModel available to the UI for data binding. This can be easily done by following this little sequence of tasks:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Register an event handler for the Loaded-Event of the UserControl in the XAML markup of the respective view. &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;UserControl&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    x:Class=&lt;span style="color: #006080"&gt;&amp;quot;RadioGaGa.MainPage&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    Loaded=&lt;span style="color: #006080"&gt;&amp;quot;OnMainPage_Loaded&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Create a handler method stub in the code behind file of the XAML page &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnMainPage_Loaded(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Instantiate a new ViewModel object &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnMainPage_Loaded(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            RadioGaGaViewModel model = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RadioGaGaViewModel();&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Create a public property which sets the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.datacontext(VS.95).aspx" target="_blank"&gt;DataContext&lt;/a&gt; for the UserControl &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; RadioGaGaViewModel ViewModel&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; DataContext &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; RadioGaGaViewModel; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            set { DataContext = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        } &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Set the property and assign the ViewModel instance you just created &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnMainPage_Loaded(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            RadioGaGaViewModel model = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RadioGaGaViewModel();&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            ViewModel = model;&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;After doing all this you can bind your the properties of your UI controls to the Properties of your ViewModel which are surfaced to the controls via the DataContext set on the top level &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement(VS.95).aspx" target="_blank"&gt;FrameworkElement&lt;/a&gt;. For example you could create a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.datatemplate(VS.95).aspx" target="_blank"&gt;DataTemplate&lt;/a&gt; for the items of a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox(VS.95).aspx" target="_blank"&gt;ListBox&lt;/a&gt; and could bind the respective properties like shown in the sample below.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Border&lt;/span&gt; &lt;span style="color: #ff0000"&gt;CornerRadius&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;BorderThickness&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;BorderBrush&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Black&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1,0,0,1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Padding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;MinWidth&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;320&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Border.Background&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;LinearGradientBrush&lt;/span&gt; &lt;span style="color: #ff0000"&gt;EndPoint&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0.5,1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;StartPoint&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0.5,0&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;GradientStop&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Color&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;#FFB2B2B2&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;GradientStop&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Color&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;#FFFFFFFF&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Offset&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;LinearGradientBrush&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Border.Background&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;55&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color: #ff0000"&gt;MaxWidth&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;40&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Orientation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Vertical&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;MaxWidth&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;40&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{Binding Path=Rank}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;12&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;FontWeight&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Bold&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Black&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TextAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Padding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;5,0,0,0&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Image&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Source&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{Binding Path=Images[0]}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;30&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;30&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Orientation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Vertical&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{Binding Path=Title}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;12&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;FontWeight&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Bold&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Black&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TextAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Padding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;5,0,0,0&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Orientation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Horizontal&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Artist:&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;12&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Black&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TextAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Padding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;5,0,0,0&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{Binding Path=Artist.ArtistName}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;12&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Black&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TextAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Padding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;5,0,0,0&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{Binding Path=Playcount}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;12&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Black&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TextAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Padding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;5,0,0,0&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Border&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And that’s basically all for creating a ViewModel pattern based architecture. Next step would be to implement the business logic that fills the ViewModel properties. In my case these are the calls to the different REST based web services, which of course are called asynchronously (also as Silverlight doesn’t support anything else) in order to still have an responsive UI while the services are accessed.&lt;/p&gt;

&lt;p&gt;For our sample the final result can be tested here: &lt;a title="http://www.level70.de/silverlight/RadioGaGa/RadioGaGa.html" href="http://www.level70.de/silverlight/RadioGaGa/RadioGaGa.html" target="_blank"&gt;http://www.level70.de/silverlight/RadioGaGa/RadioGaGa.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I already equipped my development machines with &lt;a href="http://silverlight.net/getstarted/silverlight3/default.aspx" target="_blank"&gt;Silverlight 3 Beta&lt;/a&gt; this only works with the SL3 Beta runtime. So if you are still on 2 you have to be content with this screenshot (pretty, eh? ;))&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TheViewModelPatterninSilverlightAnExampl_C61E/screenshot_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="screenshot" border="0" alt="screenshot" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TheViewModelPatterninSilverlightAnExampl_C61E/screenshot_thumb.png" width="625" height="484" /&gt;&lt;/a&gt; 

  &lt;br /&gt;

  &lt;br /&gt;The Visual Studio 2008/SL 3 Beta Tools solution can be downloaded from my &lt;a href="http://cid-fc4c1d115de62fd2.skydrive.live.com/self.aspx/%C3%96ffentlich/RadioGaGa.zip" target="_blank"&gt;SkyDrive&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I hope this all is helpful and easy to understand. As always feel free to send comments or corrections, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two more Sidenotes:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;LyricsWiki also offers a SOAP web service however I was not able to use it with Silverlight when letting Visual Studio generate the service proxy (with svcutil for Silverlight probably). So I switched to the REST based version &lt;/li&gt;

  &lt;li&gt;This project can quite easily be migrated to WPF and vice versa. I’ve done this two time due to the fact mentioned in &amp;lt;1&amp;gt; because I wasn’t aware of the REST interface in the beginning. This shows that WPF and Silverlight get closer and closer with their features and APIs so that a develop once run everywhere scenario will become more and more feasible. 
    &lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;/p&gt;

&lt;table class="class" border="0" cellspacing="0" cellpadding="2" width="600"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td class="class" width="70"&gt;&lt;a href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2009/06/09/the-viewmodel-pattern-in-silverlight-an-example.aspx" mce_href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2009/06/09/the-viewmodel-pattern-in-silverlight-an-example.aspx"&gt;&lt;img src="http://digg.com/img/digg-it-tiny.gif" mce_src="http://digg.com/img/digg-it-tiny.gif" /&gt;&lt;/a&gt;&lt;/td&gt;

      &lt;td class="class" width="190"&gt;&lt;img alt="Delicious" src="http://static.delicious.com/img/delicious.small.gif" width="15" height="15" /&gt;&lt;a style="font-size: 8pt" onclick="window.open(&amp;#39;http://delicious.com/save?v=5&amp;amp;noui&amp;amp;jump=close&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title), &amp;#39;delicious&amp;#39;,&amp;#39;toolbar=no,width=550,height=550&amp;#39;); return false;" href="http://delicious.com/save"&gt;Bookmark this on Delicious&lt;/a&gt;&lt;/td&gt;

      &lt;td class="class" width="150"&gt;&lt;SCRIPT&gt;




function fbs_click() {u=location.href;t=document.title;window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');return false;}&lt;/SCRIPT&gt;&lt;style&gt;






html .fb_share_button {
	border-right: #d8dfea 1px solid; padding-right: 20px; border-top: #d8dfea 1px solid; display: inline-block; padding-left: 5px; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) no-repeat right top; padding-bottom: 0px; border-left: #d8dfea 1px solid; padding-top: 1px; border-bottom: #d8dfea 1px solid; height: 15px
}
html .fb_share_button:hover {
	border-left-color: #295582; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) #3b5998 no-repeat right top; border-bottom-color: #295582; color: #fff; border-top-color: #295582; text-decoration: none; border-right-color: #295582
}&lt;/style&gt;&lt;a style="text-decoration: none" class="fb_share_button" onclick="return fbs_click()" href="http://www.facebook.com/share.php?u=&amp;lt;url&amp;gt;" rel="nofollow" target="_blank"&gt;Share&lt;/a&gt;&lt;/td&gt;

      &lt;td class="class" width="150"&gt;&amp;#160;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9716270" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Programming+Tasks/default.aspx">Programming Tasks</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Physics, Silverlight and Visualization…Update!</title><link>http://blogs.msdn.com/astrauss/archive/2009/06/08/physics-silverlight-and-visualization-update.aspx</link><pubDate>Mon, 08 Jun 2009 13:40:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9707886</guid><dc:creator>astrauss</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9707886.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9707886</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9707886</wfw:comment><description>&lt;p&gt;Due to quite some unexpected demand for the sources of the knowledge management showcase published in &lt;a href="http://blogs.msdn.com/astrauss/archive/2007/11/15/physics-silverlight-and-visualization-how-can-businesses-profit.aspx" target="_blank"&gt;this blogpost&lt;/a&gt; even now almost 2 years after the initial post I took some short time and updated the solution. So now should at least rudimentary work with Silverlight 2 and 3 Beta.&lt;/p&gt;  &lt;p&gt;Unfortunately I had to strip out dragging support because I was constantly experiencing System.Argument.Exceptions when calling the MouseEventArgs.GetPosition() method and didn’t want to invest to much time into debugging.&lt;/p&gt;  &lt;p&gt;So for me the solution basically works including the HTML-Search Button that calls into the Silverlight application however there is still no optimized or well documented code. It was and still is a quick hack and only should demonstrate how to innovatively visualize dry business content. So use at your own risk and feel free to send me comments or optimized versions. ;)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cid-fc4c1d115de62fd2.skydrive.live.com/self.aspx/%c3%96ffentlich/SLVisualizer.zip" target="_blank"&gt;You can download the solution here.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9707886" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/User+Experience/default.aspx">User Experience</category></item><item><title>Short Gotcha When Working With Extent Initialization In ‘M’</title><link>http://blogs.msdn.com/astrauss/archive/2009/04/07/short-gotcha-when-working-with-extent-initialization-in-m.aspx</link><pubDate>Tue, 07 Apr 2009 12:15:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9535599</guid><dc:creator>astrauss</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9535599.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9535599</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9535599</wfw:comment><description>&lt;p&gt;Not just in order to show that this Blog is still alive but also because it may be a little useful hint for all of you doing the first steps with M, the language of the &lt;a href="http://msdn.microsoft.com/en-us/oslo/default.aspx" target="_blank"&gt;Oslo Developer Center&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;As you might already know you can create data models with M which are parsed and transformed into &lt;a href="http://msdn.microsoft.com/en-us/library/ms189826.aspx" target="_blank"&gt;T-SQL Reference&lt;/a&gt; by the M-Parser.&lt;/p&gt;  &lt;p&gt;Not only can you define Types &amp;amp; Values but can also assign a storage container for the defined types. Depending on the Grammar used to translate the M-File it is transformed in something that provides real storage e.g. a table in a relational database.&lt;/p&gt;  &lt;p&gt;In the following snippet the extent definition is marked in red. &lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;module MyModule {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    type OrderItem {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        Description : Text;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        Quantity : Integer32;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;font color="#ff0000"&gt;&lt;strong&gt;OrderItems : OrderItem*;&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;In the sample above M does not care about how the storage is physically populated. In case of using the T-SQL variant this line would only create the table but wouldn’t insert any items (which is absolutely comprehensible behavior). However sometimes it could make sense to also initialize the storage with some values. And therefore M supports what is called extent initialization. And this works for all types supported by M and the respective data store.&lt;/p&gt;

&lt;p&gt;So you could easily define an extent initalizer for the following type.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;type Task&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        Id:Integer32 = AutoNumber();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        Name:Text;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        DueDate:DateTime?;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        Owner:Text;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;} &lt;span class="kwrd"&gt;where&lt;/span&gt; identity Id;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;However if you wonder what format to use for the DueDate field and stumble across the example documented in this &lt;a href="http://msdn.microsoft.com/en-us/library/dd185392(VS.85).aspx" target="_blank"&gt;MSDN documentation&lt;/a&gt; you will probably end up with an error message like shown in the screenshot below.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ShortGotchawhenworkingwithextentinitiali_934B/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ShortGotchawhenworkingwithextentinitiali_934B/image_thumb_1.png" width="644" height="433" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The issue here is that DateTime is specified following the following lexical structures for Date &amp;amp; DateTime literals.&lt;/p&gt;

&lt;table border="0" cellspacing="0" cellpadding="2" width="550"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style="background: #c0c0c0" valign="top" width="548"&gt;
        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;Date literals are used to write a date independent of a specific time of day.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;DateLiteral:&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Signopt&amp;#160; DateYear&amp;#160; -&amp;#160; DateMonth&amp;#160; -&amp;#160; DateDay&amp;#160; &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;The tokens of a DateLiteral must not have whitespace.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;DateDay: one of&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 01&amp;#160; 02&amp;#160; 03&amp;#160; 04&amp;#160; 05&amp;#160; 06&amp;#160; 07&amp;#160; 08&amp;#160; 09&amp;#160; 10&amp;#160; 11&amp;#160; 12&amp;#160; 13&amp;#160; 14&amp;#160; 15&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 16&amp;#160; 17&amp;#160; 18&amp;#160; 19&amp;#160; 20&amp;#160; 21&amp;#160; 22&amp;#160; 23&amp;#160; 24&amp;#160; 25&amp;#160; 26&amp;#160; 27&amp;#160; 28&amp;#160; 29&amp;#160; 30&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 31&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;DateMonth: one of&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 01&amp;#160; 02&amp;#160; 03&amp;#160; 04&amp;#160; 05&amp;#160; 06&amp;#160; 07&amp;#160; 08&amp;#160; 09&amp;#160; 10&amp;#160; 11&amp;#160; 12&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;DateYear:&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DecimalDigit&amp;#160; DecimalDigit&amp;#160; DecimalDigit&amp;#160; DecimalDigit&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;&lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So the cause for the error is obvious as there is the sample only states a single digit for &lt;em&gt;&lt;font color="#0000ff" face="Courier New"&gt;DateDay&lt;/font&gt;&lt;/em&gt;. So changing this to a double digit variant will resolve this issue. The complete lexical structure of M can be found in the &lt;a href="http://msdn.microsoft.com/de-de/library/dd285272(en-us).aspx" target="_blank"&gt;MSDN&lt;/a&gt; library as well.&lt;/p&gt;

&lt;p&gt;If you want to know more about ‘Oslo’ and ‘M’ check out the &lt;a href="http://msdn.microsoft.com/de-de/library/dd285272(en-us).aspx" target="_blank"&gt;MSDN Developer Center&lt;/a&gt; and visit the blogs of &lt;a href="http://www.douglasp.com/" target="_blank"&gt;Douglas Purdy&lt;/a&gt; and the &lt;a href="http://blogs.msdn.com/Intellipad/" target="_blank"&gt;Intellipad Team&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9535599" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/S_2B00_S/default.aspx">S+S</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Oslo/default.aspx">Oslo</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/DSL/default.aspx">DSL</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/M/default.aspx">M</category></item><item><title>Building a Visual Search Service for IE8 with WCF - Part V</title><link>http://blogs.msdn.com/astrauss/archive/2009/01/15/building-a-visual-search-service-for-ie8-with-wcf-part-v.aspx</link><pubDate>Thu, 15 Jan 2009 18:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9321014</guid><dc:creator>astrauss</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9321014.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9321014</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9321014</wfw:comment><description>&lt;p&gt;With some delay here is the final part of the series on how to implement a IE8 Visual Search Service using WCF. In this last part I will deal with the small bits which are still open in order to be able to deploy a full functioning Visual Search service and those are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Simple caching mechanism &lt;/li&gt;    &lt;li&gt;&amp;quot;Spambreak&amp;quot; to control the number of requests that are processed &lt;/li&gt;    &lt;li&gt;WCF Configuration &lt;/li&gt;    &lt;li&gt;Visual Search Configuration XML &lt;/li&gt;    &lt;li&gt;Webpage for adding the service to the IE search provider list &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Implementing a simple caching mechanism&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;As already mentioned quite a few times performance is critical for a Visual Search service in order to get acceptance by the users so it is opportune to use some kind of caching mechanism. In order to follow the K.I.S.S principle I didn't want to implement a highly sophisticated caching mechanism on my own so I simply use the caching application block which is one of the components of the &lt;a href="http://www.codeplex.com/entlib"&gt;Enterprise Library&lt;/a&gt; created and published by &lt;a href="http://msdn.microsoft.com/en-us/practices/default.aspx"&gt;Microsoft Patterns &amp;amp; Practices&lt;/a&gt;. The caching block allows you to integrate very effective, configurable and extendable local cache into your application. Information about the features and how it can be used is documented in the &lt;a href="http://msdn.microsoft.com/en-us/library/cc467894.aspx"&gt;MSDN documentation&lt;/a&gt;. For my Visual Search service I used the simplest approach on using the cache. So it is an in-memory cache that simply adds search results as cache entries with the query string as their key. The overall simple (cache)-flow ;-) in the service is outlined in the figure below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_94E3/cache_flow_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="489" alt="cache_flow" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_94E3/cache_flow_thumb.jpg" width="369" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The relevant code portions are minimal.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;b&gt;The initialization&amp;#160; &lt;br /&gt;        &lt;br /&gt;&lt;/b&gt;&lt;font color="#04a9b7"&gt;ICacheManager &lt;/font&gt;&lt;i&gt;searchResultCache = &lt;font color="#04a9b7"&gt;CacheFactory&lt;/font&gt;.GetCacheManager(&lt;font color="#a31515"&gt;&amp;quot;Cache Manager&amp;quot;&lt;/font&gt;);         &lt;br /&gt;&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;The check        &lt;br /&gt;        &lt;br /&gt;&lt;/b&gt;&lt;i&gt;&lt;font color="#0000ff"&gt;private bool&lt;/font&gt; CheckCache(&lt;font color="#0000ff"&gt;string&lt;/font&gt; query)         &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;return&lt;/font&gt; searchResultCache.Contains(query);         &lt;br /&gt;}         &lt;br /&gt;&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;The retrieval        &lt;br /&gt;        &lt;br /&gt;&lt;/b&gt;&lt;i&gt;sI = (&lt;font color="#04a9b7"&gt;SearchItem&lt;/font&gt;)searchResultCache.GetData(query);&lt;/i&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;The addition        &lt;br /&gt;        &lt;br /&gt;&lt;/b&gt;&lt;i&gt;searchResultCache.Add(query, sI, &lt;font color="#04a9b7"&gt;CacheItemPriority&lt;/font&gt;.High, &lt;font color="#0000ff"&gt;null&lt;/font&gt;, &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#04a9b7"&gt;SlidingTime&lt;/font&gt;(&lt;font color="#04a9b7"&gt;TimeSpan&lt;/font&gt;.FromMinutes(30)));&lt;/i&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Of course you need to be aware of the concurrency mode in which the service performs when dealing with the cache. There are two categories to take care of:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Instancing      &lt;br /&gt;      &lt;br /&gt;For a service like this the instancing behavior should be set to single as this ensures that there is only one instance of the service and thus for the cache which then ensures that all requests are validated against the same set of cached items. So I set the &lt;font color="#04a9b7"&gt;&lt;i&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.instancecontextmode.aspx"&gt;InstanceContextMode&lt;/a&gt;&lt;/i&gt;&lt;/font&gt; to single.       &lt;br /&gt;However if you are implementing a high scale service you need consider a slightly different approach and will probably have multiple instances that access an distributed cache or at least you will have a backing store ore some kind of replication mechanism that replicates the cache across multiple physical nodes.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Concurrency      &lt;br /&gt;      &lt;br /&gt;For concurrency the most reasonable setting is probably to allow the single service instance to deal with multiple requests at a time because otherwise we would introduce significant performance constraints. This however requires that the service itself is thread safe which is not an easy task to acomplish. So for simplicity, rapid development and testing reasons I initially set the &lt;font color="#04a9b7"&gt;&lt;i&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.concurrencymode.aspx"&gt;ConcurrencyMode&lt;/a&gt;&lt;/i&gt;&lt;/font&gt; also to single. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;More about this topic can be found on &lt;a href="http://msdn.microsoft.com/en-us/library/ms731193.aspx" target="_blank"&gt;MSDN&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;quot;Spambreak&amp;quot; to control the number of requests that are processed&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;As unlimited resources in terms of scaling and workload are rarely available there may be the need to limit the number of incoming requests to a sensible amount. One good measure is to check the length of the search query. In many cases it doesn't make sense to retrieve results for a single letter or number. Therefore it could be useful to only cycle through the complete search process when the query string has passes a given threshold (e.g. 3 letters). If the length is below the threshold you can simply return a static default result which could significantly boost performance.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;WCF Configuration&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Every WCF service needs a configuration. Although configuration could completely happen in code it is handier most of the times to declaratively configure the service with an XML configuration. As we are using the Internet Information server as our service host we can include the service configuration details into the &lt;i&gt;Web.config&lt;/i&gt; file and can edit it with the WCF Configuration Editor included in Visual Studio 2008 (see figure).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_94E3/WCF_Config_Editor_s.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="427" alt="WCF_Config_Editor_s" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_94E3/WCF_Config_Editor_s_thumb.jpg" width="588" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As we create a restful service we need to create an rest endpoint and use the respective binding. In my case I created the configuration with the endpoint and associated binding and behavior attributes completely myself however there is also the possibility to use the Factory attribute of the &lt;a href="http://msdn.microsoft.com/en-us/library/aa967286.aspx" target="_blank"&gt;ServiceHost&lt;/a&gt; directive.&lt;/p&gt;  &lt;p&gt;For the Visual Search service I need to define an endpoint which in my case defaults to the default adress. Then we need to configure this endpoint with an webHttpBinding so that the service is exposed via HTTP requests and not via SOAP messages. Finally in order to allow clients to communicate via HTTP request we must attach the WebHttpBehavior to the endpoint. So the complete service configuration for the REST endpoint looks as follows.&lt;/p&gt; &lt;span id="PreviewBody"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;system.serviceModel&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;        &lt;br /&gt;&amp;#160;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;bindings&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;        &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;webHttpBinding&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;binding&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;name&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;myRestfulBinding&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;          &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;webHttpBinding&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;        &lt;br /&gt;&amp;#160;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;bindings&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;        &lt;br /&gt;&amp;#160;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;services&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;        &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;service&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;behaviorConfiguration&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;VideoVSearchAggregator.VideoVisualSearchServiceBehavior&lt;/span&gt;&amp;quot;         &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;name&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;VideoVSearchAggregator.VideoVisualSearchService&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;endpoint &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;address&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&amp;quot;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;behaviorConfiguration&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;myRestfulBehaviour&lt;/span&gt;&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;binding&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;webHttpBinding&lt;/span&gt;&amp;quot;&amp;#160; &lt;br /&gt;&amp;#160;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;bindingConfiguration&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;myRestfulBinding&lt;/span&gt;&amp;quot;&amp;#160; &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;name&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;VisualVSearchAggregatorRestEndpoint&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;contract&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;VideoVSearchAggregator.IVideoVisualSearchService&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;service&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;        &lt;br /&gt;&amp;#160;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;services&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;behaviors&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;endpointBehaviors&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;behavior&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;name&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;myRestfulBehaviour&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;webHttp&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; /&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&lt;span&gt;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;behavior&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;endpointBehaviors&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;serviceBehaviors&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;behavior&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;name&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;VideoVSearchAggregator.VideoVisualSearchServiceBehavior&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;serviceMetadata&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;httpGetEnabled&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;serviceDebug&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;includeExceptionDetailInFaults&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&lt;span&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;behavior&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;behaviors&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue; line-height: 115%" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 8pt; color: rgb(163,21,21); line-height: 115%" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;system.serviceModel&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue; line-height: 115%" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 9pt; line-height: 115%"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;One thing to be aware of is the fact that your service itself opens HTTP connections via the SearchControllers so therefore if you deploy the service in an environment that uses a proxy server for outgoing requests you need to configure your environment respectively. For an IIS hosted WCF Service you can add the following elements to the Web.config.&lt;/p&gt;   &lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;system.net&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;      &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;defaultProxy &lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;enabled&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;proxy&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;bypassonlocal&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot; &lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;proxyaddress&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;lt;proxy&amp;gt;&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;        &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;defaultProxy&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;      &lt;br /&gt;&amp;#160;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;/&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;system.net&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;&lt;/span&gt;     &lt;p&gt;&lt;b&gt;Visual Search Configuration XML&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;In order to let people register the Visual Search service with their Internet Explorer it is necessary to create a XML search configuration that is published via a simple link in a hosting webpage. To create the configuration for a service it's best to follow the documentation on &lt;a href="http://msdn.microsoft.com/en-us/library/cc848862%28VS.85%29.aspx" target="_blank"&gt;MSDN&lt;/a&gt;. My configuration looks like this:&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;?&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;xml&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;version&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;UTF-8&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;?&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;OpenSearchDescription&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;xmlns&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;http://a9.com/-/spec/opensearch/1.1/&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;ShortName&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;Video Meta Search&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ShortName&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;Description&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;Online videos from many sources at on glance&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;Url&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;type&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;text/html&lt;/span&gt;&amp;quot; &lt;span style="color: blue"&gt;&lt;a href="http://(host)/VSearch/VideoVisualSearchService.svc/Search?query={searchTerms}"&gt;&lt;span style="color: red"&gt;template&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;a href="http://(host)/VSearch/VideoVisualSearchService.svc/Search?query={searchTerms}" ?="?"&gt;http://(host)/VSearch/VideoVisualSearchService.svc/Search?query={searchTerms}&lt;/a&gt;&amp;quot;&lt;span style="color: blue"&gt;/&lt;/span&gt;&amp;gt;&lt;/a&gt;&lt;/a&gt;          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;Url&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;type&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;application/x-suggestions+xml&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;template&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;&lt;a href="http://(host)/VSearch/VideoVisualSearchService.svc/Search?query={searchTerms}" ?="?"&gt;http://(host)/VSearch/VideoVisualSearchService.svc/Search?query={searchTerms}&lt;/a&gt;&amp;quot;&lt;span style="color: blue"&gt;/&lt;/span&gt;&amp;gt;           &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;Image&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: red" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;height&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" en-us;="EN-US;"&gt;&amp;quot;&lt;span style="color: blue"&gt;16&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;width&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;16&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;image/icon&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;http://(host)/VSearch/images/VideoMetaSearch.ico&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Image&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;OpenSearchDescription&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue" courier="courier" yes?="yes?" mso-no-proof:="mso-no-proof:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;"&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Webpage for adding the service to the IE search provider list&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Well and finally we need to add a link to a webpage that lets the user register the search service. This can be achieved by calling the IE8 AddSearchProvider function. The function takes the URL to the XML configuration as a parameter. So in my case the call would look something like this:&lt;/p&gt;    &lt;p&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue" courier="courier" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" mso-bidi-language:="mso-bidi-language:" mso-fareast-language:="mso-fareast-language:" minor-latin;="minor-latin;" mso-fareast-theme-font:="mso-fareast-theme-font:" mso-fareast-font-family:="mso-fareast-font-family:" yes;="yes;" en-us;="EN-US;" calibri;="Calibri;" ar-sa?="AR-SA?"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: rgb(163,21,21)" courier="courier" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" mso-bidi-language:="mso-bidi-language:" mso-fareast-language:="mso-fareast-language:" minor-latin;="minor-latin;" mso-fareast-theme-font:="mso-fareast-theme-font:" mso-fareast-font-family:="mso-fareast-font-family:" yes;="yes;" en-us;="EN-US;" calibri;="Calibri;" ar-sa?="AR-SA?"&gt;input&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt" courier="courier" mso-no-proof:="mso-no-proof:" mso-ansi-language:="mso-ansi-language:" 10.0pt;="10.0pt;" mso-bidi-font-size:="mso-bidi-font-size:" new?;="new?;" mso-bidi-language:="mso-bidi-language:" mso-fareast-language:="mso-fareast-language:" minor-latin;="minor-latin;" mso-fareast-theme-font:="mso-fareast-theme-font:" mso-fareast-font-family:="mso-fareast-font-family:" yes;="yes;" en-us;="EN-US;" calibri;="Calibri;" ar-sa?="AR-SA?"&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Add Search Provider&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;onclick&lt;/span&gt;&lt;span style="color: blue"&gt;='window.external.AddSearchProvider(&amp;quot;http://&amp;lt;host&amp;gt;/VSearch/XML/VideoVSearchAggregator.xml&amp;quot;);'/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;After that you are ready to go! Hope you enjoyed the series and found some of the information helpful. The code for my project is attached to this post.&lt;/p&gt; &lt;/span&gt;  &lt;p&gt;&lt;b&gt;Reference:&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx" target="_blank" mce_href="http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx"&gt;Building a Visual Search Service for IE8 with WCF - Part I&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx" target="_blank" mce_href="http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx"&gt;Building a Visual Search Service for IE8 with WCF - Part II&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/astrauss/archive/2008/11/26/building-a-visual-search-service-for-ie8-with-wcf-part-iii.aspx" target="_blank" mce_href="http://blogs.msdn.com/astrauss/archive/2008/11/26/building-a-visual-search-service-for-ie8-with-wcf-part-iii.aspx"&gt;Building a Visual Search Service for IE8 with WCF - Part III&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/astrauss/archive/2008/12/16/building-a-visual-search-service-for-ie8-with-wcf-part-iv.aspx" target="_blank"&gt;Building a Visual Search Service for IE8 with WCF - Part IV&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As I started early with this series and lost momentum and therefore needed almost 3 months to finish there was the change to finish with similar projects earlier than me. So I have to give some Kudos to &lt;b&gt;Guy Burstein&lt;/b&gt;, who already posted a &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/12/17/building-an-ie8-visual-search-suggestion-provider-for-my-twitter-friends.aspx" target="_blank"&gt;blogpost&lt;/a&gt; covering almost the same topic - Congrats ;).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table class="class" cellspacing="0" cellpadding="2" width="600" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td class="class" width="70"&gt;&lt;a href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2009/01/15/building-a-visual-search-service-for-ie8-with-wcf-part-v.aspx" mce_href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2009/01/15/building-a-visual-search-service-for-ie8-with-wcf-part-v.aspx"&gt;&lt;img src="http://digg.com/img/digg-it-tiny.gif" mce_src="http://digg.com/img/digg-it-tiny.gif" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td class="class" width="190"&gt;&lt;img height="15" alt="Delicious" src="http://static.delicious.com/img/delicious.small.gif" width="15" /&gt;&lt;a style="font-size: 8pt" onclick="window.open(&amp;#39;http://delicious.com/save?v=5&amp;amp;noui&amp;amp;jump=close&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title), &amp;#39;delicious&amp;#39;,&amp;#39;toolbar=no,width=550,height=550&amp;#39;); return false;" href="http://delicious.com/save"&gt;Bookmark this on Delicious&lt;/a&gt;&lt;/td&gt;        &lt;td class="class" width="150"&gt;&lt;script&gt;




function fbs_click() {u=location.href;t=document.title;window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');return false;}&lt;/script&gt;&lt;style&gt;



html .fb_share_button {
	border-right: #d8dfea 1px solid; padding-right: 20px; border-top: #d8dfea 1px solid; display: inline-block; padding-left: 5px; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) no-repeat right top; padding-bottom: 0px; border-left: #d8dfea 1px solid; padding-top: 1px; border-bottom: #d8dfea 1px solid; height: 15px
}
html .fb_share_button:hover {
	border-left-color: #295582; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) #3b5998 no-repeat right top; border-bottom-color: #295582; color: #fff; border-top-color: #295582; text-decoration: none; border-right-color: #295582
}&lt;/style&gt;&lt;a class="fb_share_button" style="text-decoration: none" onclick="return fbs_click()" href="http://www.facebook.com/share.php?u=%3Curl%3E" target="_blank" rel="nofollow"&gt;Share&lt;/a&gt;&lt;/td&gt;        &lt;td class="class" width="150"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9321014" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/astrauss/attachment/9321014.ashx" length="434794" type="application/x-zip" /><category domain="http://blogs.msdn.com/astrauss/archive/tags/Service+Orientation/default.aspx">Service Orientation</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/.Net+3.0/default.aspx">.Net 3.0</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/ASP.Net/default.aspx">ASP.Net</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Internet+Explorer+8/default.aspx">Internet Explorer 8</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>Using IE8 Beta2 IEAK with RC1 Bits</title><link>http://blogs.msdn.com/astrauss/archive/2009/01/15/using-ie8-beta2-ieak-with-rc1-bits.aspx</link><pubDate>Thu, 15 Jan 2009 12:29:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9320416</guid><dc:creator>astrauss</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9320416.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9320416</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9320416</wfw:comment><description>&lt;p&gt;The release of Internet Explorer 8 RC1 is just around the corner and fortunately there is a significant number of people and organization that want to release their own customized version of IE8. Luckily Microsoft publishes a tool that can let you easily customize IE8. The tool is called the Internet Explorer Administration Kit (IEAK) and its freely available. There are already quite a few blog posts about the tool itself so I don't want to rephrase all that if you are new to IEAK just go to the &lt;a href="http://blogs.msdn.com/ie"&gt;IEBlog&lt;/a&gt; and read the &lt;a href="http://blogs.msdn.com/ie/archive/2008/09/22/the-ie8-ieak.aspx"&gt;post by Jatinder Mann&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The current published version of the IEAK is the Beta 2 version that corresponds to the exact same version of IE8. So in order to prepare your customized IE8 package with RC1 bits for those that already have access to the IE8 builds &amp;gt; Beta2 there is no corresponding IEAK to those builds. However there is an easy workaround to use the Beta 2 IEAK with the newer bits. Just follow those 3 simple steps and you are done.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Rename the IE8 RC1 setup executable to IE-REDIST.EXE&lt;/li&gt;    &lt;li&gt;Backup the original IE8 binaries used by the IEAK (usually in %ProgramFiles%\Microsoft IEAK8\Download\&amp;lt;Platform&amp;gt;\&amp;lt;Locale&amp;gt;\iebin\) and overwrite it with the newer file renamed in step 1. If you use IEAK for the first time the path and files may not exist so you need to start the IEAK wizard once and let it create the path and download the contents.&lt;/li&gt;    &lt;li&gt;Start and use the IEAK wizard as usual and create your customized IE8&lt;/li&gt; &lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9320416" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Internet+Explorer+8/default.aspx">Internet Explorer 8</category></item><item><title>Building a Visual Search Service for IE8 with WCF - Part IV</title><link>http://blogs.msdn.com/astrauss/archive/2008/12/16/building-a-visual-search-service-for-ie8-with-wcf-part-iv.aspx</link><pubDate>Tue, 16 Dec 2008 18:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9226213</guid><dc:creator>astrauss</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9226213.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9226213</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9226213</wfw:comment><description>&lt;P&gt;Well I have to hurry up a bit as I initially planned to have this series finished even a while ago and now I'm even struggling to finish it until the end of the year. Anyway here is the next part and as promised this time I will focus on the search providers which feed the aggregator component with their content. As already mentioned since there are not many video portals that publish APIs I limited the search and implemented two providers which is however probably enough for demonstration purposes.&lt;/P&gt;
&lt;P&gt;In order to live a bit of separation I first created a real simple interface which of course also describes the what the implementing search controllers can do. Since there is only one specific task the search controllers have to do is to fill a &lt;EM&gt;Section&lt;/EM&gt; object which simply contains an &lt;A href="http://msdn.microsoft.com/en-us/library/9b9dty7d.aspx" target=_blank&gt;&lt;EM&gt;array&lt;/EM&gt;&lt;/A&gt; of objects. The interface itself is quite simple and contains only one method signature &lt;EM&gt;DoSearch(object obj)&lt;/EM&gt; which takes an object as a parameter. Although in all cases the object that is filled is a &lt;EM&gt;Section&lt;/EM&gt; object I needed to parameterize it with &lt;A href="http://social.msdn.microsoft.com/Search/en-US/?query=object&amp;amp;ac=8" target=_blank&gt;object&lt;/A&gt; because I use a threaded model for executing the searches with a &lt;A href="http://msdn.microsoft.com/en-us/library/system.threading.parameterizedthreadstart.aspx" target=_blank&gt;&lt;EM&gt;ParameterizedThreadStart&lt;/EM&gt;&lt;/A&gt; which unfortunately doesn't allow to pass on data to the thread procedure in a type-safe way. Alternatively I could have encapsulated the threaded calls to &lt;EM&gt;DoSearch()&lt;/EM&gt; into a helper object which I would have initialized with the Section object to be filled by this thread however I didn't design the service in such a fine granular type-safe manner although it would have been relatively easy. If anybody follows the section and does his own implementation or variation the mentioned variant is described &lt;A href="http://msdn.microsoft.com/en-us/library/ts553s52.aspx" target=_blank&gt;here&lt;/A&gt;. In any way here is the interface definition for the search controllers:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;interface&lt;/FONT&gt; &lt;FONT color=#04a9b7&gt;ISearchController&lt;/FONT&gt; &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; DoSearch(&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; obj); &lt;BR&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;And here is the Section class which contains the results of the search:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;[System.&lt;FONT color=#04a9b7&gt;Serializable&lt;/FONT&gt;] &lt;BR&gt;&amp;nbsp;&lt;FONT color=#0000ff&gt;public class&lt;/FONT&gt; &lt;FONT color=#04a9b7&gt;Section&lt;/FONT&gt; &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;FONT color=#04a9b7&gt;XmlElement]&lt;/FONT&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public object[]&lt;/FONT&gt; items { &lt;FONT color=#0000ff&gt;get; set;&lt;/FONT&gt; } &lt;BR&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Now that I created the interface I was finally able to start with the implementation of the SearchControllers for the different providers.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;YouTubeSearchController &lt;BR&gt;&lt;BR&gt;For the YouTube search I used the &lt;A href="http://code.google.com/intl/en-US/apis/youtube/2.0/developers_guide_dotnet.html" target=_blank&gt;.Net Client Library&lt;/A&gt; which is a library that exposes the &lt;A href="http://code.google.com/intl/en-US/apis/youtube/getting_started.html#data_api" target=_blank&gt;YouTube data API&lt;/A&gt; through a handy .Net object model which of course makes it really easy to perform searches and retrieve relevant content. Above that the API allows for some tweaking. For example I set the &lt;EM&gt;YouTubeQuery.NumberToRetrieve&lt;/EM&gt; property to 5 as we don't need more because the number of results displayed by the VisualSearch window is limited and we want to display results from the other sources as well. So in order to create as little overhead as possible it is probably very sensible to limit the number of results. &lt;BR&gt;In order to be able to use the API you need a Google account need to &lt;A href="https://www.google.com/accounts/ServiceLogin?service=youtubepartnersyn&amp;amp;passive=true&amp;amp;nui=1&amp;amp;continue=http%3A%2F%2Fcode.google.com%2Fapis%2Fyoutube%2Fdashboard%2F&amp;amp;followup=http%3A%2F%2Fcode.google.com%2Fapis%2Fyoutube%2Fdashboard%2F" target=_blank&gt;register&lt;/A&gt; for a developer key and need to specify a name for your application in which you use the API. &lt;BR&gt;&lt;BR&gt;The search specific code in my YouTubeSearchController is outlined here: &lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; DoSearch(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt; youTubeSection) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;{ &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; try &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;this&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;.youTubeSection = (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Section&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;)youTubeSection; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;YouTubeService&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; service = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;YouTubeService&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"&amp;lt;Your Application Name&amp;gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;YouTubeQuery&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; query = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;YouTubeQuery&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;YouTubeQuery&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.DefaultVideoUri); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;query.OrderBy = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"viewCount"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;query.Racy = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"exclude"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;query.VQ = searchquery; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;query.NumberToRetrieve = 5; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;EM&gt;YouTubeFeed&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt; videoFeed = service.Query(query); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;.youTubeSection.items = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;[videoFeed.Entries.Count + 1]; &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Separator&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; youtubeSeparator = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Separator&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; youtubeSeparator.title = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"Videos On YouTube"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;.youTubeSection.items[0] = youtubeSeparator; &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;YouTubeEntry&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; entry &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt; videoFeed.Entries) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;SectionItem&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; secI = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;SectionItem&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (!&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.IsNullOrEmpty(entry.Title.Text)) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;secI.title = entry.Title.Text; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;else &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;secI.title = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"Title not available"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (!&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.IsNullOrEmpty(entry.Media.Description.Value)) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;if&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt; (entry.Media.Description.Value.Length &amp;gt; 50) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;secI.description = entry.Media.Description.Value.Substring(0, 50); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;} &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;secI.description = entry.Media.Description.Value; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;else &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;secI.description = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"Description not available"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (!&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.IsNullOrEmpty(entry.AlternateUri.Content)) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;secI.url = entry.AlternateUri.Content; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;else &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;secI.url = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"Media URI not available"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;EM&gt;ThumbnailCollection&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt; thumbs = entry.Media.Thumbnails; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (thumbs != &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt; &amp;amp;&amp;amp; thumbs.Count &amp;gt; 1) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Thumbnail&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; thumb = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Thumbnail&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;thumb.source = thumbs[0].Url; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;thumb.alternateText = secI.title; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;thumb.height = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"35"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;thumb.width = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"35"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;secI.image = thumb; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;else &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;secI.image = &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Thumbnail&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;this&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;.youTubeSection.items[counter] = secI; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;... &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;catch &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;throw&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Exception&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;} &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.metacafe.com/" target=_blank&gt;Metacafe&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;Metacafe also does provide an API however they offer a &lt;A href="http://help.metacafe.com/?page_id=238" target=_blank&gt;RSS API&lt;/A&gt; and return an XML feed for the search results. So the implementation for the MetaCafeSearchController looks a lot different. &lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;public&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; DoSearch(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt; metaCafeSection) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;{ &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; try &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;.metaCafeSection = (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Section&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;)metaCafeSection; &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; uri = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"http://www.metacafe.com/api/videos?vq="&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; + searchquery + &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"&amp;amp;max-results=5"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uri&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; searchUri = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Uri&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(uri); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebRequest&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; req = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;WebRequest&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.Create(searchUri); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebClient&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; client = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;WebClient&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stream&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt; resultData = client.OpenRead(searchUri); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StreamReader&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; sR = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;StreamReader&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(resultData); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlReader&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; reader = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;XmlReader&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.Create(resultData); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlDocument&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; doc = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;XmlDocument&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doc.Load(reader); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNamespaceManager&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; nSmgr = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;XmlNamespaceManager&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(doc.NameTable); &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nSmgr.AddNamespace(&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"media"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;A href="http://search.yahoo.com/mrss/"&gt;http://search.yahoo.com/mrss/&lt;/A&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNodeList&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; itemList = doc.SelectNodes(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"/rss/channel/item"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;.metaCafeSection.items = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;[itemList.Count + 1]; &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Separator&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; metacafeSeparator = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Separator&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; metacafeSeparator.title = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"Videos on metacafe"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;.metaCafeSection.items[0] = metacafeSeparator; &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;XmlNode&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; node &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt; itemList) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SectionItem&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; item = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;SectionItem&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNodeList&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt; childNodes = node.ChildNodes; &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;XmlNode&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; child &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt; childNodes) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (child.Name.Equals(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"title"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;)) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (!&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.IsNullOrEmpty(child.InnerText)) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.title = child.InnerText; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.title = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"Title not available"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (child.Name.Equals(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"media:description"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;)) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (!&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.IsNullOrEmpty(child.InnerText)) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt; (child.InnerText.Length &amp;gt; 50) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.description = child.InnerText.Substring(0, 50); &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.description = child.InnerText; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.description = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"Description not available"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (child.Name.Equals(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"link"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;)) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (!&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.IsNullOrEmpty(child.InnerText)) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.url = child.InnerText; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.url = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"Link not available"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (child.Name.Equals(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"media:thumbnail"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;)) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thumbnail&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; thumb = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Thumbnail&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (!&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;.IsNullOrEmpty(child.Attributes[0].Value)) &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; thumb.source = child.Attributes[0].Value; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; thumb.alternateText = item.title; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; thumb.height = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"35"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; thumb.width = &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;&lt;EM&gt;"35"&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.image = thumb; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.image = &lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;Thumbnail&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;(); &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;EM&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;.metaCafeSection.items[counter] = item; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; counter++; &lt;BR&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;catch &lt;BR&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;ArgumentNullException&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"searchquery not set"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;FONT size=2&gt;&lt;EM&gt;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;}&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT size=2&gt;So now with these two search implementations I get two &lt;EM&gt;Section&lt;/EM&gt; objects which then again are aggregated into one single &lt;EM&gt;SearchItem&lt;/EM&gt; object. Which then is serialized into the service response and feeds the VisualSearch client in Internet Explorer 8. This process was already mentioned in the last &lt;A href="http://blogs.msdn.com/astrauss/archive/2008/11/26/building-a-visual-search-service-for-ie8-with-wcf-part-iii.aspx" target=_blank&gt;part&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;So that's it for part four. The next part is probably going to be the last part and deals about the accompanying features of the service like threading, caching and configuration in a little bit more detail.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;STRONG&gt;Reference:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx" target=_blank mce_href="http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx"&gt;Building a Visual Search Service for IE8 with WCF - Part I&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx" target=_blank mce_href="http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx"&gt;Building a Visual Search Service for IE8 with WCF - Part II&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/astrauss/archive/2008/11/26/building-a-visual-search-service-for-ie8-with-wcf-part-iii.aspx" target=_blank mce_href="http://blogs.msdn.com/astrauss/archive/2008/11/26/building-a-visual-search-service-for-ie8-with-wcf-part-iii.aspx"&gt;Building a Visual Search Service for IE8 with WCF - Part III&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;TABLE class=class cellSpacing=0 cellPadding=2 width=600 border=0 class="class"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=class width=70 class="class"&gt;&lt;A href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2008/12/16/building-a-visual-search-service-for-ie8-with-wcf-part-iv.aspx" mce_href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2008/12/16/building-a-visual-search-service-for-ie8-with-wcf-part-iv.aspx"&gt;&lt;IMG src="http://digg.com/img/digg-it-tiny.gif" mce_src="http://digg.com/img/digg-it-tiny.gif"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=class width=190 class="class"&gt;&lt;IMG height=15 alt=Delicious src="http://static.delicious.com/img/delicious.small.gif" width=15&gt;&lt;A style="FONT-SIZE: 8pt" onclick="window.open('http://delicious.com/save?v=5&amp;amp;noui&amp;amp;jump=close&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=550,height=550'); return false;" href="http://delicious.com/save"&gt;Bookmark this on Delicious&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=class width=150 class="class"&gt;
&lt;SCRIPT&gt;




function fbs_click() {u=location.href;t=document.title;window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');return false;}&lt;/SCRIPT&gt;

&lt;STYLE&gt;


html .fb_share_button {
	border-right: #d8dfea 1px solid; padding-right: 20px; border-top: #d8dfea 1px solid; display: inline-block; padding-left: 5px; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) no-repeat right top; padding-bottom: 0px; border-left: #d8dfea 1px solid; padding-top: 1px; border-bottom: #d8dfea 1px solid; height: 15px
}
html .fb_share_button:hover {
	border-left-color: #295582; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) #3b5998 no-repeat right top; border-bottom-color: #295582; color: #fff; border-top-color: #295582; text-decoration: none; border-right-color: #295582
}&lt;/STYLE&gt;
&lt;A class=fb_share_button style="TEXT-DECORATION: none" onclick="return fbs_click()" href="http://www.facebook.com/share.php?u=&lt;url&gt;" target=_blank rel=nofollow&gt;Share&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=class width=150 class="class"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9226213" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Service+Orientation/default.aspx">Service Orientation</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/.Net+3.0/default.aspx">.Net 3.0</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/S_2B00_S/default.aspx">S+S</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Internet+Explorer+8/default.aspx">Internet Explorer 8</category></item><item><title>Building A Visual Search Service For IE8 With WCF - Part III</title><link>http://blogs.msdn.com/astrauss/archive/2008/11/26/building-a-visual-search-service-for-ie8-with-wcf-part-iii.aspx</link><pubDate>Wed, 26 Nov 2008 16:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9144279</guid><dc:creator>astrauss</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9144279.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9144279</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9144279</wfw:comment><description>&lt;p&gt;It's definitely about time to publish the promised third part of this series. This time I will cover the class model which I used to let the .Net XmlSerializer generate the necessary XML structure. I want to utilize almost the full breadth of the capabilities the Visual Search component is offering with respect of information display. So in this case the features are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Categories or sections &lt;/li&gt;    &lt;li&gt;Descriptions/Abstracts &lt;/li&gt;    &lt;li&gt;Urls &lt;/li&gt;    &lt;li&gt;Images &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So the XML structure needs to look like the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;&amp;lt;SearchSuggestion &lt;font color="#ff0000"&gt;version&lt;/font&gt;=&amp;quot;2.0&amp;quot; &lt;font color="#ff0000"&gt;xmlns&lt;/font&gt;=&amp;quot;&lt;/font&gt;&lt;/em&gt;&lt;a href="http://opensearch.org/searchsuggest2" ?="?" mce_href="http://opensearch.org/searchsuggest2"&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;http://opensearch.org/searchsuggest2&amp;quot;&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;&amp;gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Query&amp;gt;&amp;lt;/Query&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Section&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Separator &lt;font color="#ff0000"&gt;title&lt;/font&gt;=&amp;quot;&amp;quot;/&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Text&amp;gt;&amp;lt;/Text&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Description&amp;gt;&amp;lt;/Description&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Url&amp;gt;&amp;lt;/Url&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Image &lt;font color="#ff0000"&gt;source&lt;/font&gt;=&amp;quot;&amp;quot; &lt;font color="#ff0000"&gt;alt&lt;/font&gt;=&amp;quot;&amp;quot; &lt;font color="#ff0000"&gt;width&lt;/font&gt;=&amp;quot;&amp;quot; &lt;font color="#ff0000"&gt;height&lt;/font&gt;=&amp;quot;&amp;quot;/&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Item&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ...           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Item&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ...           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Separator &lt;font color="#ff0000"&gt;title&lt;/font&gt;=&amp;quot;Videos on metacafe&amp;quot;/&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ...           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Item&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ...           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Section&amp;gt;           &lt;br /&gt;&amp;lt;/SearchSuggestion&amp;gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As I already mentioned I'm using the XmlSerializer in the .Net framework to serialize the XML drafted above. XmlSerializer serializes objects into XML and probably most of the sources (responses from the video services APIs) are XML you might want to ask the question why doing the indirection via a .net object model and not simply use XML transformation with an XML Stylesheet and send it straight over the wire using an XmlWriter. This is a valid question and the main reason why I didn't do it that way is because I started off with the YouTube service which gave me a pretty nice .Net based client API and others probably will follow. Another reason is that I wanted to use WCF which gives you more flexibility in targetting other clients as well and some quality of service features and knobs to fine tune the service.&lt;/p&gt;  &lt;p&gt;So the object model looks like outlined in the following class diagram.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingAVisualSearchServiceForIE8WithWC_98CB/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingAVisualSearchServiceForIE8WithWC_98CB/image_4.png"&gt;&lt;img style="border-right-width: 0px; margin: 20px 0px 0px 100px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingAVisualSearchServiceForIE8WithWC_98CB/image_thumb_1.png" width="524" height="348" mce_src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingAVisualSearchServiceForIE8WithWC_98CB/image_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The properties in the classes are all annotated with the necessary XmlSerializer Attributes. So for example the code for the SearchItem class looks like the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;[System.&lt;font color="#04a9b7"&gt;Serializable&lt;/font&gt;]         &lt;br /&gt;[&lt;font color="#04a9b7"&gt;XmlRootAttribute&lt;/font&gt;(Namespace = &lt;font color="#800000"&gt;&amp;quot;&lt;/font&gt;&lt;/em&gt;&lt;a href="http://opensearch.org/searchsuggest2" ?="?" mce_href="http://opensearch.org/searchsuggest2"&gt;&lt;em&gt;&lt;font color="#800000"&gt;http://opensearch.org/searchsuggest2&amp;quot;&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, ElementName=&lt;font color="#800000"&gt;&amp;quot;SearchSuggestion&amp;quot;&lt;/font&gt;)]         &lt;br /&gt;&lt;font color="#0000ff"&gt;public class&lt;/font&gt; &lt;font color="#04a9b7"&gt;SearchItem&lt;/font&gt;         &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;font color="#04a9b7"&gt;XmlAttribute&lt;/font&gt;]         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;public string&lt;/font&gt; version { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;set&lt;/font&gt;; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;font color="#04a9b7"&gt;XmlElement&lt;/font&gt;(ElementName = &lt;font color="#800000"&gt;&amp;quot;Query&amp;quot;&lt;/font&gt;)]         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;public string&lt;/font&gt; query { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;set&lt;/font&gt;; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;font color="#04a9b7"&gt;XmlArrayItem&lt;/font&gt;(ElementName=&lt;font color="#800000"&gt;&amp;quot;Separator&amp;quot;&lt;/font&gt;, Type=&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;(&lt;font color="#04a9b7"&gt;Separator&lt;/font&gt;))]         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;font color="#04a9b7"&gt;XmlArrayItem&lt;/font&gt;(ElementName=&lt;font color="#800000"&gt;&amp;quot;Item&amp;quot;&lt;/font&gt;, Type=&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;(&lt;font color="#04a9b7"&gt;SectionItem&lt;/font&gt;))]         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;object&lt;/font&gt;[] Section { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;set&lt;/font&gt;; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/em&gt; &lt;/p&gt;    &lt;p&gt;The most important thing to mention here is that you need to define an array of type object in order to create the child elements of the section element as it needs to take two different types of objects (SectionItem and Separator). Another thing to mention is that the Section property is the aggregation of all results of the integrated video services and therefore I created a helper object (Section class). Every SearchController gets an instance of such a helper object to populate it with its own items and separator. In the end all helper objects of type Section are merged together to populate the SectionItem.Section property.&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;em&gt;&lt;font color="#04a9b7"&gt;SearchItem sI&lt;/font&gt; = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#04a9b7"&gt;SearchItem()&lt;/font&gt;;&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;&lt;font color="#04a9b7"&gt;Section&lt;/font&gt; youTubeSection = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#04a9b7"&gt;Section()&lt;/font&gt;;&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;&lt;font color="#04a9b7"&gt;Section &lt;/font&gt;&lt;/em&gt;&lt;em&gt;metacafeSection = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#04a9b7"&gt;Section()&lt;/font&gt;;&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;...&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;youTubeThread.Start(youTubeSection);&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;metacafeThread.Start(metacafeSection);&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;...&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;MergeSections();&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;...&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;youTubeSection.items.CopyTo(mergedSection, 0);          &lt;br /&gt;metacafeSection.items.CopyTo(mergedSection, youTubeSection.items.Length);&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;...&lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;sI.Section = mergedSection;&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt;  &lt;p&gt;The rest of the model is quite straight forward and I think it needs no further illustration. I will publish the complete code of the Video Visual Search with the last part of this series anyway.&lt;/p&gt;  &lt;p&gt;The next part which hopefully doesn't take as long to publish as this one will deal with the Search Interface and the concrete implementations of it. Here's as usual a little teaser.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingAVisualSearchServiceForIE8WithWC_98CB/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingAVisualSearchServiceForIE8WithWC_98CB/image_10.png"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px 0px 100px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingAVisualSearchServiceForIE8WithWC_98CB/image_thumb_4.png" width="384" height="294" mce_src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingAVisualSearchServiceForIE8WithWC_98CB/image_thumb_4.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Reference:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a target="_blank" href="http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx" mce_href="http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx"&gt;Building a Visual Search Service for IE8 with WCF - Part I&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a target="_blank" href="http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx" mce_href="http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx"&gt;Building a Visual Search Service for IE8 with WCF - Part II&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;table class="class" border="0" cellspacing="0" cellpadding="2" width="600"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td class="class" width="70"&gt;&lt;a href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx" mce_href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx"&gt;&lt;img src="http://digg.com/img/digg-it-tiny.gif" mce_src="http://digg.com/img/digg-it-tiny.gif" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td class="class" width="190"&gt;&lt;img alt="Delicious" src="http://static.delicious.com/img/delicious.small.gif" width="15" height="15" /&gt;&lt;a style="font-size: 8pt" onclick="window.open(&amp;#39;http://delicious.com/save?v=5&amp;amp;noui&amp;amp;jump=close&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title), &amp;#39;delicious&amp;#39;,&amp;#39;toolbar=no,width=550,height=550&amp;#39;); return false;" href="http://delicious.com/save"&gt;Bookmark this on Delicious&lt;/a&gt;&lt;/td&gt;        &lt;td class="class" width="150"&gt;&lt;script&gt;


function fbs_click() {u=location.href;t=document.title;window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');return false;}&lt;/script&gt;&lt;style&gt;
html .fb_share_button {
	border-right: #d8dfea 1px solid; padding-right: 20px; border-top: #d8dfea 1px solid; display: inline-block; padding-left: 5px; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) no-repeat right top; padding-bottom: 0px; border-left: #d8dfea 1px solid; padding-top: 1px; border-bottom: #d8dfea 1px solid; height: 15px
}
html .fb_share_button:hover {
	border-left-color: #295582; background: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) #3b5998 no-repeat right top; border-bottom-color: #295582; color: #fff; border-top-color: #295582; text-decoration: none; border-right-color: #295582
}&lt;/style&gt;&lt;a style="text-decoration: none" class="fb_share_button" onclick="return fbs_click()" target="_blank" href="http://www.facebook.com/share.php?u=&amp;lt;url&amp;gt;" rel="nofollow"&gt;Share&lt;/a&gt;&lt;/td&gt;        &lt;td class="class" width="150"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9144279" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Programming+Tasks/default.aspx">Programming Tasks</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/.Net+3.0/default.aspx">.Net 3.0</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Internet+Explorer+8/default.aspx">Internet Explorer 8</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>Building a Visual Search Service for IE8 with WCF - Part II</title><link>http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx</link><pubDate>Fri, 07 Nov 2008 19:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9052435</guid><dc:creator>astrauss</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/astrauss/comments/9052435.aspx</comments><wfw:commentRss>http://blogs.msdn.com/astrauss/commentrss.aspx?PostID=9052435</wfw:commentRss><wfw:comment>http://blogs.msdn.com/astrauss/rsscomments.aspx?PostID=9052435</wfw:comment><description>&lt;P&gt;Welcome to part two of this series on how to implement a visual search service for IE8 using the Windows Communication Foundation (WCF) and other .Net technologies or libraries. The first part described the overall scenario of the service and today I want to go into a little more details with respect to the service itself.&lt;/P&gt;
&lt;P&gt;With respect to the service there are some determining factors which need to be taken into account when creating the service contract interface which are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The client is determined (The IE8 Visual Search Component) and is a black box for us &lt;/LI&gt;
&lt;LI&gt;The schema of the messages accepted by the client is determined and is POX and is outlined &lt;A class="" href="http://msdn.microsoft.com/en-us/library/cc848863(VS.85).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc848863(VS.85).aspx"&gt;here&lt;/A&gt;. &lt;/LI&gt;
&lt;LI&gt;The client queries the service using plain parameterizes URLs via HTTP GET requests &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;This translates straight into the following attributes for our service.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;We have to create a restful service that returns plain XML (no full blown SOAP Services) &lt;/LI&gt;
&lt;LI&gt;Since the scenario implies some sort of contract-first design it is not since there is no metadata that describes the service and its operation and this actually implies that there is no contract (if you want to know a little bit more about contract-first I can recommend &lt;A href="http://www.theserverside.net/tt/articles/showarticle.tss?id=DesignServiceContracts" target=_blank&gt;this article on theserverside.net&lt;/A&gt;) &lt;/LI&gt;
&lt;LI&gt;We need full control over the serialization of the resulting XML &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;No with having this knowledge we can start to create the service.&lt;/P&gt;
&lt;P&gt;After creating the service project in Visual Studio 2008 the first thing we do is to create the service interface which is quite simple in the sense that it only defines one single service operation at this time. My service operation is named "Search" (which is kickass creative) and accepts a single string parameter which is the search query.&lt;/P&gt;
&lt;P&gt;So in the simplest case our service interface would look like this:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;[&lt;FONT color=#05deef&gt;ServiceContract&lt;/FONT&gt;] &lt;BR&gt;&lt;FONT color=#0000ff&gt;public interface&lt;/FONT&gt; &lt;FONT color=#05deef&gt;IVideoVisualSearchService &lt;BR&gt;&lt;/FONT&gt;{ &lt;BR&gt;&lt;FONT color=#05deef&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp; [&lt;/FONT&gt;OperationContract&lt;FONT color=#000000&gt;] &lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp; SearchItem&lt;/FONT&gt; Search(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; query); &lt;BR&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;However since we do have the attributes mentioned above we need to add some specific attribute.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;First is the [WebGet] attribute in order to make the service accessible via HTTP GET requests. &lt;/LI&gt;
&lt;LI&gt;We need to have full control over the structure of the resulting XML and therefore cannot use the &lt;A href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx" target=_blank&gt;DataContractSerializer&lt;/A&gt; which WCF uses by default to serialize the responses but need to specify the standard &lt;A href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx" target=_blank&gt;XMLSerializer&lt;/A&gt; in the .Net Framework. Therefore WCF introduces an &lt;A href="http://msdn.microsoft.com/en-us/library/system.servicemodel.xmlserializerformatattribute.aspx" target=_blank&gt;XmlSerializerFormat&lt;/A&gt; attribute within the ServiceModel namespace which does exactly this. &lt;/LI&gt;
&lt;LI&gt;In addition we need to configure the service so that it exposes itself as a restful service. Therefore we could use a &lt;A href="http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.servicehostfactory.aspx" target=_blank&gt;ServiceFactory&lt;/A&gt; in order to skip the sometimes cumbersome configuration steps however for the sake of transparency I create a manual configuration and then we need to add an endpoint with an&lt;EM&gt; webHttpBinding&lt;/EM&gt;. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Having done all those modifications our service contract looks like this:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;[&lt;FONT color=#05deef&gt;ServiceContract&lt;/FONT&gt;] &lt;BR&gt;[&lt;FONT color=#05deef&gt;XmlSerializerFormat&lt;/FONT&gt;] &lt;BR&gt;&lt;FONT color=#0000ff&gt;public interface&lt;/FONT&gt; &lt;FONT color=#05deef&gt;IVideoVisualSearchService&lt;/FONT&gt; &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp; [&lt;FONT color=#05deef&gt;OperationContract&lt;/FONT&gt;] &lt;BR&gt;&amp;nbsp;&amp;nbsp; [&lt;FONT color=#05deef&gt;WebGet&lt;/FONT&gt;] &lt;BR&gt;&amp;nbsp;&amp;nbsp; [&lt;FONT color=#05deef&gt;XmlSerializerFormat&lt;/FONT&gt;] &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#05deef&gt;SearchItem&lt;/FONT&gt; Search(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; query); &lt;BR&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;and the minimal endpoint configuration in the looks like this:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&amp;lt;&lt;FONT color=#a31515 size=2&gt;endpoint&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;address&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;""&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;behaviorConfiguration&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;myRestfulBehaviour&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;binding&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;webHttpBinding&lt;/FONT&gt;&lt;FONT size=2&gt;" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;contract&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VideoVSearchAggregator.IVideoVisualSearchService&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; /&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;and the behavior configuration section is as well minimalistic and looks like this:&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;endpointBehaviors&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;behavior&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;myRestfulBehaviour&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;webHttp&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;behavior&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt; &lt;BR&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;endpointBehaviors&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;This also already marks the end of part II. In the next part I will give some more detailed information about the object model of the service which defines the content of the search results and how it is attributed to generate exactly the XML that the visual search component of IE8 expects. As a small teaser here is already the class class diagram of the object model to construct the response messages.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_D87A/MessageClassDiagram_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=123 alt=MessageClassDiagram src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_D87A/MessageClassDiagram_thumb.jpg" width=354 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Reference:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="Building a Visual Search Service for IE8 with WCF - Part I" href="http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx"&gt;Building a Visual Search Service for IE8 with WCF - Part I&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;TABLE class=class cellSpacing=0 cellPadding=2 width=600 border=0 class="class"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=class width=70 class="class"&gt;&lt;A href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx" mce_href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx"&gt;&lt;IMG src="http://digg.com/img/digg-it-tiny.gif" mce_src="http://digg.com/img/digg-it-tiny.gif"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=class width=190 class="class"&gt;&lt;IMG height=15 alt=Delicious src="http://static.delicious.com/img/delicious.small.gif" width=15&gt;&lt;A style="FONT-SIZE: 8pt" onclick="window.open('http://delicious.com/save?v=5&amp;amp;noui&amp;amp;jump=close&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=550,height=550'); return false;" href="http://delicious.com/save"&gt;Bookmark this on Delicious&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=class width=150 class="class"&gt;
&lt;SCRIPT&gt;

function fbs_click() {u=location.href;t=document.title;window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');return false;}&lt;/SCRIPT&gt;

&lt;STYLE&gt;HTML .fb_share_button {
	BORDER-RIGHT: #d8dfea 1px solid; PADDING-RIGHT: 20px; BORDER-TOP: #d8dfea 1px solid; DISPLAY: inline-block; PADDING-LEFT: 5px; BACKGROUND: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) no-repeat right top; PADDING-BOTTOM: 0px; BORDER-LEFT: #d8dfea 1px solid; PADDING-TOP: 1px; BORDER-BOTTOM: #d8dfea 1px solid; HEIGHT: 15px
}
HTML .fb_share_button:hover {
	BORDER-LEFT-COLOR: #295582; BACKGROUND: url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) #3b5998 no-repeat right top; BORDER-BOTTOM-COLOR: #295582; COLOR: #fff; BORDER-TOP-COLOR: #295582; TEXT-DECORATION: none; BORDER-RIGHT-COLOR: #295582
}
&lt;/STYLE&gt;
&lt;A class=fb_share_button style="TEXT-DECORATION: none" onclick="return fbs_click()" href="http://www.facebook.com/share.php?u=&lt;url&gt;" target=_blank rel=nofollow&gt;Share&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=class width=150 class="class"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9052435" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/astrauss/archive/tags/Service+Orientation/default.aspx">Service Orientation</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/.Net+3.0/default.aspx">.Net 3.0</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/S_2B00_S/default.aspx">S+S</category><category domain="http://blogs.msdn.com/astrauss/archive/tags/Internet+Explorer+8/default.aspx">Internet Explorer 8</category></item></channel></rss>