<?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/b/astrauss/</link><description>Alexander Strauss goes Blog</description><dc:language>en</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>IE 9 pinned mode and else demo page</title><link>http://blogs.msdn.com/b/astrauss/archive/2011/03/04/ie-9-pinned-mode-and-else-demo-page.aspx</link><pubDate>Fri, 04 Mar 2011 11:53:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10136882</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=10136882</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2011/03/04/ie-9-pinned-mode-and-else-demo-page.aspx#comments</comments><description>&lt;p&gt;Short revival of my blog with sharing a site I created to play a bit with the new taskbar features of Internet Explorer 9. After I realized that the site actually shows a good overview of most of the features described on the &lt;a href="http://msdn.microsoft.com/en-us/library/gg131029(v=vs.85).aspx" target="_blank"&gt;MSDN pinned site documentation&lt;/a&gt; with working samples I thought this might also be of interest to some other people. In addition it shows a bit about geo location (Thanks to &lt;a href="http://blogs.msdn.com/b/dparys/" target="_blank"&gt;Dariusz&lt;/a&gt; for his sample) and the new performance/navigation timing api which is currently being specified by a newly formed &lt;a href="http://www.w3.org/2010/06/webperf.html" target="_blank"&gt;W3C Working Group&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Please remember however that most of the buttons only do what they are supposed to do when the site is actually in site mode (but you get informed about that anyway). &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/2335.wlEmoticon_2D00_smile_5F00_7F368B71.png" /&gt;&lt;/p&gt;  &lt;p&gt;So have fun with it! &lt;a href="http://www.level70.de/ie9demos/IE9Demos.html" target="_blank"&gt;http://www.level70.de/ie9demos/IE9Demos.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Site Mode Demo Site" href="http://www.level70.de/ie9demos/IE9Demos.html" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Site Mode Demos" border="0" alt="Site Mode Sample Site" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/6545.sms_5F00_3E943F02.jpg" width="543" height="424" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The site was created by using the brand new web development tool from Microsoft called &lt;a href="http://www.microsoft.com/web/webmatrix/" target="_blank"&gt;Web Matrix&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a style="text-decoration: none" title="Bookmark to: Digg" onclick="window.open(&amp;#39;http://digg.com/submit?phase=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;bodytext=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://digg.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Digg" border="0" name="Digg" alt="Bookmark Digg" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FwVnXcQI/AAAAAAAABf8/8t8jUbCOQN0/s200/digg.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Del.icio.us" onclick="window.open(&amp;#39;http://del.icio.us/post?v=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;notes=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://del.icio.us/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Delicious" border="0" name="Delicious" alt="Bookmark Del.icio.us" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FmrXO-vI/AAAAAAAABf0/gK0oKdOJzMM/s200/delicious.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Facebook" onclick="window.open(&amp;#39;http://www.facebook.com/sharer.php?u=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;t=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.facebook.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Facebook" border="0" name="Facebook" alt="Bookmark Facebook" src="http://1.bp.blogspot.com/_vLeiVavkV_M/Sn0F1uQ7P_I/AAAAAAAABgE/zESf9tLZOtw/s200/facebook.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Reddit" onclick="window.open(&amp;#39;http://reddit.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://reddit.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Reddit" border="0" name="Reddit" alt="Bookmark Reddit" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0GDJUzotI/AAAAAAAABgU/qAA0KjdLgF8/s200/reddit.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: StumbleUpon" onclick="window.open(&amp;#39;http://www.stumbleupon.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.stumbleupon.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="StumbleUpon" border="0" name="StumbleUpon" alt="Bookmark StumbleUpon" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GJ5NxMRI/AAAAAAAABgc/zaraJzCuyXI/s200/stumbleupon.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Yahoo" onclick="window.open(&amp;#39;http://myweb2.search.yahoo.com/myresults/bookmarklet?t=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;&amp;amp;d=&amp;amp;tag=&amp;amp;u=&amp;#39;+encodeURIComponent(location.href));return false;" href="http://www.yahoo.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Yahoo" border="0" name="Yahoo" alt="Bookmark Yahoo" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GdCPWuUI/AAAAAAAABg0/-tjcrdMnRkA/s200/yahoo.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Google" onclick="window.open(&amp;#39;http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;annotation=&amp;amp;labels=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.google.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Google" border="0" name="Google" alt="Bookmark Google" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0F7200sZI/AAAAAAAABgM/ivmXOn18EZA/s200/google.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Technorati" onclick="window.open(&amp;#39;http://technorati.com/faves?add=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;tag=&amp;#39;);return false;" href="http://www.technorati.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Technorati" border="0" name="Technorati" alt="Bookmark Technorati" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GRQk71JI/AAAAAAAABgk/AT5wC4ZYB8g/s200/technorati.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Twitter" onclick=" window.open(&amp;#39;http://twitter.com/home?status=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;%20&amp;#39;+encodeURIComponent(location.href)); return false;" href="http://twitter.com/" rel="nofollow" target="_Blank"&gt;&lt;img style="padding-bottom: 1px" id="Twitter" border="0" name="Twitter" alt="Bookmark Twitter" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GYqWEWAI/AAAAAAAABgs/8715Vd67VtA/s200/twitter.png" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10136882" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/IE+9/">IE 9</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/HTML5/">HTML5</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Web+Matrix/">Web Matrix</category></item><item><title>Do Enterprises Need An Independent Browser Strategy?</title><link>http://blogs.msdn.com/b/astrauss/archive/2010/05/25/do-enterprises-need-an-independent-browser-strategy.aspx</link><pubDate>Tue, 25 May 2010 06:57:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10014363</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=10014363</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2010/05/25/do-enterprises-need-an-independent-browser-strategy.aspx#comments</comments><description>&lt;p&gt;Microsoft Australia is currently driving a &lt;a href="http://www.microsoft.com/australia/technet/ie8milk/" target="_blank"&gt;campaign&lt;/a&gt; where using Internet Explorer 6 is compared to drinking 9 year old milk. The by far biggest share of IE6 still used is in large enterprises. There are certainly many reasons why this is the case but in my opinion most of those reasons in one or another way are a direct result of specific circumstance which is&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;That Enterprises as well as small and medium businesses for the largest part do not have a browser strategy.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;At least none that is independent from their client OS strategy. And the reason why most companies do not have an independent strategy is because Internet Explorer was shipped with Windows since &lt;a href="http://en.wikipedia.org/wiki/Internet_Explorer_4" target="_blank"&gt;Windows 98 with Internet Explorer 4&lt;/a&gt; which is more than 12 years ago which again is centuries in IT terms. In addition, the importance of the browser as a productivity tool increased during those years with exponential rise over the last 5 or 6 years. Because of those circumstances many companies probably didn’t feel the urge to implement such an independent strategy. But because of not treating the browser as an independent part of the operating system most companies are still relying on Internet Explorer 6 which is already nine years old. In those 9 years however there were three different evolutionary streams. The first to name is the trend to implement more and more business applications as web applications which led to a huge amount of web applications within companies. And those were often optimized for the currently used browser (IE6). The second stream was the evolution of web technologies and web standards. The third stream was the growing number of attacks through web sites and also the growing numbers of attacking techniques including &lt;a href="http://en.wikipedia.org/wiki/Social_engineering_(security)" target="_blank"&gt;social engineering attacks&lt;/a&gt;. All three streams were heavily influenced and driven by the growing popularity and the rise of the web. So if you take this into account you could say that with the increase of the duration of usage of a specific browser version the ability to adapt and migrate decreases. This correlation is shown in the diagram below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/0336.Browser_5F00_Strategy_5F00_Final_5F00_5FEC18F3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Decrease of browser migratability over time" border="0" alt="Decrease of browser migratability over time" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/7128.Browser_5F00_Strategy_5F00_Final_5F00_thumb_5F00_4BF2865D.png" width="560" height="362" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Critics now may say that this is all the fault of Microsoft because Microsoft is shipping IE together with Windows and Microsoft shipped IE6 flawed and forced the creation of web applications that introduced dependencies to those flaws. However those are reasons to from owns own complacency and indifference about treating the browser as an important productivity tool which needs to be treated like other mission critical applications or technologies in an enterprise. If Companies would have spent the browser the attention it deserved then there would have been plenty of opportunity to avoid the current situation because even Microsoft released two new browser versions which introduced great improvements in many browser relevant areas like &lt;strong&gt;security&lt;/strong&gt;, &lt;strong&gt;standards&lt;/strong&gt;, &lt;strong&gt;productivity features&lt;/strong&gt; and &lt;strong&gt;performance&lt;/strong&gt; compared to IE6. Those were released as stand-alone installers as well as part of Windows Vista or Windows 7. My theory is that they were simply neglected by enterprises because of a lacking independent browser strategy and omission. Although it seems like it I don’t want to scare anyone here because to be honest I think that the picture one my draw from the above would be way to negative because the ability to migrate will never be impossible and the efforts related to migration may be less than one would expect. I will elaborate about what I mean by that further down in this post. &lt;/p&gt;  &lt;p&gt;Bottom line however is that the trends outlined above are some indicators that the browser is one of the most important tools in today's enterprise application landscape. This is not only my personal opinion but is also expressed by many respectable institutions and individuals. Forrester analyst Sheri McLeish for example said:&lt;/p&gt;  &lt;p&gt;“&lt;a href="http://www.cio.in/article/importance-browser-based-collaboration-tools-enterprise-application" target="_blank"&gt;Enterprises need to think about the browser as a productivity tool, not as a transparent application. They need to look at browsers more strategically.&lt;/a&gt;”&lt;/p&gt;  &lt;p&gt;Another example is a citation of Andy Armagost, Birmingham Gas &amp;amp; Oil who said:&lt;/p&gt;  &lt;p&gt;“&lt;a href="http://www.cio.in/article/importance-browser-based-collaboration-tools-enterprise-application" target="_blank"&gt;The browser is one of the most important pieces of software we have right now&lt;/a&gt;”&lt;/p&gt;  &lt;p&gt;And last but not least with ongoing increase of web applications, web services and especially now slowly starting move to cloud based services, the browser may become the single most important piece of software in the future. Which is a hypothesis that is also backed by Sheri McLeish:&lt;/p&gt;  &lt;p&gt;“&lt;font color="#0000ff"&gt;That IE6 is by far the most widely used browser among enterprises reflects most IT departments’ lack of interest in browsers. However, this laissez-faire approach toward browsers wouldn’t last long, he said. “The rise of software-as-a-service [SaaS] will force enterprises to at least come up with a browser strategy for their workforce&lt;/font&gt;”&lt;/p&gt;  &lt;p&gt;With that all said it becomes obvious that - &lt;strong&gt;&lt;u&gt;the time to act is now&lt;/u&gt;&lt;/strong&gt; – it is time to do essentially two things:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;&lt;em&gt;Start realizing the importance of the browser for the own company and define a independent strategy for it &lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;em&gt;Start migrating to a current version of preferably Internet Explorer as it is still the best choice for deployment in corporate environments&lt;/em&gt;&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I did not number these two tasks on purpose as they are probably almost equally important and because it is recommended to start doing both in parallel. As for the migration part still many companies, even those that may already have some kind of browser strategy discussion, are still in fear about the efforts and try to avoid the migration part. So I will try to give some, hopefully helpful, information on how one can get started, what else, apart from the above are the benefits of migration and about some determining factors relevant in the migration context.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Compatibility            &lt;br /&gt;&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;      &lt;br /&gt;I will not reiterate what has been said many times about compatibility and its various facets with respect to Internet Explorer 8. Although it is super important there are enough sources, including this blog, where you can find information about it. As a starting point you can go to my &lt;a href="http://blogs.msdn.com/astrauss/archive/2008/10/22/attaining-ie8-site-compatibility-short-reference.aspx" target="_blank"&gt;respective article&lt;/a&gt; or the &lt;a href="http://msdn.microsoft.com/en-us/ie/cc405106.aspx" target="_blank"&gt;compatibility center on MSDN&lt;/a&gt;. Here however I want to point out that there are different kinds of compatibility of which some are important to reflect about when planning a migration process and its accompanying decisions and some that may be less or maybe even useless when deciding about what’s important to solve one’s personal or corporate compatibility question:       &lt;br /&gt;      &lt;ol&gt;       &lt;li&gt;&lt;strong&gt;Backward Compatibility or “Stand in for your heritage”&lt;/strong&gt;           &lt;br /&gt;          &lt;br /&gt;Especially with an Internet Explorer focus I would define backwards compatibility as “&lt;em&gt;&lt;font color="#ff8040"&gt;&lt;strong&gt;Enabling correct functional execution and visualization of web applications created for previous versions of Internet Explorer and web standards&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;”. Especially because of the fact that most companies are still sitting on back level browsers this is extremely important. And because this is so important Internet Explorer in particular lives up to the promise to provide a great deal of backwards compatibility by shipping with two rendering engines and compatibility modes. While probably still not the 100% solution to the compatibility questions it is a great relief for companies preparing for migration as this reliefs them from really touching applications and make real changes to the application assets (markup, styles and code)           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;Forward Compatibility            &lt;br /&gt;            &lt;br /&gt;&lt;/strong&gt;I would define forward compatibility as “&lt;strong&gt;&lt;font color="#ff8040"&gt;The Support of evolution of the web by endorsing and supporting current and upcoming specifications and actively participate in the definition of those standards&lt;/font&gt;&lt;/strong&gt;”. Now this one is a bit tricky as we all don’t own a crystal orb to look trough into the future. However alone by the statements and the involved actions one can get at least some ideas about how friction free and smooth future migrations will become. Supportive for a positive perception with respect to forward compatibility I would count active participating in the standardization bodies, recommending new standards, early adoption of not yet settled standards, providing guidance on usage of standards, etc.           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;Artificial Compatibility            &lt;br /&gt;            &lt;br /&gt;&lt;/strong&gt;Artificial compatibility or a compatibility that has been created and made popular as an benchmark thus creating a de-facto requirement of passing taking the benchmark in order to gain a positive perception. The problem with such an compatibility understanding is that they sometimes are not very helpful in or simply useless when taking the compatibility debate. One good example is the &lt;strong&gt;current&lt;/strong&gt; ACID 3 test. There are many people out there thinking that the browser passing the test to 100% is the most standards compliant browser but this is not really the case as it only tests a subset of standards and it tests it upon the author’s interpretation of the specifications. And that there is much room for interpretation shows a simple &lt;a href="http://www.computerworld.com/s/article/9128096/Web_standards_on_the_edge?taxonomyId=141" target="_blank"&gt;example&lt;/a&gt; made by Ian Hickson, who is one of the editors of the &lt;a href="http://dev.w3.org/html5/spec/" target="_blank"&gt;HTML 5&lt;/a&gt; specs at the &lt;a href="http://www.w3c.org" target="_blank"&gt;W3C&lt;/a&gt; and maintainer of the Acid 3 test suite.           &lt;br /&gt;&lt;em&gt;           &lt;br /&gt;“HTML 4 has an input element, which has a type=&amp;quot;&amp;quot; attribute, which takes values like &amp;quot;text&amp;quot; and &amp;quot;checkbox.&amp;quot; What should happen when you have an HTML input element with type=&amp;quot;text&amp;quot; in a document is reasonably well defined: You display a text field. &lt;/em&gt;          &lt;p&gt;&lt;em&gt;What should happen with input type=&amp;quot;checkbox&amp;quot; is relatively well defined. However, with script, you can take the type=&amp;quot;text&amp;quot; attribute, and change its value dynamically, while the user is editing the control, so that it is type=&amp;quot;checkbox.&amp;quot; This is not a common thing to do, and the HTML 4 and DOM2 HTML specs are completely silent on what should happen when this case is hit. &lt;/em&gt;&lt;/p&gt;          &lt;p&gt;&lt;em&gt;The result is that different browsers do different things; IE will throw an exception, if I recall correctly, while Firefox will change the text field to a checkbox”              &lt;br /&gt;              &lt;br /&gt;&lt;/em&gt;There are other indications and statements that are quite a bit reserved to pay to much attention to those tests which I will spare here. For those interested just check out &lt;a href="http://www.webstandards.org/action/acid3/" target="_blank"&gt;this&lt;/a&gt; or &lt;a href="http://shaver.off.net/diary/2008/03/27/the-missed-opportunity-of-acid-3/" target="_blank"&gt;that&lt;/a&gt;. To sum it up I want to point out that I don’t say that tests such as Acid 3 are generally a bad thing but I think that just striving for the goal to pass a certain test and even optimize a product just to hit that target is a non goal and doesn’t help the web community in deciding which are the real important attributes are to solve the compatibility questions.&lt;/p&gt;       &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;u&gt;Some common misconceptions&lt;/u&gt;&lt;/strong&gt;&lt;/em&gt;       &lt;br /&gt;      &lt;ol&gt;       &lt;li&gt;&lt;strong&gt;Micro-Benchmark results are the key criteria to make browser choice decisions&lt;/strong&gt;           &lt;br /&gt;          &lt;br /&gt;Micro-Benchmarks are without a doubt very popular at the moment. Especially those measuring JavaScript performance like the &lt;a href="http://v8.googlecode.com/svn/data/benchmarks/v5/run.html" target="_blank"&gt;V8 Benchmark&lt;/a&gt;, &lt;a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html" target="_blank"&gt;Sunspider&lt;/a&gt;, &lt;a href="http://dromaeo.com/" target="_blank"&gt;Dromaeo&lt;/a&gt; or &lt;a href="http://service.futuremark.com/peacekeeper/index.action" target="_blank"&gt;Peacekeeper&lt;/a&gt; are extremely popular nowadays. The only problem with them is that they are measuring only one tiny aspect of the whole browsing experience and therefore may be not sufficient to make an impartial browser decision. An attitude by the way that I’m not alone with. Jim Rapoza, Chief Technology Analyst at eWeek for example &lt;a href="http://etech.eweek.com/content/web_technology/fastest_browser_fight_is_pointless.html" target="_blank"&gt;said&lt;/a&gt;:           &lt;p&gt;“&lt;em&gt;Face it, right now all browsers are more than fast enough. And if you're running into slow performance on the Web, you should probably check about 100 other things (ISP performance, site problems, etc.) before you start wondering about browser speed.              &lt;br /&gt;So why is every single browser maker spending so much time and resources trying to gain the mantle of fastest Web browser? I think it's because performance is the only non-subjective criteria that they can hang their hat on&lt;/em&gt;”             &lt;br /&gt;            &lt;br /&gt;Don’t get me wrong, Micro-Benchmark are important and give a good insight about the current state of a browsers script or rendering engines especially with more and more applications making heavy use of JavaScript however they shouldn’t be the only criteria to base one’s browser decisions on. I mean even we at Microsoft now are riding this horse with the latest announcements about the rework of the JavaScript engine in Internet Explorer IE9 and the performance shown already in the current &lt;a href="http://ie.microsoft.com/testdrive/" target="_blank"&gt;technology previews of IE9&lt;/a&gt;. But still there is the belief that there is a superset of of criteria that need to be taken into account when thinking about browsers and the usage of web applications.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;Specifications leave no room for interpretations          &lt;br /&gt;          &lt;br /&gt;I already gave an example about this further up in the compatibility section so here’s some more about that. A international standardization process is a complex beast. There are many parties involved (which is basically a good thing) but the more parties the more opinions and discussions. This is the reason that it takes a long time before standards are finally released and their specifications are complete and signed-off. So sometimes you need to rely and base your work (e.g. a browser) on unfinished specifications which may be unclear in certain aspects or may change over time. Think about CSS. There is still &lt;a href="http://www.w3.org/TR/CSS21/" target="_blank"&gt;no final specification for CSS 2.1&lt;/a&gt; available. And probably not only because of this Derek Featherstone, Group Lead Web Standards Project comes to the conclusion that:           &lt;br /&gt;          &lt;br /&gt;”&lt;em&gt;&lt;a href="http://www.computerworld.com.au/article/277813/web_standards_edge/?pp=2&amp;amp;fpid=611908207" target="_blank"&gt;We don't even have a perfect implementation of CSS 2.1 yet&lt;/a&gt;”             &lt;br /&gt;            &lt;br /&gt;&lt;/em&gt;So its easy to say that one or the other browser is not implementing the specs correctly but with some insight it becomes obvious that there is not the one correct way and it is difficult for a browser provider to hit a moving target (unsettled specs).           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;Browser migration is different from other application migrations          &lt;br /&gt;          &lt;br /&gt;To be honest I have no real clue about were this misconception comes from but I know it is all around. In many cases I hear or feel a lack of comprehension about browser migration and the related efforts to assess the applications if they are still working as designed. However I think this is something that is quite common in today’s IT environments. Think about migrations of JDK’s, Application Server upgrades or Windows Client upgrades not to speak of upgrade of a large SAP installation. Those don’t come without migration efforts either and they are huge in many cases. Of course IT responsible complain about those efforts as well but there still is an acceptance or an understanding that this is something that needs to be done. In the context of browser there is a total lack of such an acceptance and often this then leads to not migrating at all up to the time where there is no other chance anymore. However not only the efforts necessary will increase over time as I already pointed out but also those company will miss some great opportunity as we will see in the next section.           &lt;br /&gt;&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Application classification&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;Let’s get a away from the philosophic and sometimes religious questions and get a bit more practical. If you plan a migration you are probably think about the right process or which are the right tasks. One important task within the process is to do some kind of application classification. As this also can give great insight into what the overall migration efforts actually will be it should happen very early in the process. Of course there are many different ways to classify applications and there may also be quite some company specific, internal classification factors. Nevertheless I will try to give a generic views on how to classify and estimate the efforts. Base for this classification is the source of the application or in other words the producer and how much it has been customized. As seen in the following figure the complexity and efforts of a migration increases with the customization level in combination with the sources moving from internal to external.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/7624.app_5F00_classification_5F00_0A0BA10F.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Application Classification" border="0" alt="Application Classification" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/0777.app_5F00_classification_5F00_thumb_5F00_18F2D029.png" width="500" height="364" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;Important to note is that this not only considers technical factors but also includes organizational and feasibility factors. For example an application from an external source may be harder to migrate because the VAR/VAP or ISV may not even exist anymore. This is especially important for application including binary components such as ActiveX controls. On the other hand if a web application is based on an ISV product that has not been customized the effort may be near to nothing because the ISV already has official support for current browsers.       &lt;br /&gt;After doing this classification there is then the chance to prioritize which applications to migrate first and which can be eliminated completely. So a quadrant model for this prioritization could look like the one I depict in the following figure.&amp;#160; &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/5670.Priority_5F00_Quadrants_5F00_724443DB.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Priority Quadrants for Migration" border="0" alt="Priority Quadrants for Migration" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/3835.Priority_5F00_Quadrants_5F00_thumb_5F00_6908089A.png" width="380" height="314" /&gt;&lt;/a&gt;       &lt;br /&gt;The most important take away from this in my opinion is that you shouldn’t look at browser migration in the context of cost only but also in the context of opportunity to create a comprehensive web application inventory which many enterprises still lack today, streamline the web application landscape and increase value and productivity through innovation by using new features and standards not available or supported with older browsers.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Migration Guidance &amp;amp; generic process&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;So now I can get to the final guidance and outline a generic process for a browser migration. As it is quite generic and of course doesn’t touch any specifics of a certain vertical or even individual enterprise it looks quite simple but yet it is a good starting point to refine it and adapt it to the individual company.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/3022.Mig_5F00_Process_5F00_67573CC6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Generic browser migration process" border="0" alt="Generic browser migration process" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/1616.Mig_5F00_Process_5F00_thumb_5F00_6BED4780.png" width="740" height="550" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;A lot of text now simply to explain why I think that companies should &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;treat the browser as a mission critical application &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;define an independent strategy for it &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;realize that its time to migrate to a current browser &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;start migrating to Internet Explorer 8 today as it is probably still the best choice for enterprise IT-Environments because of its&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;Standards compliance &lt;/li&gt;        &lt;li&gt;Compatibility features &lt;/li&gt;        &lt;li&gt;Deployment options (&lt;a href="http://technet.microsoft.com/en-us/ie/bb219517.aspx" target="_blank"&gt;IEAK&lt;/a&gt;, &lt;a href="http://edge.technet.com/Media/Slipstreaming-Internet-Explorer-8-into-Windows-Vista/" target="_blank"&gt;Slipstreaming&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/wsus/default.aspx" target="_blank"&gt;WSUS&lt;/a&gt;, &lt;a href="http://www.microsoft.com/windowsserver2008/en/us/ad-main.aspx" target="_blank"&gt;AD&lt;/a&gt;, &lt;a href="http://www.microsoft.com/systemcenter/en/us/configuration-manager.aspx" target="_blank"&gt;SCCM&lt;/a&gt;) &lt;/li&gt;        &lt;li&gt;Group Policy customizability &lt;/li&gt;        &lt;li&gt;Unique security features (protected mode, domain model, etc.) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So hopefully I created some awareness and the thoughts I tried to express about this, certainly very complex, topic was understandable, a bit helpful and created a sense of urgency to &lt;strong&gt;&lt;font size="3"&gt;ACT NOW&lt;/font&gt;&lt;/strong&gt; then I reached my goal for this post. And finally the answer to the question if enterprises need an independent browser strategy is definitely “YES”.&lt;/p&gt;  &lt;p&gt;As always feel free to comment and start a discussion.&lt;/p&gt;  &lt;p&gt;&lt;a style="text-decoration: none" title="Bookmark to: Digg" onclick="window.open(&amp;#39;http://digg.com/submit?phase=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;bodytext=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://digg.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Digg" border="0" name="Digg" alt="Bookmark Digg" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FwVnXcQI/AAAAAAAABf8/8t8jUbCOQN0/s200/digg.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Del.icio.us" onclick="window.open(&amp;#39;http://del.icio.us/post?v=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;notes=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://del.icio.us/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Delicious" border="0" name="Delicious" alt="Bookmark Del.icio.us" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FmrXO-vI/AAAAAAAABf0/gK0oKdOJzMM/s200/delicious.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Facebook" onclick="window.open(&amp;#39;http://www.facebook.com/sharer.php?u=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;t=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.facebook.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Facebook" border="0" name="Facebook" alt="Bookmark Facebook" src="http://1.bp.blogspot.com/_vLeiVavkV_M/Sn0F1uQ7P_I/AAAAAAAABgE/zESf9tLZOtw/s200/facebook.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Reddit" onclick="window.open(&amp;#39;http://reddit.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://reddit.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Reddit" border="0" name="Reddit" alt="Bookmark Reddit" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0GDJUzotI/AAAAAAAABgU/qAA0KjdLgF8/s200/reddit.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: StumbleUpon" onclick="window.open(&amp;#39;http://www.stumbleupon.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.stumbleupon.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="StumbleUpon" border="0" name="StumbleUpon" alt="Bookmark StumbleUpon" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GJ5NxMRI/AAAAAAAABgc/zaraJzCuyXI/s200/stumbleupon.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Yahoo" onclick="window.open(&amp;#39;http://myweb2.search.yahoo.com/myresults/bookmarklet?t=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;&amp;amp;d=&amp;amp;tag=&amp;amp;u=&amp;#39;+encodeURIComponent(location.href));return false;" href="http://www.yahoo.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Yahoo" border="0" name="Yahoo" alt="Bookmark Yahoo" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GdCPWuUI/AAAAAAAABg0/-tjcrdMnRkA/s200/yahoo.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Google" onclick="window.open(&amp;#39;http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;annotation=&amp;amp;labels=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.google.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Google" border="0" name="Google" alt="Bookmark Google" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0F7200sZI/AAAAAAAABgM/ivmXOn18EZA/s200/google.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Technorati" onclick="window.open(&amp;#39;http://technorati.com/faves?add=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;tag=&amp;#39;);return false;" href="http://www.technorati.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Technorati" border="0" name="Technorati" alt="Bookmark Technorati" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GRQk71JI/AAAAAAAABgk/AT5wC4ZYB8g/s200/technorati.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Twitter" onclick=" window.open(&amp;#39;http://twitter.com/home?status=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;%20&amp;#39;+encodeURIComponent(location.href)); return false;" href="http://twitter.com/" rel="nofollow" target="_Blank"&gt;&lt;img style="padding-bottom: 1px" id="Twitter" border="0" name="Twitter" alt="Bookmark Twitter" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GYqWEWAI/AAAAAAAABgs/8715Vd67VtA/s200/twitter.png" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10014363" width="1" height="1"&gt;</description></item><item><title>A Few IE8 Tips for Developers And IT-Professionals</title><link>http://blogs.msdn.com/b/astrauss/archive/2010/05/25/a-few-ie8-tips-for-developers-and-it-professionals.aspx</link><pubDate>Tue, 25 May 2010 06:55:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10014360</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=10014360</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2010/05/25/a-few-ie8-tips-for-developers-and-it-professionals.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Use the WebSlice title for dynamic user related content&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The only information of a WebSlice that is visible while normal usage of the browser is the caption of the button in the favorites pane. This caption is provided by an HTML portion which is annotated with the keyword &lt;a href="http://msdn.microsoft.com/en-us/library/cc304073(VS.85).aspx#_basic" target="_blank"&gt;&lt;font face="Courier New"&gt;&lt;em&gt;entry-title&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&amp;#160; in the WebSlice's &lt;a href="http://msdn.microsoft.com/en-us/library/cc196992(VS.85).aspx#_altupdate" target="_blank"&gt;update source&lt;/a&gt;. So this is a valuable piece of information present all time in the Internet Explorer Chrome. So it is recommended to use it more wisely than to only display static text. So rather update the title with meaningful information. One good example could be to display the current points balance of a loyalty program.&lt;/p&gt;  &lt;p&gt;Simply add a dynamic &amp;lt;span&amp;gt;-Element which may even be hidden to a personalized web page template, mark this dynamic piece as the &lt;a href="http://msdn.microsoft.com/en-us/library/cc304073(VS.85).aspx#_basic" target="_blank"&gt;&lt;font face="Courier New"&gt;&lt;em&gt;entry-title&lt;/em&gt;&lt;/font&gt;&lt;/a&gt; and your done. It doesn’t matter if this is the main webpage of the respective provider or a specially created one as alternative display source for the web slice. Whenever the account balance changes this data is then automatically promoted into this page dynamically. With the next update check of IE the current balance is then shown in the caption of the WebSlice button in bold letters.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/5545.dyn_5F00_title_5F00_content_5F00_7E0EB0AF.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dyn_title_content" border="0" alt="dyn_title_content" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/8206.dyn_5F00_title_5F00_content_5F00_thumb_5F00_20EF7260.jpg" width="284" height="47" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;WebSlice Tracking&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Usage tracking of WebSlices is actually quite easy however there is a thing to remember. Internet Explorer checks for new WebSlice content in certain intervals. This interval is either defined by the WebSlice provider in the WebSlice content using the &lt;a href="http://msdn.microsoft.com/en-us/library/cc196992(VS.85).aspx#_upds" target="_blank"&gt;ttl-property&lt;/a&gt; or the user trough the WebSlice properties dialog or it defaults to 24 hours. Now when this interval passes the Internet Explorer 8 sends a request to the &lt;a href="http://msdn.microsoft.com/en-us/library/cc196992(VS.85).aspx#_altupdate" target="_blank"&gt;update source&lt;/a&gt; of the WebSlice through the &lt;a href="http://msdn.microsoft.com/en-us/library/ms686418(VS.85).aspx" target="_blank"&gt;Windows RSS Platform&lt;/a&gt; subsystem. This means that in the case of update checks for WebSlices is not Internet Explorer and thus also the user-agent string differs from the one for regular IE website requests. The user-agent string for those requests is:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font face="Courier New"&gt;User-Agent: Windows-RSS-Platform/2.0 (MSIE 8.0; Windows NT 6.1)&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;So you could use this user-agent string for tracking WebSlice usage however you need to know that simply checking for updates doesn’t imply really that the content is also recognized by the user. If you want to have real usage tracking you probably should use the commonly used website tracking scripts or tracking pixels methods and integrate them into the entry-content portion of your WebSlice and in addition if you have the possibility to alter the Headers of your HTTP-Response you should disable client side caching. If you implement it like that and know the update frequency you can easily calculate the real usage of the slice.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#ff8000"&gt;All Requests – Update checks in analyzing timeframe = Real usage/Real WebSlice impressions&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Even better would be to include all that in an alternative display source. This will give you the right usage numbers instantly as the display source is not requested when Internet Explorer checks for updated content. So this alternative content is only requested (and this time by IE with the original IE8 user-agent string) when the user clicks on the WebSlice button and opens the fly out.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Text fields in Accelerator Previews and WebSlice display sources&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As you may already know you can use an accelerator preview window and and WebSlice fly out to display rich and/or interactive content. So you can for example use &lt;a href="http://blogs.msdn.com/astrauss/archive/2008/08/28/ie8-beta2-the-ria-slice.aspx" target="_blank"&gt;Silverlight based applications&lt;/a&gt; to deliver great user experiences through those IE features and increase value and stickiness of your content. There is however at least one area where the WebSlice fly out behaves differently from the accelerator preview window and this is the use of text fields or textboxes. While you can use those as usual in WebSlices you shouldn’t in accelerator previews as the keyboard inputs are captured by the context menu where you chose the accelerator from and are not forwarded to the accelerator preview and thus the user is unable to type text into the text field. This behavior is technology agnostic and will occur in plain HTML as well as in Silverlight or Flash applications. So it needs a little bit of intelligent information design for accelerators to allow a user to provide feedback via meaningful and clickable elements (e.g. instead of letting the user type a location let him choose from a list or make some guesses based on the present context).&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Keyboard input is possible in WebSlices" border="0" alt="Keyboard input is possible in WebSlices" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/8206.keyb_5F00_slice_5F00_thumb_5F00_7B857EF1.jpg" width="240" height="216" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/7723.keyb_5F00_acc_5F00_412A0910.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Keyboard input not possible in Accelerator previews" border="0" alt="Keyboard input not possible in Accelerator previews" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/7723.keyb_5F00_acc_5F00_thumb_5F00_50E99E14.jpg" width="340" height="182" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Identifying IE8 when compatibility mode is active&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;It is already commonly known that Internet Explorer 8 ships with two rendering engines and allows website owners and users to enable a &lt;a href="http://blogs.msdn.com/astrauss/archive/2008/10/22/attaining-ie8-site-compatibility-short-reference.aspx" target="_blank"&gt;compatibility mode&lt;/a&gt;. So Internet Explorer 8 can be forced to behave like an Internet Explorer 7 by switching to the IE7 browser mode. As this needs to be a complete back level switch IE8 then also identifies as IE7 in its user-agent string. This is also true for querying the Window.navigator.appName, Window.navigator.appVersion and Window.navigator.userAgent properties using JavaScript. So if you rely on correctly identifying IE8 although the browser is currently operating in compatibility mode (for example you want to offer a customized IE8 download to users using older browsers) you need to change your identifying code a little bit and query the Document.&lt;a href="http://msdn.microsoft.com/en-us/library/cc196988%28v=VS.85%29.aspx"&gt;documentMode&lt;/a&gt; Property which is only available in Internet Explorer 8 (and probably in IE9). This will report the current document mode the browser is currently operating in if the user uses Internet Explorer 8 and is also available when the browser is in a back level browser mode.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/7723.clip_5F00_image001_5F00_019CA5C0.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DocumentMode Property in IE8" border="0" alt="DocumentMode Property in IE8" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/4118.clip_5F00_image001_5F00_thumb_5F00_47412FDE.jpg" width="240" height="207" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If the user however really uses a older version of IE or no IE at all the property is not available and the browser should return a “undefined” as result of your query for this object and you can handle the result accordingly.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/8712.clip_5F00_image00110_5F00_3AD30CB5.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DocumentMode property in IE7" border="0" alt="DocumentMode property in IE7" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-87-metablogapi/0714.clip_5F00_image00110_5F00_thumb_5F00_7D62A82D.jpg" width="240" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a style="text-decoration: none" title="Bookmark to: Digg" onclick="window.open(&amp;#39;http://digg.com/submit?phase=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;bodytext=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://digg.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Digg" border="0" name="Digg" alt="Bookmark Digg" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FwVnXcQI/AAAAAAAABf8/8t8jUbCOQN0/s200/digg.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Del.icio.us" onclick="window.open(&amp;#39;http://del.icio.us/post?v=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;notes=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://del.icio.us/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Delicious" border="0" name="Delicious" alt="Bookmark Del.icio.us" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FmrXO-vI/AAAAAAAABf0/gK0oKdOJzMM/s200/delicious.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Facebook" onclick="window.open(&amp;#39;http://www.facebook.com/sharer.php?u=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;t=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.facebook.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Facebook" border="0" name="Facebook" alt="Bookmark Facebook" src="http://1.bp.blogspot.com/_vLeiVavkV_M/Sn0F1uQ7P_I/AAAAAAAABgE/zESf9tLZOtw/s200/facebook.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Reddit" onclick="window.open(&amp;#39;http://reddit.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://reddit.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Reddit" border="0" name="Reddit" alt="Bookmark Reddit" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0GDJUzotI/AAAAAAAABgU/qAA0KjdLgF8/s200/reddit.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: StumbleUpon" onclick="window.open(&amp;#39;http://www.stumbleupon.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.stumbleupon.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="StumbleUpon" border="0" name="StumbleUpon" alt="Bookmark StumbleUpon" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GJ5NxMRI/AAAAAAAABgc/zaraJzCuyXI/s200/stumbleupon.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Yahoo" onclick="window.open(&amp;#39;http://myweb2.search.yahoo.com/myresults/bookmarklet?t=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;&amp;amp;d=&amp;amp;tag=&amp;amp;u=&amp;#39;+encodeURIComponent(location.href));return false;" href="http://www.yahoo.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Yahoo" border="0" name="Yahoo" alt="Bookmark Yahoo" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GdCPWuUI/AAAAAAAABg0/-tjcrdMnRkA/s200/yahoo.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Google" onclick="window.open(&amp;#39;http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;annotation=&amp;amp;labels=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.google.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Google" border="0" name="Google" alt="Bookmark Google" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0F7200sZI/AAAAAAAABgM/ivmXOn18EZA/s200/google.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Technorati" onclick="window.open(&amp;#39;http://technorati.com/faves?add=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;tag=&amp;#39;);return false;" href="http://www.technorati.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Technorati" border="0" name="Technorati" alt="Bookmark Technorati" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GRQk71JI/AAAAAAAABgk/AT5wC4ZYB8g/s200/technorati.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Twitter" onclick=" window.open(&amp;#39;http://twitter.com/home?status=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;%20&amp;#39;+encodeURIComponent(location.href)); return false;" href="http://twitter.com/" rel="nofollow" target="_Blank"&gt;&lt;img style="padding-bottom: 1px" id="Twitter" border="0" name="Twitter" alt="Bookmark Twitter" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GYqWEWAI/AAAAAAAABgs/8715Vd67VtA/s200/twitter.png" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10014360" width="1" height="1"&gt;</description></item><item><title>Application Partitioning with MEF, Silverlight and Windows Azure – Part II</title><link>http://blogs.msdn.com/b/astrauss/archive/2010/04/28/application-partitioning-with-mef-silverlight-and-windows-azure-part-ii.aspx</link><pubDate>Wed, 28 Apr 2010 11:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10003830</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=10003830</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2010/04/28/application-partitioning-with-mef-silverlight-and-windows-azure-part-ii.aspx#comments</comments><description>&lt;P&gt;Welcome back to the partitioned blog post about application partitioning with Silverlight MEF and Windows Azure. In this second and last post I will talk about how you can retrieve the information about the deployed parts of the application and retrieve the actual XAP files from the Azure Blob Storage.&lt;/P&gt;
&lt;P&gt;Still we only have one Silverlight project where we added just one interface as the contract for the import and lazy initialization and an attribute class to flag our parts in the Silverlight projects to come as user controls to be exported as parts of the application meeting the specified contract.&lt;/P&gt;
&lt;P&gt;Now we can extend the class corresponding to our shell to handle the imports of those attributed parts. This is also straight forward and follows the standard MEF procedures.&lt;/P&gt;
&lt;P&gt;First thing to do would be to define a property attributed with the &lt;A href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.importmanyattribute(v=VS.100).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.importmanyattribute(v=VS.100).aspx"&gt;&lt;EM&gt;&lt;FONT face="Courier New"&gt;ImportMany&lt;/FONT&gt;&lt;/EM&gt;&lt;/A&gt; attribute to tell MEF that it should populate this property with all (not just one) exports meeting the requirements of the importing application. This requirement is actually the contract I were talking about before.&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: '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;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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;[ImportMany(AllowRecomposition = &lt;SPAN style="COLOR: #0000ff"&gt;true&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: 'Courier New', 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; IEnumerable&amp;lt;Lazy&amp;lt;UserControl, IPartAttributes&amp;gt;&amp;gt; Parts { get; set; }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Important to note is the &lt;A href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.importmanyattribute.allowrecomposition(v=VS.100).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.importmanyattribute.allowrecomposition(v=VS.100).aspx"&gt;&lt;FONT face="Courier New"&gt;&lt;EM&gt;AllowRecomposition&lt;/EM&gt;&lt;/FONT&gt;&lt;/A&gt; property for the &lt;FONT face="Courier New"&gt;&lt;EM&gt;ImportMany&lt;/EM&gt;&lt;/FONT&gt; attribute which tells &lt;FONT face="Courier New"&gt;&lt;EM&gt;CompositionContainer&lt;/EM&gt;&lt;/FONT&gt; to repopulate (recompose) when exports change. Now that we have this we still need to tell MEF to actually populate this property and this is as easy as calling the &lt;FONT color=#333333 face="Courier New"&gt;&lt;EM&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.compositioninitializer_members(v=VS.95).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.compositioninitializer_members(v=VS.95).aspx"&gt;SatisfyImports&lt;/A&gt;&lt;/EM&gt;&lt;/FONT&gt; method on the of &lt;FONT color=#333333 face="Courier New"&gt;&lt;EM&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.compositioninitializer(v=VS.95).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.compositioninitializer(v=VS.95).aspx"&gt;CompositionInitializer&lt;/A&gt;&lt;/EM&gt;&lt;/FONT&gt; class. For real world projects you should however be aware of the limitations of &lt;FONT face="Courier New"&gt;&lt;EM&gt;CompositionInitializer&lt;/EM&gt;&lt;/FONT&gt;.&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: '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;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: 'Courier New', 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;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; MainPage : UserControl, IPartImportsSatisfiedNotification&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: 'Courier New', 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: 'Courier New', 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; MainPage()&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        InitializeComponent();&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        CompositionInitializer.SatisfyImports(&lt;SPAN style="COLOR: #0000ff"&gt;this&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: 'Courier New', 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: 'Courier New', 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: 'Courier New', 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: 'Courier New', 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: 'Courier New', 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;In order to recognize when all imports have been finished (or satisfied) the class also implements an interface which lets MEF automatically call the &lt;FONT face="Courier New"&gt;&lt;EM&gt;OnImportsSatisfied&lt;/EM&gt;&lt;/FONT&gt; method when recomposition occurs. As a side note it would make sense to follow implement the &lt;A href="http://en.wikipedia.org/wiki/Model_View_ViewModel" target=_blank mce_href="http://en.wikipedia.org/wiki/Model_View_ViewModel"&gt;Model View ViewModel&lt;/A&gt; pattern for this application as well then you would factor out this code into a ViewModel class and mark that exportable and then again import it as a part into the main applications shell class printed above. How this can be done is described in a &lt;A href="http://blogs.msdn.com/gblock/archive/2010/03/08/building-hellomef-part-v-refactoring-to-viewmodel.aspx" target=_blank mce_href="http://blogs.msdn.com/gblock/archive/2010/03/08/building-hellomef-part-v-refactoring-to-viewmodel.aspx"&gt;blog post by Glen Block&lt;/A&gt;. Continuing with this sample however there is one last thing to do which is to filter and add the UserControls imported by MEF to the items collections of the respective &lt;FONT face="Courier New"&gt;&lt;EM&gt;ItemsControl&lt;/EM&gt;&lt;/FONT&gt;. That involves two steps actually:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Clear the items collections of the ItemsControls &lt;/LI&gt;
&lt;LI&gt;Filter and add the new imports &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Here’s the simplistic implementation for the shell areas in this sample application.&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: '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;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: 'Courier New', 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;void&lt;/SPAN&gt; OnImportsSatisfied()&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    ClearShellItemControls();&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    PopulateShellAreas();&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&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: 'Courier New', 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; PopulateShellAreas()&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    var headerParts = Parts.Where(p =&amp;gt; p.Metadata.IsHeaderPart == &lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;).Select(p =&amp;gt; p.Value);&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: 'Courier New', 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;foreach&lt;/SPAN&gt; (var hPart &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; headerParts)&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        header.Items.Add(hPart);&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    var leftnavParts = Parts.Where(p =&amp;gt; p.Metadata.IsLeftNavPart == &lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;).Select(p =&amp;gt; p.Value);&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: 'Courier New', 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;foreach&lt;/SPAN&gt; (var lnPart &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; leftnavParts)&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        leftnav.Items.Add(lnPart);&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    var workbenchParts = Parts.Where(p =&amp;gt; p.Metadata.IsWorkbenchPart == &lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;).Select(p =&amp;gt; p.Value);&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: 'Courier New', 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;foreach&lt;/SPAN&gt; (var wbPart &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; workbenchParts)&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        workbench.Items.Add(wbPart);&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    var footerParts = Parts.Where(p =&amp;gt; p.Metadata.IsFooterPart == &lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;).Select(p =&amp;gt; p.Value);&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: 'Courier New', 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;foreach&lt;/SPAN&gt; (var fPart &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; footerParts)&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        footer.Items.Add(fPart);&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: 'Courier New', 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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&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: 'Courier New', 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; ClearShellItemControls()&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    header.Items.Clear();&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    leftnav.Items.Clear();&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    workbench.Items.Clear();&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    footer.Items.Clear();&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: 'Courier New', 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;Next thing to do now is the handle the means on how the application gets to know which XAPs to retrieve in order to import the parts into the container. As already pointed out we need to keep the information about which XAP files belong to the application and their storing location outside of the original Windows Azure deployment package (.cspkg). Because if we would keep it internally we would need to redeploy the package whenever the list of XAP files changes which is something what we don’t want to do.&lt;/P&gt;
&lt;P&gt;It would of course be possible to put this information into the configuration file of the cloud service which is exposed through the Windows Azure management portal or the &lt;A href="http://msdn.microsoft.com/en-us/library/ee460799(v=MSDN.10).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ee460799(v=MSDN.10).aspx"&gt;Management API&lt;/A&gt;. However this is does only really help for the task of changing the information about the application parts easily. It does however introduce some difficulties in retrieving those values from the Silverlight client which does not have any direct means to get to the configuration settings of the service. So we would need this information through some mechanics embedded into the hosting ASP.Net page or surface it through an respective web service. For simplicity I tool another approach and put a simple XML file also into the blob storage which I then can retrieve easily from my Silverlight application and I can also easily change and redeploy it by simply downloading, changing and uploading it again using my preferred tools. The file itself was already shown in &lt;A href="http://blogs.msdn.com/astrauss/archive/2010/04/27/application-partitioning-with-mef-silverlight-and-windows-azure-part-i.aspx" target=_blank mce_href="http://blogs.msdn.com/astrauss/archive/2010/04/27/application-partitioning-with-mef-silverlight-and-windows-azure-part-i.aspx"&gt;the previous post of this series&lt;/A&gt; so now I will focus on how to retrieve it which is absolutely straight forward by using a standard Silverlight WebClient class in the Application_Startup method of the main application to get the file.&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: '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;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: 'Courier New', 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; Application_Startup(&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; sender, StartupEventArgs 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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    WebClient wClient = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; WebClient();&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    wClient.DownloadStringCompleted += &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; DownloadStringCompletedEventHandler(wClient_DownloadStringCompleted);&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    wClient.DownloadStringAsync(&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; Uri(&lt;SPAN style="COLOR: #006080"&gt;"http://&amp;lt;storageaccount&amp;gt;.blob.core.windows.net/mefparts/DeploymentCatalog.xml"&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    CompositionHost.Initialize(&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; DeploymentCatalog(), catalogs);&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: 'Courier New', 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;.RootVisual = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; MainPage();&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: 'Courier New', 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;Then we can parse the file and for each part start an asynchronous download of the XAP files into an &lt;FONT color=#333333 face="Courier New"&gt;&lt;EM&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.hosting.aggregatecatalog(v=VS.95).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.hosting.aggregatecatalog(v=VS.95).aspx"&gt;AggregateCatalog&lt;/A&gt;&lt;/EM&gt;&lt;/FONT&gt; which is the type of the &lt;FONT face="Courier New"&gt;&lt;EM&gt;catalogs&lt;/EM&gt;&lt;/FONT&gt; object in the code 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: '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;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: 'Courier New', 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;void&lt;/SPAN&gt; wClient_DownloadStringCompleted(&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; sender, DownloadStringCompletedEventArgs 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: 'Courier New', 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: 'Courier New', 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; (e.Error == &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: #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"&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: 'Courier New', 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;string&lt;/SPAN&gt; deploymentCatalogDefinition = e.Result;&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        XDocument doc = XDocument.Parse(deploymentCatalogDefinition);&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        var v = doc.Descendants(&lt;SPAN style="COLOR: #006080"&gt;"PartFile"&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: 'Courier New', 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;foreach&lt;/SPAN&gt; (XElement xe &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; v)&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;            catalogs.Catalogs.Add(CreateCatalog(xe.Attribute(&lt;SPAN style="COLOR: #006080"&gt;"name"&lt;/SPAN&gt;).Value));&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: 'Courier New', 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: 'Courier New', 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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&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: 'Courier New', 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; DeploymentCatalog CreateCatalog(&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; partName)&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    Uri uri = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; Uri(&lt;SPAN style="COLOR: #006080"&gt;"http://&amp;lt;storageaccount&amp;gt;.blob.core.windows.net/"&lt;/SPAN&gt; + partName);&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    var catalog = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; DeploymentCatalog(uri);&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    catalog.DownloadCompleted += &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; EventHandler&amp;lt;System.ComponentModel.AsyncCompletedEventArgs&amp;gt;(catalog_DownloadCompleted);&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    catalog.DownloadAsync();&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: 'Courier New', 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;return&lt;/SPAN&gt; catalog;&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: 'Courier New', 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;For this to work however there is one prerequisite to be met on the blob storage side and this is to allow public access for retrieving blobs from the container holding the XAP files and the DeploymentCatalog.xml file. This can of course be done with one of the various tools for managing the Azure Storage Service or if you created the container using the StorageClient class library you can create the container and set the permissions respectively. This also gives you two other advantages which are:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The Silverlight application does not need to carry the shared key of your storage account to retrieve blobs which would impose a security risk &lt;/LI&gt;
&lt;LI&gt;You do not need to create REST calls to the storage service including the authorization and other headers as there is no StorageClient library available for Silverlight &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;This completes main application and it’s now time to create the parts that comprise the meat of the current applications. For this sample there is actually not much more to do than:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;To add another Silverlight project to the solution. It is recommended to make sure that you uncheck the option to host the Silverlight application in the existing web project. It actually does no harm if it is added however it bloats the cloud service package with the XAPs which are not needed there. &lt;BR&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/Sl_VS_Wizard_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/Sl_VS_Wizard_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="Silverlight Project Wizard in Visual Studio" border=0 alt="Silverlight Project Wizard in Visual Studio" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/Sl_VS_Wizard_thumb.jpg" width=324 height=279 mce_src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/Sl_VS_Wizard_thumb.jpg"&gt;&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Create the UI for the part &lt;BR&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: '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;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: 'Courier New', 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;x:Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="LayoutRoot"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;Background&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="LightBlue"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;Height&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="50"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;VerticalAlignment&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Top"&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: 'Courier New', 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;HorizontalAlignment&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Center"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;VerticalAlignment&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Center"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;Text&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Footer"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;FontSize&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="16"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;FontWeight&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Bold"&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: 'Courier New', 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;/DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;And then add the MetadataAttribute and the contract interface to the project like it was done in the main application &lt;BR&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/Meta_Interf_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/Meta_Interf_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=Meta_Interf border=0 alt=Meta_Interf src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/Meta_Interf_thumb.jpg" width=230 height=187 mce_src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/Meta_Interf_thumb.jpg"&gt;&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Mark the UserControl exportable using the MetadataAttribute just added to the project &lt;BR&gt;&lt;BR&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: '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;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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;[ExportPart(IsFooterPart=&lt;SPAN style="COLOR: #0000ff"&gt;true&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: 'Courier New', 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;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; MainPage : 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: white; 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"&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: 'Courier New', 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; MainPage()&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        InitializeComponent();&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: 'Courier New', 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: 'Courier New', 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;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is then usually repeated for all other parts of the application until all areas have a populating part located in an external XAP. For this sample the complete Solution structure looks lie this.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/solution_structure_s_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/solution_structure_s_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="Solution Structure in Visual Studio" border=0 alt="Solution Structure in Visual Studio" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/solution_structure_s_thumb.jpg" width=240 height=152 mce_src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/solution_structure_s_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The main project (here “DynamicCloudRIA”) is deployed via the WebRole project (here “DynMefWebRole1”) as a standard cloud solution project and the XAPs of the other Silverlight projects can be uploaded to the respective container in the Windows Azure Blob Storage. For this sample the container contents look like shown below.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/blobstorage_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/blobstorage_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="Blob Container Contents" border=0 alt="Blob Container Contents" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/blobstorage_thumb.jpg" width=640 height=163 mce_src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_833F/blobstorage_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;After this has been done the application should already run and show the shell and the dynamically loaded application parts. Hopefully this helps to understand how MEF can help to create partitioned applications with loosely coupled application parts even when the application and its parts is deployed on a cloud platform such as Windows Azure. The source code for the sample is attached for download below.&lt;/P&gt;
&lt;P&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Digg" onclick="window.open('http://digg.com/submit?phase=2&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;bodytext=&amp;amp;tags=&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://digg.com/" rel=nofollow mce_href="http://digg.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Digg border=0 name=Digg alt="Bookmark Digg" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FwVnXcQI/AAAAAAAABf8/8t8jUbCOQN0/s200/digg.png" mce_src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FwVnXcQI/AAAAAAAABf8/8t8jUbCOQN0/s200/digg.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Del.icio.us" onclick="window.open('http://del.icio.us/post?v=2&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;notes=&amp;amp;tags=&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://del.icio.us/" rel=nofollow mce_href="http://del.icio.us/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Delicious border=0 name=Delicious alt="Bookmark Del.icio.us" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FmrXO-vI/AAAAAAAABf0/gK0oKdOJzMM/s200/delicious.png" mce_src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FmrXO-vI/AAAAAAAABf0/gK0oKdOJzMM/s200/delicious.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Facebook" onclick="window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(location.href)+'&amp;amp;t='+encodeURIComponent(document.title));return false;" href="http://www.facebook.com/" rel=nofollow mce_href="http://www.facebook.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Facebook border=0 name=Facebook alt="Bookmark Facebook" src="http://1.bp.blogspot.com/_vLeiVavkV_M/Sn0F1uQ7P_I/AAAAAAAABgE/zESf9tLZOtw/s200/facebook.png" mce_src="http://1.bp.blogspot.com/_vLeiVavkV_M/Sn0F1uQ7P_I/AAAAAAAABgE/zESf9tLZOtw/s200/facebook.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Reddit" onclick="window.open('http://reddit.com/submit?url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://reddit.com/" rel=nofollow mce_href="http://reddit.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Reddit border=0 name=Reddit alt="Bookmark Reddit" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0GDJUzotI/AAAAAAAABgU/qAA0KjdLgF8/s200/reddit.png" mce_src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0GDJUzotI/AAAAAAAABgU/qAA0KjdLgF8/s200/reddit.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: StumbleUpon" onclick="window.open('http://www.stumbleupon.com/submit?url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://www.stumbleupon.com/" rel=nofollow mce_href="http://www.stumbleupon.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=StumbleUpon border=0 name=StumbleUpon alt="Bookmark StumbleUpon" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GJ5NxMRI/AAAAAAAABgc/zaraJzCuyXI/s200/stumbleupon.png" mce_src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GJ5NxMRI/AAAAAAAABgc/zaraJzCuyXI/s200/stumbleupon.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Yahoo" onclick="window.open('http://myweb2.search.yahoo.com/myresults/bookmarklet?t='+encodeURIComponent(document.title)+'&amp;amp;d=&amp;amp;tag=&amp;amp;u='+encodeURIComponent(location.href));return false;" href="http://www.yahoo.com/" rel=nofollow mce_href="http://www.yahoo.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Yahoo border=0 name=Yahoo alt="Bookmark Yahoo" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GdCPWuUI/AAAAAAAABg0/-tjcrdMnRkA/s200/yahoo.png" mce_src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GdCPWuUI/AAAAAAAABg0/-tjcrdMnRkA/s200/yahoo.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Google" onclick="window.open('http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk='+encodeURIComponent(location.href)+'&amp;amp;annotation=&amp;amp;labels=&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://www.google.com/" rel=nofollow mce_href="http://www.google.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Google border=0 name=Google alt="Bookmark Google" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0F7200sZI/AAAAAAAABgM/ivmXOn18EZA/s200/google.png" mce_src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0F7200sZI/AAAAAAAABgM/ivmXOn18EZA/s200/google.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Technorati" onclick="window.open('http://technorati.com/faves?add='+encodeURIComponent(location.href)+'&amp;amp;tag=');return false;" href="http://www.technorati.com/" rel=nofollow mce_href="http://www.technorati.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Technorati border=0 name=Technorati alt="Bookmark Technorati" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GRQk71JI/AAAAAAAABgk/AT5wC4ZYB8g/s200/technorati.png" mce_src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GRQk71JI/AAAAAAAABgk/AT5wC4ZYB8g/s200/technorati.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title=Twitter onclick=" window.open('http://twitter.com/home?status='+encodeURIComponent(document.title)+'%20'+encodeURIComponent(location.href)); return false;" href="http://twitter.com/" rel=nofollow target=_Blank mce_href="http://twitter.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Twitter border=0 name=Twitter alt="Bookmark Twitter" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GYqWEWAI/AAAAAAAABgs/8715Vd67VtA/s200/twitter.png" mce_src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GYqWEWAI/AAAAAAAABgs/8715Vd67VtA/s200/twitter.png"&gt; &lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10003830" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-00-38-30/DynamicMefCloud.zip" length="417190" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Silverlight/">Silverlight</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Application Partitioning with MEF, Silverlight and Windows Azure – Part I</title><link>http://blogs.msdn.com/b/astrauss/archive/2010/04/27/application-partitioning-with-mef-silverlight-and-windows-azure-part-i.aspx</link><pubDate>Tue, 27 Apr 2010 18:31:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10003373</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=10003373</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2010/04/27/application-partitioning-with-mef-silverlight-and-windows-azure-part-i.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://mef.codeplex.com/" target="_blank"&gt;Managed Extensibility Framework (MEF)&lt;/a&gt; supports you in creating loosely coupled and partitioned applications. To embrace those paradigms makes sense for many reasons. Some of the various benefits are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;&lt;strong&gt;Share work across multiple developers or development team and have a well defined boundaries for the work items of the teams based on MEF components &lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;strong&gt;Dynamic extension or updates of application parts or components without a complete redeployment and long downtimes &lt;/strong&gt;&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;MEF has been around in the .Net Framework for quite some time and since the current release of Silverlight 4 it is also available for use in Silverlight applications.&lt;/p&gt;  &lt;p&gt;Especially for the use in Silverlight and to introduce application partitioning on with having application XAP files as physical component boundaries it was necessary to alter the capabilities of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.hosting.directorycatalog%28v=VS.100%29.aspx" target="_blank"&gt;&lt;em&gt;&lt;font face="Courier New"&gt;DirectoryCatalog&lt;/font&gt;&lt;/em&gt;&lt;/a&gt; class as now the the application parts are not sitting in a local file system directory as assemblies but as XAP archives on a remote web server.&lt;/p&gt;  &lt;p&gt;Therefore the &lt;em&gt;&lt;font face="Courier New"&gt;DirectoryCatalog&lt;/font&gt;&lt;/em&gt; was replaced by the &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.hosting.deploymentcatalog%28v=VS.95%29.aspx" target="_blank"&gt;&lt;em&gt;&lt;font face="Courier New"&gt;DeploymentCatalog&lt;/font&gt;&lt;/em&gt;&lt;/a&gt; in Silverlight. However as far as I understand this comes with one shortcoming which is that you need to specify an direct URL to the XAP files that you want to include into your application. As long as you do not externalize a component that provides those URLs you won not much in terms of loose coupling. But if you do externalize the URL “injection” you have all possibilities MEF offers with respect to dynamically compose applications. Even more you then also have better possibilities to use &lt;a href="http://www.azure.com/" target="_blank"&gt;Windows Azure&lt;/a&gt; as the hosting environment for your Silverlight Application. In this Blog post I will demonstrate how this can work in an easy example.&lt;/p&gt;  &lt;p&gt;The sample application is partitioned based on UI components to make the concept as obvious as possible. First the main application simply defines some UI areas with an &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol(v=VS.95).aspx" target="_blank"&gt;&lt;font face="Courier New"&gt;&lt;em&gt;ItemsControl&lt;/em&gt;&lt;/font&gt;&lt;/a&gt; as placeholder for the actual partial UI coming from the external XAPs. So you can more or less say that we define a shell and content modules. From the UI point of view this feels quite a bit like the &lt;a href="http://msdn.microsoft.com/en-us/library/cc707890.aspx" target="_blank"&gt;Composite Application Library (CAL)&lt;/a&gt; for Silverlight however the CAL still goes a little bit beyond what we want to accomplish here. The overall application structure looks like the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_B9DC/DynMefSlAzure_Structure_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="Partitioned Silverlight Application on Windows Azure" border="0" alt="Partitioned Silverlight Application on Windows Azure" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_B9DC/DynMefSlAzure_Structure_thumb.jpg" width="640" height="322" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;First thing to mention is that we have actually two locations were application parts are stored and served from. As this might seem a bit odd it is however necessary due to the nature of how application packages are deployed on Windows Azure and due to the fact that you do not have direct access to the directories of the web server and the websites. So in order to be able to deploy and provide application parts after the initial deployment we need a place where we put the extending XAP files and were the main application can pick it up. In our case the XAPs are provided through the Windows Azure Blob Storage. This comes in handy as you can use your own or some third party tools to put your XAPs and the related artifacts into the Windows Azure storage.&lt;/p&gt;  &lt;p&gt;There is however one thing to be aware of which is that now with having two different locations the cross domain restrictions of Silverlight will intercept and prevent Silverlight or to be more precise MEF from downloading the extending XAPs from blob storage.&lt;/p&gt;  &lt;p&gt;Therefore we need to deploy a Silverlight policy file on the target server which in our case is the root of our blob storage account. The file needs to be named &lt;font face="Courier New"&gt;&lt;em&gt;ClientAccess.xml&lt;/em&gt;&lt;/font&gt;. An excellent example how to deploy such kind of file can be found in &lt;a href="http://blog.smarx.com/posts/uploading-windows-azure-blobs-from-silverlight-part-2-enabling-cross-domain-access-to-blobs" target="_blank"&gt;this blog post by Steve Marx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What you also need is some kind of external artifact to the application that tells the main application where and which XAPs to download and integrate as parts into the application. In my case I chose to define that in a simple XML file&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;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;utf-8&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;Deployment&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;Catalog&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;PartFile&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;mefparts/DynamicCloudRIA.Header.xap&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;PartFile&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;mefparts/DynamicCloudRIA.LeftNav.xap&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;PartFile&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;mefparts/DynamicCloudRIA.Workbench.xap&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;PartFile&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;mefparts/DynamicCloudRIA.Footer.xap&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;Catalog&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;Deployment&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;So now that I have this prerequisites I can start creating the main application and the application parts. The following screenshot shows the result of this demonstration which is actually a very simple UI which is composed from 5 different XAP files. It is important to note that implementation of functionality does not matter for this sample but the structure and the coupling of the different UI parts through MEF.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_B9DC/DynCloudRIA_Screen_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="Application Screenshot" border="0" alt="Application Screenshot" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/ApplicationPartitioningwithMEFSilverligh_B9DC/DynCloudRIA_Screen_thumb.jpg" width="640" height="465" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To start off I created a new Cloud Project in Visual Studio 2010 with one WebRole and then added a Silverlight Project to the cloud solution which is referenced by the WebRole project. The main UI layout is defined in the main Silverlight application. In this sample a Grid is defined with three rows and two columns. Then a placeholder for each area is defined as an ItemsControl. The XAML for this simple main layout looks like this (I used a fixed size layout for simplicity):&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;Grid&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;White&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;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;ColumnDefinition&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;200&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;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: 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;Grid.RowDefinitions&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;RowDefinition&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;50&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;RowDefinition&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;RowDefinition&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;50&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;Grid.RowDefinitions&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;ItemsControl&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;header&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;ColumnSpan&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;Row&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;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;ItemsControl&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;leftnav&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;ColumnSpan&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;Row&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: 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;ItemsControl&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;workbench&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;ColumnSpan&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;Row&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&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: #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;ItemsControl&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;footer&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;ColumnSpan&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;Row&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;2&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&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;&lt;/p&gt;

&lt;p&gt;Next we have to implement some basic “infrastructure” for this sample in order to make it work. First is we have to define a &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.metadataattributeattribute%28v=VS.95%29.aspx" target="_blank"&gt;&lt;font face="Courier ne"&gt;&lt;em&gt;MetadataAttribute&lt;/em&gt;&lt;/font&gt;&lt;/a&gt; in order to allow us to filter the UserControls inside the asynchronous downloaded XAPs for the area they want to attach to. To get to know more about that I recommend to watch the &lt;a href="http://channel9.msdn.com/shows/SilverlightTV/Silverlight-TV-Episode-5-Using-Metadata-with-MEF/" target="_blank"&gt;Silverlight TV Episode 5: Using Metadata with MEF&lt;/a&gt;. For my sample I added the following class to my main application project.&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;[MetadataAttribute]&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;[AttributeUsage(AttributeTargets.Class, AllowMultiple = &lt;span style="color: #0000ff"&gt;false&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;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ExportPart : ExportAttribute&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;public&lt;/span&gt; ExportPart() : &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(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;&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; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; IsHeaderPart { get; 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;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; IsFooterPart { get; 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: 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;bool&lt;/span&gt; IsLeftNavPart { get; 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;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; IsWorkbenchPart { get; 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: 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;As we want to access the metadata or better say &lt;a href="http://mef.codeplex.com/wikipage?title=Exports%20and%20Metadata&amp;amp;referringTitle=Guide" target="_blank"&gt;filter for the metadata in a strongly typed fashion&lt;/a&gt; we need to define an interface with matching read only properties to those exposed in the &lt;em&gt;&lt;font face="Courier New"&gt;MetadataAttribute&lt;/font&gt;&lt;/em&gt;. This allows us to import the application parts with such an &lt;font face="Courier New"&gt;&lt;em&gt;ExportAttribute&lt;/em&gt;&lt;/font&gt; with lazy initialization using the Type &lt;em&gt;&lt;font face="Courier New"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd986615%28v=VS.95%29.aspx" target="_blank"&gt;System.Lazy&amp;lt;T, TMetadata&amp;gt;&lt;/a&gt;&lt;/font&gt;&lt;/em&gt;. This looks like the following in this sample:&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;interface&lt;/span&gt; IPartAttributes&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;bool&lt;/span&gt; IsHeaderPart { get; }&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;bool&lt;/span&gt; IsFooterPart { get; }&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;bool&lt;/span&gt; IsLeftNavPart { get; }&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;bool&lt;/span&gt; IsWorkbenchPart { get; }&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;That’s it for the moment. In the next part I will discuss how to import parts handle the XAP retrieval and do the deployment. So stay tuned.&lt;/p&gt;

&lt;p&gt;&lt;a style="text-decoration: none" title="Bookmark to: Digg" onclick="window.open(&amp;#39;http://digg.com/submit?phase=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;bodytext=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://digg.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Digg" border="0" name="Digg" alt="Bookmark Digg" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FwVnXcQI/AAAAAAAABf8/8t8jUbCOQN0/s200/digg.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Del.icio.us" onclick="window.open(&amp;#39;http://del.icio.us/post?v=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;notes=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://del.icio.us/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Delicious" border="0" name="Delicious" alt="Bookmark Del.icio.us" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FmrXO-vI/AAAAAAAABf0/gK0oKdOJzMM/s200/delicious.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Facebook" onclick="window.open(&amp;#39;http://www.facebook.com/sharer.php?u=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;t=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.facebook.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Facebook" border="0" name="Facebook" alt="Bookmark Facebook" src="http://1.bp.blogspot.com/_vLeiVavkV_M/Sn0F1uQ7P_I/AAAAAAAABgE/zESf9tLZOtw/s200/facebook.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Reddit" onclick="window.open(&amp;#39;http://reddit.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://reddit.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Reddit" border="0" name="Reddit" alt="Bookmark Reddit" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0GDJUzotI/AAAAAAAABgU/qAA0KjdLgF8/s200/reddit.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: StumbleUpon" onclick="window.open(&amp;#39;http://www.stumbleupon.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.stumbleupon.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="StumbleUpon" border="0" name="StumbleUpon" alt="Bookmark StumbleUpon" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GJ5NxMRI/AAAAAAAABgc/zaraJzCuyXI/s200/stumbleupon.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Yahoo" onclick="window.open(&amp;#39;http://myweb2.search.yahoo.com/myresults/bookmarklet?t=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;&amp;amp;d=&amp;amp;tag=&amp;amp;u=&amp;#39;+encodeURIComponent(location.href));return false;" href="http://www.yahoo.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Yahoo" border="0" name="Yahoo" alt="Bookmark Yahoo" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GdCPWuUI/AAAAAAAABg0/-tjcrdMnRkA/s200/yahoo.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Google" onclick="window.open(&amp;#39;http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;annotation=&amp;amp;labels=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.google.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Google" border="0" name="Google" alt="Bookmark Google" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0F7200sZI/AAAAAAAABgM/ivmXOn18EZA/s200/google.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Technorati" onclick="window.open(&amp;#39;http://technorati.com/faves?add=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;tag=&amp;#39;);return false;" href="http://www.technorati.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Technorati" border="0" name="Technorati" alt="Bookmark Technorati" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GRQk71JI/AAAAAAAABgk/AT5wC4ZYB8g/s200/technorati.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Twitter" onclick=" window.open(&amp;#39;http://twitter.com/home?status=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;%20&amp;#39;+encodeURIComponent(location.href)); return false;" href="http://twitter.com/" rel="nofollow" target="_Blank"&gt;&lt;img style="padding-bottom: 1px" id="Twitter" border="0" name="Twitter" alt="Bookmark Twitter" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GYqWEWAI/AAAAAAAABgs/8715Vd67VtA/s200/twitter.png" /&gt; &lt;/a&gt;&lt;!-- End Add Social Bookmark Buttons - small buttons - blogknowhow.blogspot.com --&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10003373" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Silverlight/">Silverlight</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Tales About Working With The Azure Service Management API – Chapter III</title><link>http://blogs.msdn.com/b/astrauss/archive/2010/02/17/tales-about-working-with-the-azure-service-management-api-chapter-iii.aspx</link><pubDate>Wed, 17 Feb 2010 10:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9964953</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9964953</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2010/02/17/tales-about-working-with-the-azure-service-management-api-chapter-iii.aspx#comments</comments><description>&lt;P&gt;After &lt;A href="http://blogs.msdn.com/astrauss/archive/2010/02/15/tales-about-working-with-the-azure-service-management-api-chapter-ii.aspx" target=_blank mce_href="http://blogs.msdn.com/astrauss/archive/2010/02/15/tales-about-working-with-the-azure-service-management-api-chapter-ii.aspx"&gt;my last post&lt;/A&gt; I was a little bit dissatisfied with the fact that if you use the scripts frequently the blob storage container will fill up quite a bit. As already outlined this will affect the monthly charges billed to your account especially when you are deploying in a high frequency and have to deploy large packages. So I was looking for a solution to that.&lt;/P&gt;
&lt;P&gt;So as we are already operating in a Windows Powershell environment I thought the best way to resolve this would be to provide a commandlet that does enable you to delete the deployment packages in the blob storage. So I created a small that of commandlets which enable you to interact with the Windows Azure blob storage based on the official StorageClient managed API. I packaged the commandlets into a &lt;A href="http://msdn.microsoft.com/en-us/library/ms714450(VS.85).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms714450(VS.85).aspx"&gt;SnapIn&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The available commandlets so far are:&lt;/P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=2 width=597&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=137&gt;&lt;EM&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;Get-Storage&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=458&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&lt;EM&gt;This represents the base storage service with the elemental properties “SharedKey” and “StorageAccount” which are needed for almost every subsequent operation.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=140&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&lt;EM&gt;Get-Container&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=456&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&lt;EM&gt;Lists the container currently available in the blob storage account. This commandlet is not needed for the task of removing the deployment packages.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=142&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&lt;EM&gt;Get-Bloblist&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=454&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&lt;EM&gt;This commandlet lists the blobs of a specific container and holds a property of “BlobList” which can be used as a piping parameter for the Remove-Blob commandlet. It allows for simple filtering based on extensions with the “ExtensionFilter” parameter. So for our task you could filter for the “cspkg” extension to target all deployment packages.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=144&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&lt;EM&gt;Remove-Blob&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=453&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&lt;EM&gt;This commandlet removes the blobs provided via the “BlobList” parameter or all blobs in the container if no list is provided. So be careful in using this commandlet.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;The code is attached to this blog post. I choose to provide it in a separate SnapIn package however you could also add it to the &lt;A title="Windows Azure Service Management CmdLets" href="http://code.msdn.microsoft.com/azurecmdlets" mce_href="http://code.msdn.microsoft.com/azurecmdlets"&gt;Windows Azure Service Management CmdLets&lt;/A&gt; project which is also provided as source code. If you use the package as is you need to install it once using the &lt;A href="http://msdn.microsoft.com/en-us/library/50614e95(VS.80).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/50614e95(VS.80).aspx"&gt;Installer Tool&lt;/A&gt; shipping with the .Net Framework. So you need to issue a command similar to this:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT face="Courier New"&gt;c:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe AzureCommandletCollection.dll&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;After doing so you can check if the AzureCommandletCollectionSnapIn is listed as a registered SanpIn using the command&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;EM&gt;Get-PSSnapin –registered&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The output should look something like this:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_8DFE/azure_cmdlet1_4.jpg" mce_href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_8DFE/azure_cmdlet1_4.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: 0px" title=azure_cmdlet1 border=0 alt=azure_cmdlet1 src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_8DFE/azure_cmdlet1_thumb_1.jpg" width=644 height=107 mce_src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_8DFE/azure_cmdlet1_thumb_1.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Then finally in order to use it you need to add the SnapIn to the snapin to the active powershell session. You need to do that no matter if you want to use the commandlets interactively or from script. Issue the to do so.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;EM&gt;Add-PSSnapin AzureCommandletCollectionSnapIn&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;With respect to integrating the removal task to our scripts I have then altered my deployment script to get rid of the deployment package right after the deployment. So the list of blobs should usually always only consist of one entry.&lt;/P&gt;
&lt;P&gt;The changes are minimal. There are only two changes. The first is the part where we need to add the SnapIn to the session:&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: '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;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: 'Courier New', 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;(!($mgmtsnapin = Get-PSSnapin AzureManagementToolsSnapIn -erroraction silentlycontinue))&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    Write-Host &lt;SPAN style="COLOR: #006080"&gt;"Adding ManagementTools SnapIn...please wait"&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    Add-PSSnapin AzureManagementToolsSnapIn&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: 'Courier New', 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;(!($storagesnapin = Get-PSSnapin AzureCommandletCollectionSnapIn -erroraction silentlycontinue))&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Write-Host &lt;SPAN style="COLOR: #006080"&gt;"Adding AzureCommandletCollection SnapIn...please wait"&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Add-PSSnapin AzureCommandletCollectionSnapIn&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: 'Courier New', 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: 'Courier New', 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;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;The second change is the the actual removal task:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&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: '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;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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;$storagekeys = Get-StorageKeys -ServiceName $storageservicename -SubscriptionId $subscriptionid -Certificate $cert&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;Get-Storage -StorageAccount $storageservicename -SharedKey $storagekeys.Primary &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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;| Get-Bloblist -ContainerName mydeployments -ExtensionFilter cspkg &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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;| Remove-Blob&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;So then we can outline the final script which looks like the following:&lt;/DIV&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; 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;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: 'Courier New', 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;#&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Synopsis&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Will deploy and start a Windows Azure Service&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Description&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Will deploy and start a Windows Azure Service        &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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Parameter servicename&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        The name of the Azure service that will hold the deployment&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Parameter thumbprint&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        The thumbprint of a locally installed and valid certificate &lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt; accessing&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        the Windows Azure Management Service&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Parameter subscriptionid&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        The ID &lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt; the subscription of the Azure Account hosting the respective service&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Parameter slot&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        The deployment slot &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; which the package shall be deployed &amp;lt;Production | Staging&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Parameter storageservicename&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        The storage account that can be used to upload the deployment package&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Parameter package&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        The full qualified path to the deployment package&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Parameter config&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        The full qualified path to the configuration file &lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt; deployment&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    .Example&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        deployAzureService.ps1 -servicename &lt;SPAN style="COLOR: #006080"&gt;"MyService"&lt;/SPAN&gt; -thumbprint &lt;SPAN style="COLOR: #006080"&gt;"5643060E8F0029FB8C6DB76AAE905C7FA697"&lt;/SPAN&gt; -subscriptionid &lt;SPAN style="COLOR: #006080"&gt;"00000000-0000-0000-0000-000000000000"&lt;/SPAN&gt; -slot &lt;SPAN style="COLOR: #006080"&gt;"Production"&lt;/SPAN&gt; -storageservicename &lt;SPAN style="COLOR: #006080"&gt;"StorageService"&lt;/SPAN&gt; -package &lt;SPAN style="COLOR: #006080"&gt;"C:\deployment\HelloWorld.cspkg"&lt;/SPAN&gt; -config &lt;SPAN style="COLOR: #006080"&gt;"C:\deployments\ServiceConfiguration.cscfg"&lt;/SPAN&gt; -label &lt;SPAN style="COLOR: #006080"&gt;"MyFirstDeployment"&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;#&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;param([PARAMETER(Mandatory=$&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)][&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;]$servicename, [PARAMETER(Mandatory=$&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)][&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;]$thumbprint, [PARAMETER(Mandatory=$&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)][&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;]$subscriptionid, [PARAMETER(Mandatory=$&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)][&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;]$slot, [PARAMETER(Mandatory=$&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)][&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;]$storageservicename, [PARAMETER(Mandatory=$&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)][&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;]$package, [PARAMETER(Mandatory=$&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)][&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;]$config, [PARAMETER(Mandatory=$&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)][&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;]$label)&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: 'Courier New', 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;(!($mgmtsnapin = Get-PSSnapin AzureManagementToolsSnapIn -erroraction silentlycontinue))&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    Write-Host &lt;SPAN style="COLOR: #006080"&gt;"Adding ManagementTools SnapIn...please wait"&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    Add-PSSnapin AzureManagementToolsSnapIn&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: 'Courier New', 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;(!($storagesnapin = Get-PSSnapin AzureCommandletCollectionSnapIn -erroraction silentlycontinue))&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Write-Host &lt;SPAN style="COLOR: #006080"&gt;"Adding AzureCommandletCollection SnapIn...please wait"&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Add-PSSnapin AzureCommandletCollectionSnapIn&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: 'Courier New', 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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;$cert = Get-Item cert:\CurrentUser\My\$thumbprint&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;$service = Get-HostedService $servicename -Certificate $cert -SubscriptionId $subscriptionid&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: 'Courier New', 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;($service)&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    $deployment = Get-Deployment -Slot $slot -ServiceName $servicename -SubscriptionId $subscriptionid -Certificate $cert -erroraction silentlycontinue&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    $name = $deployment.Name&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: 'Courier New', 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;(!$deployment.Name)&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Write-Host &lt;SPAN style="COLOR: #006080"&gt;"Creating new deployment...please wait"&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        New-Deployment -Slot $slot -ServiceName $servicename -SubscriptionId $subscriptionid -Certificate $cert -Package $package -Configuration $config -Label $label -StorageServiceName $storageservicename |&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Get-OperationStatus -WaitToComplete&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Write-Host &lt;SPAN style="COLOR: #006080"&gt;"Starting the new deployment...please wait"&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Get-Deployment -Slot $slot -ServiceName $servicename -SubscriptionId $subscriptionid -Certificate $cert |&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Set-DeploymentStatus &lt;SPAN style="COLOR: #006080"&gt;"Running"&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Get-OperationStatus -WaitToComplete&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        $storagekeys = Get-StorageKeys -ServiceName $storageservicename -SubscriptionId $subscriptionid -Certificate $cert&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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Get-Storage -StorageAccount $storageservicename -SharedKey $storagekeys.Primary | Get-Bloblist -ContainerName mydeployments -ExtensionFilter cspkg | Remove-Blob&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: 'Courier New', 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;else&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        Write-Host &lt;SPAN style="COLOR: #006080"&gt;"Service $servicename already has an active deployment with the name $name...please remove the active deployment first"&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: 'Courier New', 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: 'Courier New', 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;else&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: 'Courier New', 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: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;    Write-Host &lt;SPAN style="COLOR: #006080"&gt;"No service found with the name $servicename"&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: 'Courier New', 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 mce_keep="true"&gt;When running from the command line it should produce the following output:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_8DFE/azure_cmdlet_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_8DFE/azure_cmdlet_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=azure_cmdlet border=0 alt=azure_cmdlet src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_8DFE/azure_cmdlet_thumb.jpg" width=644 height=208 mce_src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_8DFE/azure_cmdlet_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Digg" onclick="window.open('http://digg.com/submit?phase=2&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;bodytext=&amp;amp;tags=&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://digg.com/" rel=nofollow mce_href="http://digg.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Digg border=0 name=Digg alt="Bookmark Digg" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FwVnXcQI/AAAAAAAABf8/8t8jUbCOQN0/s200/digg.png" mce_src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FwVnXcQI/AAAAAAAABf8/8t8jUbCOQN0/s200/digg.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Del.icio.us" onclick="window.open('http://del.icio.us/post?v=2&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;notes=&amp;amp;tags=&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://del.icio.us/" rel=nofollow mce_href="http://del.icio.us/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Delicious border=0 name=Delicious alt="Bookmark Del.icio.us" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FmrXO-vI/AAAAAAAABf0/gK0oKdOJzMM/s200/delicious.png" mce_src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FmrXO-vI/AAAAAAAABf0/gK0oKdOJzMM/s200/delicious.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Facebook" onclick="window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(location.href)+'&amp;amp;t='+encodeURIComponent(document.title));return false;" href="http://www.facebook.com/" rel=nofollow mce_href="http://www.facebook.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Facebook border=0 name=Facebook alt="Bookmark Facebook" src="http://1.bp.blogspot.com/_vLeiVavkV_M/Sn0F1uQ7P_I/AAAAAAAABgE/zESf9tLZOtw/s200/facebook.png" mce_src="http://1.bp.blogspot.com/_vLeiVavkV_M/Sn0F1uQ7P_I/AAAAAAAABgE/zESf9tLZOtw/s200/facebook.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Reddit" onclick="window.open('http://reddit.com/submit?url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://reddit.com/" rel=nofollow mce_href="http://reddit.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Reddit border=0 name=Reddit alt="Bookmark Reddit" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0GDJUzotI/AAAAAAAABgU/qAA0KjdLgF8/s200/reddit.png" mce_src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0GDJUzotI/AAAAAAAABgU/qAA0KjdLgF8/s200/reddit.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: StumbleUpon" onclick="window.open('http://www.stumbleupon.com/submit?url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://www.stumbleupon.com/" rel=nofollow mce_href="http://www.stumbleupon.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=StumbleUpon border=0 name=StumbleUpon alt="Bookmark StumbleUpon" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GJ5NxMRI/AAAAAAAABgc/zaraJzCuyXI/s200/stumbleupon.png" mce_src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GJ5NxMRI/AAAAAAAABgc/zaraJzCuyXI/s200/stumbleupon.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Yahoo" onclick="window.open('http://myweb2.search.yahoo.com/myresults/bookmarklet?t='+encodeURIComponent(document.title)+'&amp;amp;d=&amp;amp;tag=&amp;amp;u='+encodeURIComponent(location.href));return false;" href="http://www.yahoo.com/" rel=nofollow mce_href="http://www.yahoo.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Yahoo border=0 name=Yahoo alt="Bookmark Yahoo" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GdCPWuUI/AAAAAAAABg0/-tjcrdMnRkA/s200/yahoo.png" mce_src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GdCPWuUI/AAAAAAAABg0/-tjcrdMnRkA/s200/yahoo.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Google" onclick="window.open('http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk='+encodeURIComponent(location.href)+'&amp;amp;annotation=&amp;amp;labels=&amp;amp;title='+encodeURIComponent(document.title));return false;" href="http://www.google.com/" rel=nofollow mce_href="http://www.google.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Google border=0 name=Google alt="Bookmark Google" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0F7200sZI/AAAAAAAABgM/ivmXOn18EZA/s200/google.png" mce_src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0F7200sZI/AAAAAAAABgM/ivmXOn18EZA/s200/google.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title="Bookmark to: Technorati" onclick="window.open('http://technorati.com/faves?add='+encodeURIComponent(location.href)+'&amp;amp;tag=');return false;" href="http://www.technorati.com/" rel=nofollow mce_href="http://www.technorati.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Technorati border=0 name=Technorati alt="Bookmark Technorati" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GRQk71JI/AAAAAAAABgk/AT5wC4ZYB8g/s200/technorati.png" mce_src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GRQk71JI/AAAAAAAABgk/AT5wC4ZYB8g/s200/technorati.png"&gt; &lt;/A&gt;&lt;A style="TEXT-DECORATION: none" title=Twitter onclick=" window.open('http://twitter.com/home?status='+encodeURIComponent(document.title)+'%20'+encodeURIComponent(location.href)); return false;" href="http://twitter.com/" rel=nofollow target=_Blank mce_href="http://twitter.com/"&gt;&lt;IMG style="PADDING-BOTTOM: 1px" id=Twitter border=0 name=Twitter alt="Bookmark Twitter" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GYqWEWAI/AAAAAAAABgs/8715Vd67VtA/s200/twitter.png" mce_src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GYqWEWAI/AAAAAAAABgs/8715Vd67VtA/s200/twitter.png"&gt; &lt;/A&gt;&lt;!-- End Add Social Bookmark Buttons - small buttons - blogknowhow.blogspot.com --&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9964953" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-96-49-53/AzureCommandletCollection.zip" length="13657" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Powershell/">Powershell</category></item><item><title>Tales About Working With The Azure Service Management API – Chapter II</title><link>http://blogs.msdn.com/b/astrauss/archive/2010/02/15/tales-about-working-with-the-azure-service-management-api-chapter-ii.aspx</link><pubDate>Mon, 15 Feb 2010 10:44:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9963516</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9963516</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2010/02/15/tales-about-working-with-the-azure-service-management-api-chapter-ii.aspx#comments</comments><description>&lt;p&gt;After I elaborated a bit on one of the base requirements to work with the Azure Service Management API at all which is enabling a valid certificate to authenticate your calls to the API I want today share some thoughts about how to automate tasks related with Azure deployments. As already pointed out in &lt;a href="http://blogs.msdn.com/astrauss/archive/2010/01/28/tales-about-working-with-the-azure-service-management-api-chapter-i.aspx" target="_blank"&gt;Chapter I&lt;/a&gt; you probably want to use &lt;a href="http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx" target="_blank"&gt;Windows Powershell&lt;/a&gt; together with the &lt;a title="Windows Azure Service Management CmdLets" href="http://code.msdn.microsoft.com/azurecmdlets"&gt;Windows Azure Service Management CmdLets&lt;/a&gt; which will make your life in interacting with the Windows Azure Fabric from a shell environment much easier. The commandlets support most of the relevant tasks to do deployments and undeployments.&lt;/p&gt;  &lt;p&gt;So in my example here I will show how those commandlets can be used in scripts to optimize the consumption of Windows Azure compute services. As you might know the compute service is billed based on service hours which basically means that as long as a service is deployed it will produce cost although the service may not be used at all during certain times. And as there may be quite some solutions where there are known time windows in which the service isn’t used (e.g. non busines hours) it may come in handy if there would be the possibility to undeploy and deploy the services based on their availability needs.&lt;/p&gt;  &lt;p&gt;To have this work the only thing needed is two Windows Powershell scripts where on does the deployment and the other one the undeployment. The script for undeploying a service could look like the following:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; 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;#&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;    .Synopsis&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;        Will suspend and undeploy a Windows Azure Service&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;    .Description&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;        Will suspend and undeploy a Windows Azure Service        &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;    .Parameter servicename&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;        The name of the Azure service that holds the deployment&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;    .Parameter thumbprint&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;        The thumbprint of a locally installed and valid certificate &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; accessing&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;        the Windows Azure Management Service&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;    .Parameter subscriptionid&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;        The ID &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; the subscription of the Azure Account hosting the respective service&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;    .Parameter slot&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;        The deployment slot &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; which the package to be undeployed &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; physically situated&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;    .Example&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;        undeployAzureService.ps1 -thumbprint &lt;span style="color: #006080"&gt;&amp;quot;5643060E8F0029FB8C6DB76AAE905C7FA697&amp;quot;&lt;/span&gt; -servicename &lt;span style="color: #006080"&gt;&amp;quot;MyService&amp;quot;&lt;/span&gt; -subscriptionid &lt;span style="color: #006080"&gt;&amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;&lt;/span&gt; -slot &lt;span style="color: #006080"&gt;&amp;quot;Production&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;#&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;&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;param([PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$servicename, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$thumbprint, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$subscriptionid, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$slot)&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;(!($snapin = Get-PSSnapin AzureManagementToolsSnapIn -erroraction silentlycontinue))&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;    Write-Host &lt;span style="color: #006080"&gt;&amp;quot;Adding ManagementTools SnapIn...please wait&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;    Add-PSSnapin AzureManagementToolsSnapIn&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;$cert = Get-Item cert:\CurrentUser\My\$thumbprint&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;$service = Get-HostedService $servicename -Certificate $cert -SubscriptionId $subscriptionid&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;if&lt;/span&gt;($service)&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;    $deployment = Get-Deployment -Slot $slot -ServiceName $servicename -SubscriptionId $subscriptionid -Certificate $cert -erroraction silentlycontinue&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;($deployment.Name)&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;        Write-Host &lt;span style="color: #006080"&gt;&amp;quot;Suspending deployment...please wait&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;        Get-Deployment -Slot $slot -ServiceName $servicename -SubscriptionId $subscriptionid -Certificate $cert |&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-DeploymentStatus &lt;span style="color: #006080"&gt;'Suspended'&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;        Get-OperationStatus -WaitToComplete&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;        Write-Host &lt;span style="color: #006080"&gt;&amp;quot;Removing deployment...please wait&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;        Get-Deployment -Slot $slot -ServiceName $servicename -SubscriptionId $subscriptionid -Certificate $cert |&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;        Remove-Deployment |&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-OperationStatus -WaitToComplete&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;else&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;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;        Write-Host &lt;span style="color: #006080"&gt;&amp;quot;No deployment found for the service named $servicename&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;    }&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;else&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;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;    Write-Host &lt;span style="color: #006080"&gt;&amp;quot;No service found with the name $servicename&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;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;After creating this script you then can create a scheduled job using the Windows Scheduler. When creating the command line for the scheduled task you have to be carefull about two things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Set the execution policy for powershell so that it allows to run scripts. Depending on your environment and security policies you should set the execution policy to either “AllSigned”, “RemoteSigned” or “Unrestricted”. For more information consult the &lt;a href="http://technet.microsoft.com/en-us/library/ee176961.aspx" target="_blank"&gt;powershell documentation&lt;/a&gt;. Example: &lt;em&gt;&lt;font face="Courier New"&gt;Set-ExecutionPolicy Unrestricted&lt;/font&gt;&lt;/em&gt; &lt;/li&gt;

  &lt;li&gt;If your path to the powershell script which you need to pass over to powershell as an argument does contain blanks you need to use double quotes surrounding the whole argument including the ampersand (which is the call operator in Windows Powershell) and inside enclose the path information with single quotes. So a correct statement would look like this: &lt;font face="Courier New"&gt;&lt;em&gt;powershell.exe -command &amp;quot;&amp;amp; 'C:\My Scripts\undeployAzureService.ps1'&amp;quot;&lt;/em&gt;&lt;/font&gt; … &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To create the scheduled task using the wizard or use a XML template like the one below, insert your data and import it into the scheduler.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8d59b1cf-9695-4d83-8d19-9505598502fc" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt;
&lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt;
&lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515"&gt;xml&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;utf-16&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Task&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;1.3&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;http://schemas.microsoft.com/windows/2004/02/mit/task&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RegistrationInfo&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Date&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;2010-02-12T13:44:02.910461&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Date&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Author&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;[userid]&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Author&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Description&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;Timed undeployment of Azure Service during non business hours to optimize Azure consumption of service compute hours.&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Description&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RegistrationInfo&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Triggers&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CalendarTrigger&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StartBoundary&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;2010-02-12T19:00:00Z&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StartBoundary&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ScheduleByDay&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;DaysInterval&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;DaysInterval&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ScheduleByDay&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;CalendarTrigger&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Triggers&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Principals&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Principal&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Author&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;UserId&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;[userid&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;UserId&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;LogonType&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;Password&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;LogonType&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunLevel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;LeastPrivilege&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunLevel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Principal&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Principals&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Settings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;MultipleInstancesPolicy&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;IgnoreNew&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;MultipleInstancesPolicy&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;DisallowStartIfOnBatteries&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;DisallowStartIfOnBatteries&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StopIfGoingOnBatteries&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StopIfGoingOnBatteries&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;AllowHardTerminate&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;AllowHardTerminate&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StartWhenAvailable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StartWhenAvailable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunOnlyIfNetworkAvailable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunOnlyIfNetworkAvailable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;IdleSettings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StopOnIdleEnd&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StopOnIdleEnd&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RestartOnIdle&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RestartOnIdle&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;IdleSettings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;AllowStartOnDemand&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;AllowStartOnDemand&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Hidden&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Hidden&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunOnlyIfIdle&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunOnlyIfIdle&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;DisallowStartOnRemoteAppSession&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;DisallowStartOnRemoteAppSession&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;UseUnifiedSchedulingEngine&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;UseUnifiedSchedulingEngine&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;WakeToRun&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;WakeToRun&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ExecutionTimeLimit&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;P3D&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ExecutionTimeLimit&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Priority&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;7&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Priority&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Settings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Actions&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Context&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Author&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Exec&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Command&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;powershell&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Command&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Arguments&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;-command &amp;quot;&lt;span style="color:#ff0000"&gt;&amp;amp;amp;&lt;/span&gt; &amp;#39;C:&amp;#92;my scripts&amp;#92;undeployAzureService.ps1&amp;#39;&amp;quot; -servicename &amp;quot;MyService&amp;quot; -thumbprint &amp;quot;5643060E8F0029FB8C6DB76AAE905C7FA697&amp;quot; -subscriptionid &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot; -slot &amp;quot;Production&amp;quot; &lt;span style="color:#ff0000"&gt;&amp;amp;gt;&lt;/span&gt; log.txt&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Arguments&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;WorkingDirectory&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;C:&amp;#92;deployments&amp;#92;logs&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;WorkingDirectory&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Exec&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Actions&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Task&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;
Then do the same for the deployment process. A respective Windows Powershell script could look like this: 

&lt;p&gt;&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; 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;#&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;    .Synopsis&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;        Will deploy and start a Windows Azure Service&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;    .Description&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;        Will deploy and start a Windows Azure Service        &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;    .Parameter servicename&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;        The name of the Azure service that will hold the deployment&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;    .Parameter thumbprint&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;        The thumbprint of a locally installed and valid certificate &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; accessing&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;        the Windows Azure Management Service&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;    .Parameter subscriptionid&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;        The ID &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; the subscription of the Azure Account hosting the respective service&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;    .Parameter slot&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;        The deployment slot &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; which the package shall be deployed &amp;lt;Production | Staging&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;    .Parameter storageservicename&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;        The storage account that can be used to upload the deployment package&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;    .Parameter package&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;        The full qualified path to the deployment package&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;    .Parameter config&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;        The full qualified path to the configuration file &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt; deployment&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;    .Example&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;        deployAzureService.ps1 -servicename &lt;span style="color: #006080"&gt;&amp;quot;MyService&amp;quot;&lt;/span&gt; -thumbprint &lt;span style="color: #006080"&gt;&amp;quot;5643060E8F0029FB8C6DB76AAE905C7FA697&amp;quot;&lt;/span&gt; -subscriptionid &lt;span style="color: #006080"&gt;&amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;&lt;/span&gt; -slot &lt;span style="color: #006080"&gt;&amp;quot;Production&amp;quot;&lt;/span&gt; -storageservicename &lt;span style="color: #006080"&gt;&amp;quot;StorageService&amp;quot;&lt;/span&gt; -package &lt;span style="color: #006080"&gt;&amp;quot;C:\deployment\HelloWorld.cspkg&amp;quot;&lt;/span&gt; -config &lt;span style="color: #006080"&gt;&amp;quot;C:\deployments\ServiceConfiguration.cscfg&amp;quot;&lt;/span&gt; -label &lt;span style="color: #006080"&gt;&amp;quot;MyFirstDeployment&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;#&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;&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;param([PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$servicename, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$thumbprint, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$subscriptionid, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$slot, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$storageservicename, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$package, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$config, [PARAMETER(Mandatory=$&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)][&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;]$label)&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;(!($snapin = Get-PSSnapin AzureManagementToolsSnapIn -erroraction silentlycontinue))&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;    Write-Host &lt;span style="color: #006080"&gt;&amp;quot;Adding ManagementTools SnapIn...please wait&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;    Add-PSSnapin AzureManagementToolsSnapIn&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;$cert = Get-Item cert:\CurrentUser\My\$thumbprint&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;$service = Get-HostedService $servicename -Certificate $cert -SubscriptionId $subscriptionid&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;if&lt;/span&gt;($service)&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;    $deployment = Get-Deployment -Slot $slot -ServiceName $servicename -SubscriptionId $subscriptionid -Certificate $cert -erroraction silentlycontinue&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;    $name = $deployment.Name&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;if&lt;/span&gt;(!$deployment.Name)&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;        Write-Host &lt;span style="color: #006080"&gt;&amp;quot;Creating new deployment...please wait&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;        New-Deployment -Slot $slot -ServiceName $servicename -SubscriptionId $subscriptionid -Certificate $cert -Package $package -Configuration $config -Label $label -StorageServiceName $storageservicename |&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-OperationStatus -WaitToComplete&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;        Write-Host &lt;span style="color: #006080"&gt;&amp;quot;Starting the new deployment...please wait&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;        Get-Deployment -Slot $slot -ServiceName $servicename -SubscriptionId $subscriptionid -Certificate $cert |&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-DeploymentStatus &lt;span style="color: #006080"&gt;&amp;quot;Running&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;        Get-OperationStatus -WaitToComplete&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;else&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;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;        Write-Host &lt;span style="color: #006080"&gt;&amp;quot;Service $servicename already has an active deployment with the name $name...please remove the active deployment first&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;    }&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;else&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;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;    Write-Host &lt;span style="color: #006080"&gt;&amp;quot;No service found with the name $servicename&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;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And the template for the scheduler could look like this:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d7f794c5-e406-4553-a489-051f7094c461" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt;
&lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt;
&lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515"&gt;xml&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;UTF-16&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Task&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;1.2&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;http://schemas.microsoft.com/windows/2004/02/mit/task&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RegistrationInfo&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Date&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;2010-02-15T09:50:14.2255756&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Date&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Author&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;[userid]&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Author&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RegistrationInfo&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Triggers&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CalendarTrigger&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StartBoundary&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;2010-02-15T07:00:00&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StartBoundary&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ScheduleByDay&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;DaysInterval&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;DaysInterval&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ScheduleByDay&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;CalendarTrigger&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Triggers&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Principals&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Principal&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Author&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;UserId&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;[userid]&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;UserId&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;LogonType&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;Password&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;LogonType&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunLevel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;HighestAvailable&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunLevel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Principal&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Principals&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Settings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;MultipleInstancesPolicy&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;IgnoreNew&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;MultipleInstancesPolicy&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;DisallowStartIfOnBatteries&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;DisallowStartIfOnBatteries&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StopIfGoingOnBatteries&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StopIfGoingOnBatteries&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;AllowHardTerminate&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;AllowHardTerminate&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StartWhenAvailable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StartWhenAvailable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunOnlyIfNetworkAvailable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunOnlyIfNetworkAvailable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;IdleSettings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StopOnIdleEnd&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StopOnIdleEnd&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RestartOnIdle&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RestartOnIdle&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;IdleSettings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;AllowStartOnDemand&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;AllowStartOnDemand&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Hidden&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Hidden&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunOnlyIfIdle&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;RunOnlyIfIdle&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;WakeToRun&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;WakeToRun&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ExecutionTimeLimit&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;P3D&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ExecutionTimeLimit&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Priority&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;7&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Priority&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Settings&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Actions&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Context&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Author&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Exec&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Command&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;powershell&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Command&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Arguments&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;-command &amp;quot;&lt;span style="color:#ff0000"&gt;&amp;amp;amp;&lt;/span&gt; &amp;#39;C:&amp;#92;My Scripts&amp;#92;deployAzureService.ps1&amp;#39;&amp;quot; -servicename &amp;quot;MyService&amp;quot; -thumbprint &amp;quot;5643060E8F0029FB8C6DB76AAE905C7FA697&amp;quot; -subscriptionid &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot; -slot &amp;quot;Production&amp;quot; -storageservicename &amp;quot;mystorageservice&amp;quot; -package &amp;quot;&amp;#39;C:&amp;#92;deployments&amp;#92;packages&amp;#92;HelloWorld.cspkg&amp;#39;&amp;quot; -config &amp;quot;&amp;#39;C:&amp;#92;deployments&amp;#92;packages&amp;#92;ServiceConfiguration.cscfg&amp;#39;&amp;quot; -label &amp;quot;MyFirstDeployment&amp;quot; &lt;span style="color:#ff0000"&gt;&amp;amp;gt;&lt;/span&gt; deployment.log&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Arguments&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;WorkingDirectory&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;C:&amp;#92;deployments&amp;#92;packages&amp;#92;logs&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;WorkingDirectory&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Exec&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Actions&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Task&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;&lt;!-- Start Add Social Bookmark Buttons - small buttons - blogknowhow.blogspot.com --&gt;&lt;/p&gt;

&lt;p&gt;This is all to automate your deployment tasks. One thing however is to remember here. As the New-Deployment commandlet uploads your deployment package into the blob storage of the specified Azure Storage account you should check your blob storage from time and do a clean up otherwise this will also produce unnecessary cost.&lt;/p&gt;

&lt;p&gt;&lt;a style="text-decoration: none" title="Bookmark to: Digg" onclick="window.open(&amp;#39;http://digg.com/submit?phase=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;bodytext=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://digg.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Digg" border="0" name="Digg" alt="Bookmark Digg" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FwVnXcQI/AAAAAAAABf8/8t8jUbCOQN0/s200/digg.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Del.icio.us" onclick="window.open(&amp;#39;http://del.icio.us/post?v=2&amp;amp;url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;notes=&amp;amp;tags=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://del.icio.us/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Delicious" border="0" name="Delicious" alt="Bookmark Del.icio.us" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0FmrXO-vI/AAAAAAAABf0/gK0oKdOJzMM/s200/delicious.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Facebook" onclick="window.open(&amp;#39;http://www.facebook.com/sharer.php?u=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;t=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.facebook.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Facebook" border="0" name="Facebook" alt="Bookmark Facebook" src="http://1.bp.blogspot.com/_vLeiVavkV_M/Sn0F1uQ7P_I/AAAAAAAABgE/zESf9tLZOtw/s200/facebook.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Reddit" onclick="window.open(&amp;#39;http://reddit.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://reddit.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Reddit" border="0" name="Reddit" alt="Bookmark Reddit" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0GDJUzotI/AAAAAAAABgU/qAA0KjdLgF8/s200/reddit.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: StumbleUpon" onclick="window.open(&amp;#39;http://www.stumbleupon.com/submit?url=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.stumbleupon.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="StumbleUpon" border="0" name="StumbleUpon" alt="Bookmark StumbleUpon" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GJ5NxMRI/AAAAAAAABgc/zaraJzCuyXI/s200/stumbleupon.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Yahoo" onclick="window.open(&amp;#39;http://myweb2.search.yahoo.com/myresults/bookmarklet?t=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;&amp;amp;d=&amp;amp;tag=&amp;amp;u=&amp;#39;+encodeURIComponent(location.href));return false;" href="http://www.yahoo.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Yahoo" border="0" name="Yahoo" alt="Bookmark Yahoo" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GdCPWuUI/AAAAAAAABg0/-tjcrdMnRkA/s200/yahoo.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Google" onclick="window.open(&amp;#39;http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;annotation=&amp;amp;labels=&amp;amp;title=&amp;#39;+encodeURIComponent(document.title));return false;" href="http://www.google.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Google" border="0" name="Google" alt="Bookmark Google" src="http://3.bp.blogspot.com/_vLeiVavkV_M/Sn0F7200sZI/AAAAAAAABgM/ivmXOn18EZA/s200/google.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Bookmark to: Technorati" onclick="window.open(&amp;#39;http://technorati.com/faves?add=&amp;#39;+encodeURIComponent(location.href)+&amp;#39;&amp;amp;tag=&amp;#39;);return false;" href="http://www.technorati.com/" rel="nofollow"&gt;&lt;img style="padding-bottom: 1px" id="Technorati" border="0" name="Technorati" alt="Bookmark Technorati" src="http://4.bp.blogspot.com/_vLeiVavkV_M/Sn0GRQk71JI/AAAAAAAABgk/AT5wC4ZYB8g/s200/technorati.png" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" title="Twitter" onclick=" window.open(&amp;#39;http://twitter.com/home?status=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;%20&amp;#39;+encodeURIComponent(location.href)); return false;" href="http://twitter.com/" rel="nofollow" target="_Blank"&gt;&lt;img style="padding-bottom: 1px" id="Twitter" border="0" name="Twitter" alt="Bookmark Twitter" src="http://2.bp.blogspot.com/_vLeiVavkV_M/Sn0GYqWEWAI/AAAAAAAABgs/8715Vd67VtA/s200/twitter.png" /&gt; &lt;/a&gt;&lt;!-- End Add Social Bookmark Buttons - small buttons - blogknowhow.blogspot.com --&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9963516" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Powershell/">Powershell</category></item><item><title>Tales About Working With The Azure Service Management API – Chapter I</title><link>http://blogs.msdn.com/b/astrauss/archive/2010/01/28/tales-about-working-with-the-azure-service-management-api-chapter-i.aspx</link><pubDate>Thu, 28 Jan 2010 19:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9954853</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9954853</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2010/01/28/tales-about-working-with-the-azure-service-management-api-chapter-i.aspx#comments</comments><description>&lt;P&gt;For enterprises, power users and people who simply don’t like the Azure administration portal but do use Windows Azure as an deployment option for their applications or services it may be desirable to integrate deployment and administration tasks into automatic processes and/or customized tools. To support that Microsoft provides a &lt;A href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target=_blank&gt;REST&lt;/A&gt; based &lt;A href="http://msdn.microsoft.com/en-us/library/ee460799.aspx" target=_blank&gt;Service Management API&lt;/A&gt;. This API is quite comprehensive and allows you to view and alter your deployments, services and storage accounts. In order to secure access to those resources via the API mutual authentication of certificate over a SSL connection is required. In addition also the Subscription-ID of your account is needed as part of the rest URLs to correctly address your resources. While this is by no means a security feature it is recommended to keep this ID a secret, though. But back to the Certificates now. In order to use the service API you need to have a certificate that you associate with your service API. You can do that by using the developer portal and go to the “&lt;EM&gt;Account&lt;/EM&gt;” page and then use the link “&lt;EM&gt;Manage My API Certificates&lt;/EM&gt;”. Then you are able on import A DER encoded binary representation of your certificate (use certmgr.msc on Windows to do so).&lt;/P&gt;
&lt;P&gt;In order to get a certificate for use with the Windows Azure Service Management API there are several possibilities:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create one using the makecert.exe tool which comes with the Windows SDK and also with Visual Studio. How to create a suitable self signed certificate with makecert.exe refer to &lt;A href="http://blogs.msdn.com/windowsazure/archive/2009/09/17/introducing-the-windows-azure-service-management-api.aspx" target=_blank&gt;this blog post&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;Create a self signed certificate using the IIS Management console. Refer to &lt;A href="http://technet.microsoft.com/en-us/library/cc753127%28WS.10%29.aspx" target=_blank&gt;this Technet article&lt;/A&gt; to see how this can be done. &lt;/LI&gt;
&lt;LI&gt;Get a certificate from a Certificate Authority (CA) such as Verisign, GoDaddy, CACert.org, etc. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;It is to note that:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The certificate doesn’t need to be a server certificate (enhanced key usage: server authentication). A client certificate is necessary (and probably also easier/cheaper to get from your CA). However please be aware that this cannot be used as a SSL certificate for one of your services (which wouldn’t probably be a good idea anyway) &lt;/LI&gt;
&lt;LI&gt;The certificate needs to have at least a 2048 bit key &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Refer to the &lt;A href="http://msdn.microsoft.com/en-us/library/ee460782.aspx" target=_blank&gt;API documentation&lt;/A&gt; for further information.&lt;/P&gt;
&lt;P&gt;No you might ask why do I write all this when this is mostly already documented. Because I got my certificate via the automated process of &lt;A href="http://blogs.msdn.com/astrauss/archive/2007/04/26/hanging-around-in-munich-get-yourself-assured.aspx" target=_blank&gt;CAcert.org&lt;/A&gt;. And in my first try I run into an error that I was not able to get my Service Management API requests authenticated. The service always returned:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Error 403 (Forbidden): The HTTP request was forbidden with client authentication scheme 'Anonymous'&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;I didn’t really understand why this was happening as I was creating the certificate in my code using one of the above mentioned DER encoded binary .cer files which I exported from the management console. Here is the code which is really not that complicated.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4b8efef2-73b4-4505-ac1e-cfa707315ecf class=wlWriterEditableSmartContent&gt;
&lt;DIV style="BORDER-BOTTOM: #000080 1px solid; BORDER-LEFT: #000080 1px solid; FONT-FAMILY: 'Courier New', Courier, Monospace; COLOR: #000; FONT-SIZE: 10pt; BORDER-TOP: #000080 1px solid; BORDER-RIGHT: #000080 1px solid"&gt;
&lt;DIV style="BACKGROUND: #fff; MAX-HEIGHT: 300px; OVERFLOW: auto"&gt;
&lt;OL style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; BACKGROUND: #ffffff; PADDING-TOP: 0px"&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: #0000ff"&gt;try&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="BACKGROUND: #f3f3f3"&gt;{&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;X509Certificate&lt;/SPAN&gt; cert = &lt;SPAN style="COLOR: #2b91af"&gt;X509Certificate&lt;/SPAN&gt;.CreateFromCertFile(&lt;SPAN style="COLOR: #a31515"&gt;"AzureCert.cer"&lt;/SPAN&gt;);&lt;/LI&gt;
&lt;LI style="BACKGROUND: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;HttpWebRequest&lt;/SPAN&gt; req = (&lt;SPAN style="COLOR: #2b91af"&gt;HttpWebRequest&lt;/SPAN&gt;)&lt;SPAN style="COLOR: #2b91af"&gt;WebRequest&lt;/SPAN&gt;.Create(&lt;SPAN style="COLOR: #a31515"&gt;"https://management.core.windows.net/&amp;lt;subscription-id&amp;gt;/services/storageservices"&lt;/SPAN&gt;);&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;req.ClientCertificates.Add(cert);&lt;/LI&gt;
&lt;LI style="BACKGROUND: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;req.UserAgent = &lt;SPAN style="COLOR: #a31515"&gt;"Azure Cloud Management Studio"&lt;/SPAN&gt;;&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;req.Method = &lt;SPAN style="COLOR: #a31515"&gt;"GET"&lt;/SPAN&gt;;&lt;/LI&gt;
&lt;LI style="BACKGROUND: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;req.ProtocolVersion = &lt;SPAN style="COLOR: #2b91af"&gt;HttpVersion&lt;/SPAN&gt;.Version11;&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;req.Headers.Add(&lt;SPAN style="COLOR: #a31515"&gt;"x-ms-version"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"2009-10-01"&lt;/SPAN&gt;);&lt;/LI&gt;
&lt;LI style="BACKGROUND: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;req.ContentType = &lt;SPAN style="COLOR: #a31515"&gt;"text/xml"&lt;/SPAN&gt;;&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;HttpWebResponse&lt;/SPAN&gt; response = (&lt;SPAN style="COLOR: #2b91af"&gt;HttpWebResponse&lt;/SPAN&gt;)req.GetResponse();&lt;/LI&gt;
&lt;LI style="BACKGROUND: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/LI&gt;
&lt;LI&gt;}&lt;/LI&gt;
&lt;LI style="BACKGROUND: #f3f3f3"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt; ex)&lt;/LI&gt;
&lt;LI&gt;{&lt;/LI&gt;
&lt;LI style="BACKGROUND: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/LI&gt;
&lt;LI&gt;}&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;After a while of investigating I realized that as I created the .cer file from a certificate string shown outlined in the picture below.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/certstring_4.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="CAcert install certificate page" border=0 alt="CAcert install certificate page" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/certstring_thumb_1.jpg" width=566 height=484&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;However I did not realize that I’m then missing the private key generation process that included by clicking on the install button and uses ActiveX in Internet Explorer.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color=#800000&gt;“Your private key is generated by your browser, *IN* your browser when you request a new cert from CAcert. That way CAcert never has your private key in its possession. The implication for you is that you must be on the same machine using the same browser that you used to request the cert initially, when needing to access your private key. So don't forget if it was your "work" machine vs. your "home" machine.”&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Unfortunately I couldn’t get that to work with &lt;A href="http://www.microsoft.com/windows/Internet-explorer/default.aspx" target=_blank&gt;IE8&lt;/A&gt; and &lt;A href="http://www.microsoft.com/windows/default.aspx" target=_blank&gt;Windows 7&lt;/A&gt; what brought me to use the certificate string in the first place. But if you walk down this road and copy that string into a text file, change the file extension to .cer and then install the certificate you will not have a private key associated with this certificate and that’s why the request is failing. In order to have the requests working you need to meet two prerequisites for your certificate:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The certificate needs to be installed in the certificate store of the client machine from where you send the requests to the Service Management API. &lt;/LI&gt;
&lt;LI&gt;The certificate must have an associated private key. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;For me this meant:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Use Windows 7 XP Mode and IE6 ;) to issue a new certificate request to CACert.org &lt;/LI&gt;
&lt;LI&gt;Install the certificate from the CAcert.org website using the same browser in the same XP Mode instance &lt;/LI&gt;
&lt;LI&gt;Export the certificate as a Personal Information Exchange (PKCS#12) file including the private key (note that such file have an .pfx file extension) &lt;/LI&gt;
&lt;LI&gt;Import the the certificate on the Windows 7 system used to work with the Service Management API &lt;/LI&gt;
&lt;LI&gt;Make sure that the private key is available &lt;BR&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/cert1_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="Ensure there is a private key" border=0 alt="Ensure there is a private key" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/cert1_thumb.jpg" width=304 height=383&gt;&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;Export the certificate again as a DER encoded binary .cer file (this time make sure that the private key is not exported 1. because you don’t need it on the Azure side and 2. you wouldn’t be able to create a .cer file) &lt;BR&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/cert2_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="Do not export the private key" border=0 alt="Do not export the private key" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/cert2_thumb.jpg" width=304 height=276&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/cert3_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="Export as DER encoded binary" border=0 alt="Export as DER encoded binary" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/cert3_thumb.jpg" width=304 height=276&gt;&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Import the .cer file with the Azure Management Console &lt;BR&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/AzureCertPortal_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="Azure Devloper Portal" border=0 alt="Azure Devloper Portal" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/AzureCertPortal_thumb.jpg" width=404 height=291&gt;&lt;/A&gt;&amp;nbsp; &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;After all those steps I was able to issue successful requests with my own code as well as available tools to interact with the Windows Azure Service Management API such as &lt;A href="http://code.msdn.microsoft.com/windowsazuresamples" target=_blank&gt;csmanage.exe&lt;/A&gt; or the &lt;A href="http://go.microsoft.com/fwlink/?LinkID=151321" target=_blank&gt;PowerShell&lt;/A&gt; &lt;A href="http://code.msdn.microsoft.com/azurecmdlets" target=_blank&gt;Windows Azure Service Management CmdLets&lt;/A&gt;. However just to note it again this only works because the certificate is actually also installed in the certificate store where the .Net Cryptographic API does a lookup of the certificate and its corresponding private key. You can verify this if you import the certificate in step 4 above to prompt you if an application tries to use the private key of this certificate.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/cert4_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="Permission required to use the private key" border=0 alt="Permission required to use the private key" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/TalesAboutWorkingWithTheAzureServiceMana_CF4F/cert4_thumb.jpg" width=344 height=174&gt;&lt;/A&gt;&lt;/P&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/2010/01/28/tales-about-working-with-the-azure-service-management-api-chapter-i.aspx" mce_href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2010/01/28/tales-about-working-with-the-azure-service-management-api-chapter-i.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=9954853" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Security/">Security</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Powershell/">Powershell</category></item><item><title>DHL Shipment Tracking Accelerator for IE8</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9920133</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/11/10/dhl-shipment-tracking-accelerator-for-ie8.aspx#comments</comments><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/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/User+Experience/">User Experience</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Quick+Wins/">Quick Wins</category></item><item><title>Installing IEAK IN A VPC without Disk Space Determination</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9907088</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/10/14/installing-ieak-in-a-vpc-without-disk-space-determination.aspx#comments</comments><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/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/IEAK/">IEAK</category></item><item><title>Win7 your Visual Search if it speaks RSS</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9906216</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/10/12/win7-your-visual-search-if-it-speaks-rss.aspx#comments</comments><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/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-90-62-16/ComeGetSome.osdx" length="637" type="application/opensearchdescription+xml" /><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Silverlight/">Silverlight</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Standards/">Standards</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Windows+7/">Windows 7</category></item><item><title>Update: Enterprise RIA Project Now Running on Silverlight 3 Release Version</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9892469</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/09/08/update-enterprise-ria-project-now-running-on-silverlight-3-release-version.aspx#comments</comments><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/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-89-24-69/RiaPrototype_2D00_sl3rtm_5F00_build.zip" length="245114" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Programming+Tasks/">Programming Tasks</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Silverlight/">Silverlight</category></item><item><title>The Music Industry – Your Dear Pals</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9876567</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/08/20/the-music-industry-your-dear-pals.aspx#comments</comments><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/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Links/">Links</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Web+2-0/">Web 2.0</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Advisory/">Advisory</category></item><item><title>Silverlight 3 Business Applications Made Easy</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9876557</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/08/20/silverlight-3-business-applications-made-easy.aspx#comments</comments><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/b/astrauss/archive/tags/Service+Orientation/">Service Orientation</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Silverlight/">Silverlight</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Expression/">Expression</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/User+Experience/">User Experience</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Standards/">Standards</category></item><item><title>Radio GaGa New Version And Live On Windows Azure</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9831451</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/07/13/radio-gaga-new-version-and-live-on-windows-azure.aspx#comments</comments><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/b/astrauss/archive/tags/Silverlight/">Silverlight</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>The ViewModel Pattern in Silverlight – An Example</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9716270</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/06/09/the-viewmodel-pattern-in-silverlight-an-example.aspx#comments</comments><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/b/astrauss/archive/tags/Programming+Tasks/">Programming Tasks</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/WPF/">WPF</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Silverlight/">Silverlight</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>Physics, Silverlight and Visualization…Update!</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9707886</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/06/08/physics-silverlight-and-visualization-update.aspx#comments</comments><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/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Silverlight/">Silverlight</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/User+Experience/">User Experience</category></item><item><title>Short Gotcha When Working With Extent Initialization In ‘M’</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9535599</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/04/07/short-gotcha-when-working-with-extent-initialization-in-m.aspx#comments</comments><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/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/S_2B00_S/">S+S</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Oslo/">Oslo</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/DSL/">DSL</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/M/">M</category></item><item><title>Building a Visual Search Service for IE8 with WCF - Part V</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9321014</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/01/15/building-a-visual-search-service-for-ie8-with-wcf-part-v.aspx#comments</comments><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/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-32-10-14/VideoVSearchAggregator.zip" length="434794" type="application/x-zip" /><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Service+Orientation/">Service Orientation</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/-Net/">.Net</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/ASP-Net/">ASP.Net</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Enterprise+Library/">Enterprise Library</category></item><item><title>Using IE8 Beta2 IEAK with RC1 Bits</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9320416</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2009/01/15/using-ie8-beta2-ieak-with-rc1-bits.aspx#comments</comments><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/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category></item><item><title>Building a Visual Search Service for IE8 with WCF - Part IV</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9226213</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2008/12/16/building-a-visual-search-service-for-ie8-with-wcf-part-iv.aspx#comments</comments><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/b/astrauss/archive/tags/Service+Orientation/">Service Orientation</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/-Net/">.Net</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/S_2B00_S/">S+S</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category></item><item><title>Building A Visual Search Service For IE8 With WCF - Part III</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9144279</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2008/11/26/building-a-visual-search-service-for-ie8-with-wcf-part-iii.aspx#comments</comments><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/b/astrauss/archive/tags/Programming+Tasks/">Programming Tasks</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Tips/">Tips</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/-Net/">.Net</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Enterprise+Library/">Enterprise Library</category></item><item><title>Building a Visual Search Service for IE8 with WCF - Part II</title><link>http://blogs.msdn.com/b/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>Alex Strauss</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9052435</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2008/11/07/building-a-visual-search-service-for-ie8-with-wcf-part-ii.aspx#comments</comments><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/b/astrauss/archive/tags/Service+Orientation/">Service Orientation</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/-Net/">.Net</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/S_2B00_S/">S+S</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category></item><item><title>Building a Visual Search Service for IE8 with WCF - Part I</title><link>http://blogs.msdn.com/b/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx</link><pubDate>Sat, 25 Oct 2008 23:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9016308</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9016308</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx#comments</comments><description>&lt;P&gt;Beta 2 of Internet Explorer has been out for a while now and as you already know one of the new functionalities of Beta 2 is the visual search feature. Since there is a really extensive introduction about visual search and the steps on the IE8 side in &lt;A href="http://blogs.msdn.com/ie/archive/2008/09/18/hello-world-getting-started-with-ie8-visual-search.aspx" target=_blank&gt;this article on the Internet Explorer Team Blog&lt;/A&gt; I do not want to go into detail about this but rather tell you how to implement a service that is consumed by the Internet Explorer 8 Visual Search feature by means of a quite comprehensive example.&lt;/P&gt;
&lt;P&gt;I chose a scenario which might be quite popular and that is video search. However since a user must explicitly register a search provider into his Internet Explorer unless you provide a customized instance using the &lt;A href="http://technet.microsoft.com/en-us/ie/cc889349.aspx" target=_blank&gt;Internet Explorer Administration Kit (IEAK)&lt;/A&gt;. So in order to get one of the rare slots on the users search provider list I wanted to create some kind of meta search that aggregates search results from multiple sources. Another reason was that this enabled me to include and write about topics like threading and caching as well. In order to access the entries of the relevant video assets of the video sites I used their public APIs. Unfortunately it is not yet very common for those sites to offer public APIs to access their content especially in Germany I found none except for &lt;A href="http://www.myvideo.de/" target=_blank&gt;MyVideo.de&lt;/A&gt; however the application for an API key still remains unanswered. However at least I found two suitable APIs which are the &lt;A href="http://code.google.com/intl/de/apis/youtube/getting_started.html" target=_blank&gt;YouTube&lt;/A&gt; and the &lt;A href="http://help.metacafe.com/?page_id=238" target=_blank&gt;metacafe API&lt;/A&gt;. The architecture of the service would allow to include further video provider at a later stage through a simple interface which could even be made configurable with the service evolving.&lt;/P&gt;
&lt;P&gt;The requirements I defined for the service are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;STRONG&gt;Retrieval of video asset information from multiple sources&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;In order to provide the most possible value to the end user the visual search should aggregate multiple sources and provide a categorized visual search XML document to Internet Explorer.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;STRONG&gt;Sources should be accessed in a non-sequential non-blocking manner&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;The Visual Search functionality is very performance sensitive because its sole purpose is to provide a preview of search results or suggestions while you type. And as we are usually typing quite fast the service ideally needs to respond as fast as we type. However from my experience many people as they get used to the value of the preview take some more time to type and skim through the results. However performance is one of the crucial non functional requirements of such a service. So I split the search operations on the different video sites up into different threads which signal the main thread when they are finished and the final result message can be assembled and send back to the browser. As this already has some great impact on performance I also defined a timeout for the main thread to wait for the search workers to finish which ensures quality of service to the search users.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Source specific search controllers which translate the incoming feed information into the service specific data model&lt;/FONT&gt;&lt;/STRONG&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Since all of the APIs are different in the form how they issue data each one has to be handled separately. For the services used this means that there are two search controllers which prepare the incoming data in order to transform it into the XML structure needed by the visual search feature. The effort depends on the structure of the underlying APIs. In my example the YouTube API is a bit easier to use since they already offer .Net client libraries for easy consumption. In the case of metacafe we need to care about the network operations and the parsing of the response message from the service a little bit more.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Caching functionality to reduce costly network access and time-consuming processing of the incoming responses&lt;/FONT&gt;&lt;/STRONG&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Again this is something that is very much related to performance but also needs some careful considerations because caching one one hand greatly boosts the services ability to respond to the service requests that fire against the service as you type however it also introduces the risk of sending outdated results to the browser. Therefore the invalidation time needs to be carefully defined. Most important to cache are also probably the one or two letter searches which are rarely of relevance but would require a full roundtrip of the search service whenever a search is started being typed.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Robust and stable hosting environment&lt;/FONT&gt;&lt;/STRONG&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;A service like this which could easily be used by millions of users needs to be very robust and stable. Since this is already a challenge for the service application itself this is also true for the hosting environment. As I didn't want to care to much about this for my example I chose to host the WCF Service in Internet Information Service 7 as this is a production proven high scale hosting environment for web services.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So the high level architecture of the service looks like the following:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_9837/Architecture_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0px 0px 100px; BORDER-RIGHT-WIDTH: 0px" height=336 alt="Search Service Architecture" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_9837/Architecture_thumb_1.png" width=404 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Technologies used for the search service are as follows:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/netframework/default.aspx" target=_blank&gt;.Net Framework 3.5 SP 1&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" target=_blank&gt;Windows Communication Foundation (WCF)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc511588.aspx" target=_blank&gt;Enterprise Library - Caching Application Block&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://code.google.com/intl/de/apis/youtube/getting_started.html" target=_blank&gt;YouTube API&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://help.metacafe.com/?page_id=238" target=_blank&gt;metacafe API&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.iis.net/" target=_blank&gt;Internet Information Server 7&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;That's all for the introductory and overview part. In the next parts we dig a bit deeper into the into the architecture and the components.&lt;/P&gt;
&lt;P&gt;And in order to give you a little preview of what you can expect here's a screenshot of the service in action.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_9837/screenshot_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0px 0px 100px; BORDER-RIGHT-WIDTH: 0px" height=484 alt="IE8 Visual Search Sceenshot" src="http://blogs.msdn.com/blogfiles/astrauss/WindowsLiveWriter/BuildingaVisualSearchServiceforIE8withWC_9837/screenshot_thumb.jpg" width=318 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=600 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=70&gt;&lt;A href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.aspx" mce_href="http://digg.com/submit?phase=2&amp;amp;http://blogs.msdn.com/astrauss/archive/2008/10/25/building-a-visual-search-service-for-ie8-with-wcf-part-i.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="" 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('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="" 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 { display: -moz-inline-block; display:inline-block; padding:1px 20px 0 5px; height:15px; border:1px solid #d8dfea; background:url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) no-repeat top right; } html .fb_share_button:hover { color:#fff; border-color:#295582; background:#3b5998 url(http://static.ak.facebook.com/images/share/facebook_share_icon.gif?6:26981) no-repeat top right; text-decoration:none; } &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="" width=150&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=9016308" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Service+Orientation/">Service Orientation</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/-Net/">.Net</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/S_2B00_S/">S+S</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Enterprise+Library/">Enterprise Library</category></item><item><title>Attaining IE8 Site Compatibility - Short Reference</title><link>http://blogs.msdn.com/b/astrauss/archive/2008/10/22/attaining-ie8-site-compatibility-short-reference.aspx</link><pubDate>Wed, 22 Oct 2008 17:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9011107</guid><dc:creator>Alex Strauss</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/astrauss/rsscomments.aspx?WeblogPostID=9011107</wfw:commentRss><comments>http://blogs.msdn.com/b/astrauss/archive/2008/10/22/attaining-ie8-site-compatibility-short-reference.aspx#comments</comments><description>&lt;p&gt;Ok, once again some information regarding the new IE8. This product is occupying me quite a bit however I think it is important to tell the story about better W3C standards compliance and new compelling and easy to develop extensibility and what that means to users and site owners. Especially standards compliance unfortunately is something that may introduce the need to act for many site owners. What that means is that &lt;a target="_blank" href="http://blogs.msdn.com/ie/archive/2008/03/03/microsoft-s-interoperability-principles-and-ie8.aspx" mce_href="http://blogs.msdn.com/ie/archive/2008/03/03/microsoft-s-interoperability-principles-and-ie8.aspx"&gt;IE8 by default renders in the most standards compliant mode it supports&lt;/a&gt; however this may break the experience of existing sites if the site owner doesn't take actions since the markup and style information sent to browsers identified as Internet Explorer is not standards compliant or is optimized for older browsers. Luckily there is remedy for this issues and some of them are quite simple and can be implemented with a minimum of effort. Since those possibilities are already comprehensively documented on Microsoft websites I don't want to dig into the details of every aspect about how to attain site compatibility. But since I found that the resources are scattered across many different pages I want to summarize the possibilities and list them in a short, clear and easy to follow way in this blog post. There are two categories of changes that you can bring in in order to have your site rendered correctly. One is to tell Internet Explorer 8 to use a &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx"&gt;backwards compatibility mode&lt;/a&gt; to render the page or to alter the page markup and styles to reflect the latest &lt;a target="_blank" href="http://w3.org/" mce_href="http://w3.org"&gt;W3C&lt;/a&gt; standards supported by IE8. So what is necessary to do so? Here are the compressed instructions.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Tell Internet Explorer explicitly which document mode to use&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ol&gt;       &lt;li&gt;To do that you can place a meta-tag into the &amp;lt;head&amp;gt;-Section of your pages or page templates. The tag has the following name and format:          &lt;br /&gt;          &lt;br /&gt;          &lt;table class="class" border="0" cellspacing="0" cellpadding="2" width="468"&gt;&lt;tbody&gt;             &lt;tr&gt;               &lt;td style="background: #dddddd" class="class" valign="top" width="466"&gt;                 &lt;p&gt;&lt;b&gt;&lt;font color="#ff0000"&gt;&amp;lt;meta http-equiv=&amp;quot;X-UA-Compatible&amp;quot; content=&amp;quot;IE=EmulateIE7&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;               &lt;/td&gt;             &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;          &lt;br /&gt;The content attribute of the tag accepts the values IE=5, IE=EmulateIE7, IE=IE7, IE=8, IE=Edge (or anything else however this could lead to unexpected behaviors ;)). The values, except for the &amp;quot;Edge&amp;quot; mode are probably self explaining however if you want more information there is a good explanation about those modes on the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx"&gt;MSDN page&lt;/a&gt; already mentioned.           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;You can instruct your webserver to add a custom header to the http-response when your pages are sent to the browser which has the advantage that you don't have to alter all your pages or templates but you are still able to control the rendering behavior in a very granular way since the header can be applied on an per application basis or for pages only that match a certain pattern.          &lt;br /&gt;          &lt;ol&gt;           &lt;li&gt;For IIS such a header can be applied by inserting a &lt;strong&gt;&lt;font color="#008000"&gt;&lt;em&gt;&amp;lt;customHeaders&amp;gt;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt; section into the &lt;strong&gt;&lt;em&gt;&lt;font color="#008000"&gt;web.config&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; file for the application like outlined in the sample below.               &lt;br /&gt;              &lt;br /&gt;              &lt;table class="class" border="0" cellspacing="0" cellpadding="2" width="685"&gt;&lt;tbody&gt;                 &lt;tr&gt;                   &lt;td style="background: #dddddd" class="class" valign="top" width="683"&gt;                     &lt;p&gt;&lt;font color="#000000"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;/font&gt;&lt;/p&gt;                      &lt;p&gt;&lt;font color="#000000"&gt;&amp;lt;configuration&amp;gt;&lt;/font&gt;&lt;/p&gt;                      &lt;p&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160; &amp;lt;system.webServer&amp;gt;&lt;/font&gt;&lt;/p&gt;                      &lt;p&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;httpProtocol&amp;gt;&lt;/font&gt;&lt;/p&gt;                      &lt;p&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;customHeaders&amp;gt;&lt;/font&gt;&lt;/p&gt;                      &lt;p&gt;&lt;font color="#000000"&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;clear /&amp;gt;&lt;/font&gt;&lt;/p&gt;                      &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&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;add name=&amp;quot;X-UA-Compatible&amp;quot; value=&amp;quot;IE=EmulateIE7&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;                      &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/customHeaders&amp;gt;&lt;/font&gt;&lt;/p&gt;                      &lt;p&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/httpProtocol&amp;gt;&lt;/font&gt;&lt;/p&gt;                      &lt;p&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160; &amp;lt;/system.webServer&amp;gt;&lt;/font&gt;&lt;/p&gt;                      &lt;p&gt;&lt;font color="#000000"&gt;&amp;lt;/configuration&amp;gt;&lt;/font&gt;&lt;/p&gt;                   &lt;/td&gt;                 &lt;/tr&gt;               &lt;/tbody&gt;&lt;/table&gt;              &lt;br /&gt;&lt;/li&gt;            &lt;li&gt;For an Apache 2.x webserver you need to add a Header directive to the &lt;font color="#008000"&gt;&lt;em&gt;&lt;strong&gt;httpd.config&lt;/strong&gt;&lt;/em&gt;&lt;/font&gt; after enabling the headers module by uncommenting the &lt;em&gt;&lt;strong&gt;&lt;font color="#008000"&gt;LoadModule&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt; directive for the &lt;em&gt;&lt;strong&gt;&lt;font color="#008000"&gt;mod_headers.so&lt;/font&gt; &lt;/strong&gt;&lt;/em&gt;module&lt;em&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/em&gt; So the LoadModule and the Header directive looks like outlined below.               &lt;br /&gt;              &lt;br /&gt;              &lt;table class="class" border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;                 &lt;tr&gt;                   &lt;td style="background: #dddddd" class="class" width="400" top?="top?"&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;LoadModule headers_module modules/mod_headers.so&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;                 &lt;/tr&gt;                  &lt;tr&gt;                   &lt;td style="background: #dddddd" class="class" width="400" top?="top?"&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Header set X-UA-Compatible IE=7&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;                 &lt;/tr&gt;               &lt;/tbody&gt;&lt;/table&gt;              &lt;br /&gt;&lt;/li&gt;         &lt;/ol&gt;          &lt;p&gt;If the you configure your webserver to set such a header and a page also includes a meta-tag already like described in 1.2.1 the tag in the markup takes precedence over the header set by the server.&lt;/p&gt;       &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Deliver W3C standards compliant web documents&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ol&gt;       &lt;li&gt;Update your pages to reflect the latest W3C standards supported by Internet Explorer 8. The changes which were implemented in order to attain standards compliance are documented on &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx"&gt;MSDN&lt;/a&gt;.           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;Since option 2.1 means quite some implementation and testing effort there might be already a solution that reduces, at least the implementation efforts for quite a bit and that is to use a site version that may probably be already available, e.g. the pages that you send out to other standards compliant browsers like Firefox. So the solution is to use the user-agent string to identify Internet Explorer 8 and to send back the pages also used for other browsers. The technique to evaluate the user-agent string to identify certain browser versions is already commonly known and used however for those of you who want to have in depth information about that can consult the documentation about &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms537503.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms537503.aspx"&gt;user-agents&lt;/a&gt;, the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms537509.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms537509.aspx"&gt;detection of browser versions&lt;/a&gt; and how to evaluate them using &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Regular_expression" mce_href="http://en.wikipedia.org/wiki/Regular_expression"&gt;regular expressions&lt;/a&gt;. The relevant part of the IE8 user-agent string however looks like this:           &lt;br /&gt;          &lt;br /&gt;          &lt;table class="class" border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;             &lt;tr&gt;               &lt;td style="background: #dddddd" class="class" valign="top" width="400"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;Mozilla/4.0 (compatible; MSIE 8.0&amp;#8230;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;             &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;       &lt;/li&gt;     &lt;/ol&gt;      &lt;p&gt;But remember that Internet Explorer still is the released IE version with a significant market share and it will probably be around for another couple of years. So it would be not wise to follow a IE8 strategy only but keep a IE7 version as well. How strategies for versioning in conjunction with browser detection and conditional comments can be set up is briefly outlined in this &lt;a target="_blank" href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&amp;amp;ReleaseId=531" mce_href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&amp;amp;ReleaseId=531"&gt;whitepaper&lt;/a&gt;.&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Of folks, I hope that this condensed reference is of some help to you and finally I will leave you with the call to action&lt;/p&gt;  &lt;h4&gt;To get compliant today to guarantee a seamless experience when users come to your site with IE8!&lt;/h4&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9011107" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/User+Experience/">User Experience</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Standards/">Standards</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Advisory/">Advisory</category><category domain="http://blogs.msdn.com/b/astrauss/archive/tags/Internet+Explorer+8/">Internet Explorer 8</category></item></channel></rss>
