<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 - Entries tagged with Web Services</title>
    <atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Tags/web+services/RSS"></atom:link>
    <itunes:summary></itunes:summary>
    <itunes:author>Microsoft</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <image>
      <url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
      <title>Channel 9 - Entries tagged with Web Services</title>
      <link>http://channel9.msdn.com/Tags/web+services</link>
    </image>
    <itunes:image href=""></itunes:image>
    <itunes:category text="Technology"></itunes:category>
    <description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
    <link>http://channel9.msdn.com/Tags/web+services</link>
    <language>en</language>
    <pubDate>Sat, 18 May 2013 14:28:48 GMT</pubDate>
    <lastBuildDate>Sat, 18 May 2013 14:28:48 GMT</lastBuildDate>
    <generator>Rev9</generator>
    <c9:totalResults>85</c9:totalResults>
    <c9:pageCount>4</c9:pageCount>
    <c9:pageSize>25</c9:pageSize>
  <item>
      <title>Dive into the summer with ISVs : Introduction into leveraging the Web</title>
      <description><![CDATA[ <p><strong><a href="http://msdn.microsoft.com/nl-be/hh308663%20">ISV Summer Campaign : Leveraging the Web</a></strong></p><p>The holidays are just about to end, but there's still time to boost your knowledge or learn something totally new.<br><br>Durint these 2 weeks we'll be giving the fourth and final topic of this summer issue their place in the sun, namely the <strong>Web and the web browser</strong>. Click through and you'll find all the best resources, presented based on the amount of time you want to spend on it.<br><br><strong>Explore and dive into Web solutions</strong><br><br>What is the most used application on a computer nowadays? Most likely it will be the web browser.&nbsp; The Web and the web browser have quickly become a user's natural habitat, a familiar environment, and with Web 2.0, a place to work, interact and play.</p><p>You as an independent software vendor (ISV) can take advantage of this in many ways.&nbsp; The Web provides you a marketing platform to reach out to millions of potential customers for your application.&nbsp; In that case, you will want to fully show the beauty of the web on your website to stand out and attract these customers.</p><p>On the other hand, you can use the Web as your application platform to build web applications or to extend your desktop application with existing web services (e.g. mapping unctionality, social media integration, etc.) to augment your core application usiness value.</p><p>Have&nbsp; look at our website and discover a handpicked choice of articles, white papers nd videos explaining what Microsoft web technologies can bring to you as an ISV.</p><p><strong>Speaker : Nick Trogh</strong></p><p>&nbsp;</p><p><span><strong><span>Other interesting Summer Campaigns :</span></strong></span></p><p><span>-For IT Professionals : <a href="http://technet.microsoft.com/nl-be/ff793346">Virtualisation(Part 1)</a>, <a href="http://technet.microsoft.com/nl-be/ff898349">Desktop Deployment</a>,<a href="http://technet.microsoft.com/nl-be/ff898387%20">Virtualisation (Part 2</a>), <a href="http://technet.microsoft.com/nl-be/ff793348%20">Best of TechDays 2011</a></span></p><p><span>-For Architects : <a href="http://msdn.microsoft.com/nl-be/ff793349">Cloud Power</a>, <a href="http://msdn.microsoft.com/nl-be/ff793347">the Windows AzurePlatform</a>, <a href="http://msdn.microsoft.com/nl-be/ff877815%20">Cloud Patterns and Practices</a>, <a href="http://msdn.microsoft.com/nl-be/ff877809%20">Windows Azure Platform Interoperability</a></span></p><p><span>-For Developers : <a href="http://msdn.microsoft.com/nl-be/ff872142">Windows Phone 7 Mango</a>, <a href="http://msdn.microsoft.com/nl-be/ff718229">Visual Studio 2010 ALM</a>, <a href="http://msdn.microsoft.com/nl-be/ff793345%20">HTML5</a>, <a href="http://msdn.microsoft.com/nl-be/ff872149%20">The Windows Azure Platform</a></span></p><p><br><br></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:e33cb72b9ae4405e935a9f1700e43a3e">]]></description>
      <comments>http://channel9.msdn.com/Blogs/liese/Dive-into-the-summer-with-ISVs--Introduction-into-leveraging-the-Web</comments>
      <itunes:summary> ISV Summer Campaign : Leveraging the Web The holidays are just about to end, but there&#39;s still time to boost your knowledge or learn something totally new.Durint these 2 weeks we&#39;ll be giving the fourth and final topic of this summer issue their place in the sun, namely the Web and the web browser. Click through and you&#39;ll find all the best resources, presented based on the amount of time you want to spend on it.Explore and dive into Web solutionsWhat is the most used application on a computer nowadays? Most likely it will be the web browser.&amp;nbsp; The Web and the web browser have quickly become a user&#39;s natural habitat, a familiar environment, and with Web 2.0, a place to work, interact and play. You as an independent software vendor (ISV) can take advantage of this in many ways.&amp;nbsp; The Web provides you a marketing platform to reach out to millions of potential customers for your application.&amp;nbsp; In that case, you will want to fully show the beauty of the web on your website to stand out and attract these customers. On the other hand, you can use the Web as your application platform to build web applications or to extend your desktop application with existing web services (e.g. mapping unctionality, social media integration, etc.) to augment your core application usiness value. Have&amp;nbsp; look at our website and discover a handpicked choice of articles, white papers nd videos explaining what Microsoft web technologies can bring to you as an ISV. Speaker : Nick Trogh &amp;nbsp; Other interesting Summer Campaigns : -For IT Professionals : Virtualisation(Part 1), Desktop Deployment,Virtualisation (Part 2), Best of TechDays 2011 -For Architects : Cloud Power, the Windows AzurePlatform, Cloud Patterns and Practices, Windows Azure Platform Interoperability -For Developers : Windows Phone 7 Mango, Visual Studio 2010 ALM, HTML5, The Windows Azure Platform  </itunes:summary>
      <itunes:duration>137</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/liese/Dive-into-the-summer-with-ISVs--Introduction-into-leveraging-the-Web</link>
      <pubDate>Tue, 16 Aug 2011 07:23:19 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/liese/Dive-into-the-summer-with-ISVs--Introduction-into-leveraging-the-Web</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_2MB_ch9.wmv" expression="full" duration="137" fileSize="32758241" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_ch9.mp3" expression="full" duration="137" fileSize="1103808" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_ch9.wma" expression="full" duration="137" fileSize="1122467" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_ch9.wmv" expression="full" duration="137" fileSize="30278255" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_high_ch9.mp4" expression="full" duration="137" fileSize="56603298" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_low_ch9.mp4" expression="full" duration="137" fileSize="13917856" type="video/mp4" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb.ism/manifest" expression="full" duration="137" fileSize="6136" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/3a3e/e33cb72b-9ae4-405e-935a-9f1700e43a3e/isvsummerleveragingweb_ch9.wmv" length="30278255" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Anthony de Bruyn</dc:creator>
      <itunes:author>Anthony de Bruyn</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/liese/Dive-into-the-summer-with-ISVs--Introduction-into-leveraging-the-Web/RSS</wfw:commentRss>
      <category>Belgium</category>
      <category>BeLux</category>
      <category>Browser</category>
      <category>fr-be</category>
      <category>ISV</category>
      <category>MS Web</category>
      <category>MS Web Platform</category>
      <category>MSDN</category>
      <category>NL-BE</category>
      <category>Summer</category>
      <category>Web</category>
      <category>Web Services</category>
    </item>
  <item>
      <title>How to Shop for Free Online</title>
      <description><![CDATA[ <p><em>Web applications increasingly integrate third-party services. The integration introduces new security challenges due to the complexity for an application to coordinate its internal states with those of the component services and the web client across the Internet. In this paper, we study the security implications of this problem to merchant websites that accept payments through third-party cashiers (e.g., PayPal, Amazon Payments and Google Checkout), which we refer to as Cashier-as-a-Service or CaaS. We found that leading merchant applications (e.g., NopCommerce and Interspire), popular online stores (e.g., Buy.com and JR.com) and a prestigious CaaS provider (Amazon Payments) all contain serious logic flaws that can be exploited to cause inconsistencies between the states of the CaaS and the merchant. </em>[<strong><a href="http://research.microsoft.com/apps/pubs/default.aspx?id=145858" target="_blank">Source</a></strong>]<br><br>Interesting, captain. What exactly does this mean? How are these flaws in programming logic exploited by evil shoppers? Most importantly, how can I shop for free?!?? <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p><p>In all seriousness, with the online world becoming increasingly complex with its distributed services communicating over various protocols, information that&nbsp;materializes&nbsp;on end points as plain text, and non-uniform payment&nbsp;service policies—with the cherry on top being&nbsp;non-uniform identity of communicating parties—well, business can get messy. <span>MSR researchers <strong><a href="http://research.microsoft.com/en-us/people/shuochen/" target="_blank">Shuo Chen</a></strong> and <span><strong><a href="http://research.microsoft.com/en-us/people/qadeer/" target="_blank">Shaz Qadeer</a></strong>, as well as&nbsp;PhD student and key author of <strong><a href="http://research.microsoft.com/pubs/145858/caas-oakland-final.pdf" target="_blank">this really interesting research paper</a></strong>,&nbsp;<strong><a href="http://ruiwang.info/" target="_blank">Rui Wang</a></strong></span></span><span>, join me for a conversation about the implications of this research(another author of the paper is <strong><a href="http://www.informatics.indiana.edu/xw7/" target="_blank">XiaoFeng Wang</a></strong> of Indiana University Bloomington). Most importantly, however, I try to get them to give me the details about how I can fool online merchants into shipping me goods for free (just kidding!) and what they think is needed to fix this problem in a mathematically precise fashion (static/dynamic analysis, security-based policy languages for CaaS, etc.). </span></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:6a20877f942349ab9c1a9ee00135c57c">]]></description>
      <comments>http://channel9.msdn.com/posts/Web-Security-Cashier-as-a-ServiceCaas-and-How-to-Shop-for-Free-Online</comments>
      <itunes:summary> Web applications increasingly integrate third-party services. The integration introduces new security challenges due to the complexity for an application to coordinate its internal states with those of the component services and the web client across the Internet. In this paper, we study the security implications of this problem to merchant websites that accept payments through third-party cashiers (e.g., PayPal, Amazon Payments and Google Checkout), which we refer to as Cashier-as-a-Service or CaaS. We found that leading merchant applications (e.g., NopCommerce and Interspire), popular online stores (e.g., Buy.com and JR.com) and a prestigious CaaS provider (Amazon Payments) all contain serious logic flaws that can be exploited to cause inconsistencies between the states of the CaaS and the merchant. [Source]Interesting, captain. What exactly does this mean? How are these flaws in programming logic exploited by evil shoppers? Most importantly, how can I shop for free?!??  In all seriousness, with the online world becoming increasingly complex with its distributed services communicating over various protocols, information that&amp;nbsp;materializes&amp;nbsp;on end points as plain text, and non-uniform payment&amp;nbsp;service policies—with the cherry on top being&amp;nbsp;non-uniform identity of communicating parties—well, business can get messy. MSR researchers Shuo Chen and Shaz Qadeer, as well as&amp;nbsp;PhD student and key author of this really interesting research paper,&amp;nbsp;Rui Wang, join me for a conversation about the implications of this research(another author of the paper is XiaoFeng Wang of Indiana University Bloomington). Most importantly, however, I try to get them to give me the details about how I can fool online merchants into shipping me goods for free (just kidding!) and what they think is needed to fix this problem in a mathematically precise fashion (static/dynamic analysis, security-based policy languages for CaaS, etc.).  &amp;nbsp; &amp;nbsp; &amp;nbsp; </itunes:summary>
      <itunes:duration>2089</itunes:duration>
      <link>http://channel9.msdn.com/posts/Web-Security-Cashier-as-a-ServiceCaas-and-How-to-Shop-for-Free-Online</link>
      <pubDate>Tue, 17 May 2011 17:01:38 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Web-Security-Cashier-as-a-ServiceCaas-and-How-to-Shop-for-Free-Online</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_2MB_ch9.wmv" expression="full" duration="2089" fileSize="301753859" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_ch9.mp3" expression="full" duration="2089" fileSize="16713866" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_ch9.wma" expression="full" duration="2089" fileSize="16899475" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_ch9.wmv" expression="full" duration="2089" fileSize="343345967" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_high_ch9.mp4" expression="full" duration="2089" fileSize="794211872" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_low_ch9.mp4" expression="full" duration="2089" fileSize="176231773" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_Zune_ch9.wmv" expression="full" duration="2089" fileSize="287602022" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS.ism/manifest" expression="full" duration="2089" fileSize="8774" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/C57C/6A20877F-9423-49AB-9C1A-9EE00135C57C/MSRInternetResearchWebSecurityCaaS_ch9.wmv" length="343345967" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Web-Security-Cashier-as-a-ServiceCaas-and-How-to-Shop-for-Free-Online/rss</wfw:commentRss>
      <category>Computer Science</category>
      <category>Microsoft Research</category>
      <category>MS Research</category>
      <category>RiSE</category>
      <category>Security</category>
      <category>Web Services</category>
    </item>
  <item>
      <title>Currency Converter v2 – Now on Caffeine!</title>
      <description><![CDATA[ <p>Taking user feedback about the application into consideration, it’s time to make some improvements! J</p><p>Here are some of the reports we got from the users:</p><ul><li>The application is too slow when exchanging currencies </li><li>It uses too much data traffic/should cache the exchange rates </li><li>It doesn’t work for some currencies </li><li>The results are inaccurate/using out-of-date exchange rates </li></ul><p>So, what we can see from these comments is that we need a better data source, and that we should use some sort of caching mechanism…</p><p>I think I’ll go ahead and put some coffee on to boil!</p><h3>To Bing or not to Bing…</h3><p>The first version of Currency Converter used Bing to make the exchanges, which resulted in some of the reports you read above!</p><p>For this version, however, we decided to use MSN Money because it has more accurate and up-to-date data, and because it works every time no matter the currency!</p><p>MSN Money provides a very nice page on which we can see current currency exchange rates in relation to US Dollars; just open your Internet Explorer 8.0&#43; and navigate to the following URL:</p><p><a href="http://moneycentral.msn.com/investor/market/exchangerates.aspx">http://moneycentral.msn.com/investor/market/exchangerates.aspx</a></p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/image%5B5%5D.png"><img title="image" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/image_thumb%5B3%5D.png" alt="image" width="589" height="442" border="0"></a></p><p>As you can see here, we have all the data we need to convert from X to USD and from USD to X, and we can even convert from X to USD to Y.</p><p>So, why not just get all of this data on a single request, cache it, and use it offline to make the currency exchanges? J</p><p>Like before, we will retrieve the data we require from the page HTML by using Regular Expressions. To do so, open Internet Explorer Developer Tools (press F12), use the “Select element by click” option (Ctrl &#43; B), and click on the “Argentine Peso” text; you’ll get something looking like this:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/image%5B10%5D.png"><img title="image" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/image_thumb%5B6%5D.png" alt="image" width="589" height="442" border="0"></a></p><p>Using the information above, we can see a pattern in the code:</p><p><strong>HTML<br></strong><pre class="brush: html">&lt;tr&gt;
    &lt;td&gt;CURRENCY&lt;/td&gt;
    &lt;td style=”text-align:right”&gt;&lt;a SOMETHING&gt;VALUE_IN_USD&lt;/a&gt;&lt;/td&gt;
    &lt;td style=”text-align:right”&gt;&lt;a SOMETHING&gt;VALUE_PER_USD&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;</pre></p><p>Now that we know the pattern, we are now able to build this regular expression:</p><p><strong>C#<br></strong><pre class="brush: csharp">private static Regex _resultRegex = 
    new Regex(&quot;&lt;tr&gt;&lt;td&gt;(?&lt;currency&gt;[^&lt;&gt;]&#43;)&lt;/td&gt;&lt;td style=&quot;&quot;text-align:right&quot;&quot;&gt;.*?&gt;(?&lt;value&gt;[0-9.,]&#43;)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&quot;);</pre></p><p>Applying this Regular Expression to the retrieved HTML will allows us to get every row matching it, and retrieve the Currency Name and the “Per USD” Exchange Rate!</p><h3>Time for some coding</h3><p>Now that we know how to get all the currency rates from a single URL, it’s time to make the necessary changes to our code to accommodate the new data!</p><p>Like the previous article, we will maintain the MVVM pattern, showing the coding from the pattern’s bottom (Model) to the very top (View).</p><h4>The (Re)Model</h4><p>Here are the changes we need to make on our model in order to accommodate the retrieved and cached currency rates:</p><ul><li>Set each currency to save its exchange rate and last update </li><li>Mark the base currency (US Dollar), giving it an exchange rate of 1.0 (trying to convert from USD to USD? Right…) </li><li>Add an “Update Exchange Rates” operation to the service </li></ul><p>And here is the full Model, with the changes in yellow:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/image%5B13%5D.png"><img title="image" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/image_thumb%5B7%5D.png" alt="image" width="547" height="402" border="0"></a></p><p><strong>C#<br></strong><pre class="brush: csharp">using System;public interface ICurrencyExchangeService
{
    ICurrency[] Currencies { get; }    ICurrency BaseCurrency { get; }    void ExchangeCurrency(double amount, ICurrency fromCurrency, ICurrency toCurrency, Action&lt;ICurrencyExchangeResult&gt; callback);    void UpdateCachedExchangeRates(Action&lt;CachedExchangeRatesUpdateResult&gt; callback, object state);
}public interface ICurrency
{
    string Name { get; }    double CachedExchangeRate { get; set; }    DateTime CachedExchangeRateUpdatedOn { get; set; }
}public interface ICurrencyExchangeResult
{
    Exception Error { get; }    string ExchangedCurrency { get; }    double ExchangedAmount { get; }
}public interface ICachedExchangeRatesUpdateResult
{
    Exception Error { get; }    object State { get; }
}</pre></p><p>The ICurrencyExchangeService now has a new BaseCurrency property that we will set with the “US Dollar” currency instance, as well as an UpdateCachedExchangeRates method to update all the exchange rates.</p><p>For the ICurrency, we have two new properties: the CachedExchangeRate to store the currency exchange rate value, and the CachedExchangeRateUpdatedOn for the last update date.</p><p>A new interface called ICachedExchangeRatesUpdateResult has been added in order to return any exception thrown by the ICurrencyExchangeService.UpdateCachedExchangeRates method asynchronous execution to the caller.</p><p>Now let’s look at the interface’s implementation:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/image%5B16%5D.png"><img title="image" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/image_thumb%5B8%5D.png" alt="image" width="589" height="392" border="0"></a></p><p>The first new thing to take note of is that we now have a CurrencyBase abstract class. From here, we extend the MsnMoneyCurrency class, adding a single Id property to store the numeric Id for the Currency found in MSN Money.</p><p>Next is the MsnMoneyV2CurrencyExchangeService, a direct implementation of the ICurrencyExchangeService.</p><p>Unlike BingCurrencyExchangeService from the previous version, notice that MsnMoneyV2CurrencyExchangeService does not extend the CurrencyExchangeServiceBase, and that it only requests online data in the UpdateCachedExchangeRates method and not on every ExchangeCurrency method call.</p><p>Here is the code for these classes:</p><p><strong>C#<br></strong><pre class="brush: csharp">public class MsnMoneyV2CurrencyExchangeService : ICurrencyExchangeService
{
    private const string MsnMoneyUrl = &quot;<a href="http://moneycentral.msn.com/investor/market/exchangerates.aspx?selRegion=1&amp;selCurrency=1&quot;;">http://moneycentral.msn.com/investor/market/exchangerates.aspx?selRegion=1&amp;selCurrency=1&quot;;</a>    #region Static Globals    private static Regex _resultRegex = new Regex(@&quot;&lt;tr&gt;&lt;td&gt;(?&lt;currency&gt;[^&lt;&gt;]&#43;)&lt;/td&gt;&lt;td style=&quot;&quot;text-align:right&quot;&quot;&gt;.*?&gt;(?&lt;value&gt;[0-9.,]&#43;)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&quot;);    private static ICurrency[] _currencies = new ICurrency[] { 
        //The currencies exposed by MSN Money will go here
    };    #endregion    #region Properties    public ICurrency[] Currencies
    {
        get
        {
            return _currencies;
        }
    }    public ICurrency BaseCurrency { get; protected set; }    #endregion    public MsnMoneyV2CurrencyExchangeService()
    {
        BaseCurrency = Currencies.First(x =&gt; x.Name == &quot;US Dollar&quot;);
    }    public void ExchangeCurrency(double amount, ICurrency fromCurrency, ICurrency toCurrency, bool useCachedExchangeRates, Action&lt;ICurrencyExchangeResult&gt; callback, object state)
    {
        if (useCachedExchangeRates)
        {
            try
            {
                ExchangeCurrency(amount, fromCurrency, toCurrency, callback, state);                return;
            }
            catch
            {
            }
        }        UpdateCachedExchangeRates(result =&gt;
        {
            if (result.Error != null)
            {
                callback(new CurrencyExchangeResult(result.Error, state));                return;
            }            try
            {
                ExchangeCurrency(amount, fromCurrency, toCurrency, callback, state);
            }
            catch (Exception ex)
            {
                callback(new CurrencyExchangeResult(ex, state));
            }
        }, state);
    }    private void ExchangeCurrency(double amount, ICurrency fromCurrency, ICurrency toCurrency, Action&lt;ICurrencyExchangeResult&gt; callback, object state)
    {
        var fromExchangeRate = fromCurrency.CachedExchangeRate;
        var toExchangeRate = toCurrency.CachedExchangeRate;
        var timestamp = DateTime.Now;        if (fromCurrency == BaseCurrency)
            fromExchangeRate = 1.0;
        else
        {
            if (timestamp &gt; fromCurrency.CachedExchangeRateUpdatedOn)
                timestamp = fromCurrency.CachedExchangeRateUpdatedOn;
        }        if (toCurrency == BaseCurrency)
            toExchangeRate = 1.0;
        else
        {
            if (timestamp &gt; toCurrency.CachedExchangeRateUpdatedOn)
                timestamp = toCurrency.CachedExchangeRateUpdatedOn;
        }        if (fromExchangeRate &gt; 0 &amp;&amp; toExchangeRate &gt; 0)
        {
            var exchangedAmount = amount / fromExchangeRate * toExchangeRate;            callback(new CurrencyExchangeResult(toCurrency, exchangedAmount, timestamp, state));
        }
        else
            throw new Exception(&quot;Conversion not returned!&quot;);
    }    public void UpdateCachedExchangeRates(Action&lt;CachedExchangeRatesUpdateResult&gt; callback, object state)
    {
        var request = HttpWebRequest.Create(MsnMoneyUrl);        request.BeginGetResponse(ar =&gt;
        {
            try
            {
                var response = (HttpWebResponse)request.EndGetResponse(ar);                if (response.StatusCode == HttpStatusCode.OK)
                {
                    string responseContent;                    using (var streamReader = new StreamReader(response.GetResponseStream()))
                    {
                        responseContent = streamReader.ReadToEnd();
                    }                    foreach (var match in _resultRegex.Matches(responseContent).Cast&lt;Match&gt;())
                    {
                        var currencyName = match.Groups[&quot;currency&quot;].Value.Trim();                        var currency = Currencies.FirstOrDefault(x =&gt; string.Compare(x.Name, currencyName, StringComparison.InvariantCultureIgnoreCase) == 0);                        if (currency != null)
                        {
                            currency.CachedExchangeRate = double.Parse(match.Groups[&quot;value&quot;].Value, CultureInfo.InvariantCulture);
                            currency.CachedExchangeRateUpdatedOn = DateTime.Now;
                        }
                    }                    callback(new CachedExchangeRatesUpdateResult(ar.AsyncState));
                }
                else
                {
                    throw new Exception(string.Format(&quot;Http Error: ({0}) {1}&quot;,
                        response.StatusCode,
                        response.StatusDescription));
                }
            }
            catch (Exception ex)
            {
                callback(new CachedExchangeRatesUpdateResult(ex, ar.AsyncState));
            }
        }, state);
    }
}</pre></p><p>Here’s how it works: when the ExchangeCurrency method is called, we pass a parameter (useCachedExchangeRates) that instructs the method to use (or not!) the previously cached exchange rates.</p><p>Next, make the exchange operation and return the results. If the operation throws an exception, or if we didn’t allow for cached exchange rates usage, call the UpdateCachedExchangeRates to update the exchange rates and then run the exchange operation with the new data.</p><p>And that’s about it for the Model!</p><h4>The ViewModel</h4><p>We maintained the full ViewModel from the previous version, but added some new functionality to it. Here’s the coding (main changes are in yellow):</p><p><strong>C#<br></strong><pre class="brush: csharp">public class MainViewModel : INotifyPropertyChanged
{
    //Full previous code    #region Properties    [IgnoreDataMember]
    public ICurrencyExchangeResult Result
    {
        get
        {
            return _result;
        }
        protected set
        {
            if (_result == value)
                return;            _result = value;            RaisePropertyChanged(&quot;Result&quot;);
            RaisePropertyChanged(&quot;ExchangedCurrency&quot;);
            RaisePropertyChanged(&quot;ExchangedAmount&quot;);
            RaisePropertyChanged(&quot;ExchangedTimeStamp&quot;);
        }
    }    [IgnoreDataMember]
    public string ExchangedTimeStamp
    {
        get
        {
            if (_result == null)
                return string.Empty;            return string.Format(&quot;Data freshness:\n{0} at {1}&quot;,
                _result.Timestamp.ToShortDateString(),
                _result.Timestamp.ToShortTimeString());
        }
    }    [DataMember]
    public CurrencyCachedExchangeRate[] CurrenciesCachedExchangeRates
    {
        get
        {
            return Currencies
                .Select(x =&gt; new CurrencyCachedExchangeRate()
                {
                    CurrencyIndex = Array.IndexOf(Currencies, x),
                    CachedExchangeRate = x.CachedExchangeRate,
                    CachedExchangeRateUpdatedOn = x.CachedExchangeRateUpdatedOn
                })
                .ToArray();
        }
        set
        {
            foreach (var currencyData in value)
            {
                if (currencyData.CurrencyIndex &gt;= Currencies.Length)
                    continue;                var currency = Currencies[currencyData.CurrencyIndex];                currency.CachedExchangeRate = currencyData.CachedExchangeRate;
                currency.CachedExchangeRateUpdatedOn = currencyData.CachedExchangeRateUpdatedOn;
            }
        }
    }    #endregion    //Full previous code    public void ExchangeCurrency()
    {
        if (Busy)
            return;        BusyMessage = &quot;Exchanging amount...&quot;;        _currencyExchangeService.ExchangeCurrency(_amount, _fromCurrency, _toCurrency, true, CurrencyExchanged, null);
    }    public void UpdateCachedExchangeRates()
    {
        if (Busy)
            return;        BusyMessage = &quot;Updating cached exchange rates...&quot;;        _currencyExchangeService.UpdateCachedExchangeRates(ExchangeRatesUpdated, null);
    }    private void CurrencyExchanged(ICurrencyExchangeResult result)
    {
        InvokeOnUiThread(() =&gt;
        {
            Result = result;            BusyMessage = null;            if (result.Error != null)
            {
                if (System.Diagnostics.Debugger.IsAttached)
                    System.Diagnostics.Debugger.Break();
                else
                    MessageBox.Show(&quot;An error has ocorred!&quot;, &quot;Error&quot;, MessageBoxButton.OK);
            }
        });
    }    private void ExchangeRatesUpdated(ICachedExchangeRatesUpdateResult result)
    {
        InvokeOnUiThread(() =&gt;
        {
            BusyMessage = null;            Save();            if (result.Error != null)
            {
                if (System.Diagnostics.Debugger.IsAttached)
                    System.Diagnostics.Debugger.Break();
                else
                    MessageBox.Show(&quot;An error has ocorred!&quot;, &quot;Error&quot;, MessageBoxButton.OK);
            }
        });
    }    private void InvokeOnUiThread(Action action)
    {
        var dispatcher = System.Windows.Deployment.Current.Dispatcher;        if (dispatcher.CheckAccess())
            action();
        else
            dispatcher.BeginInvoke(action);
    }    #region Auxiliary Classes    public class CurrencyCachedExchangeRate
    {
        [DataMember]
        public int CurrencyIndex { get; set; }        [DataMember]
        public double CachedExchangeRate { get; set; }        [DataMember]
        public DateTime CachedExchangeRateUpdatedOn { get; set; }
    }    #endregion
}</pre></p><p>The first thing you will notice here is a new ExchangedTimeStamp read-only property that feeds the interface with the date string to denote when the used currency data was obtained. The interface is notified that this property value has changed when the Result property value is also changed.</p><p>Further down there’s another new property, CurrenciesCachedExchangeRates, that stores the cached exchange rates. For this to work, we have an auxiliary class called CurrencyCachedExchangeRate that stores the currency index along with the exchange rate as well as the update timestamp.</p><p>The UpdateCachedExchangeRates method allows users to manually force an update over the cached exchange rates.</p><p>The CurrencyExchanged and ExchangeRatesUpdated callbacks use the InvokeOnUiThread method to make sure that their codes run properly on the UI thread.</p><h4>The View</h4><p>Two simple changes have been made in the MainPage.xaml (our main View): an area on the screen has been added to show the exchange operation result timestamp, and a menu option has been added to force a full exchange rate update.</p><p>To make the first change, add a simple TextArea on the bottom StackPanel and bind it to the ExchangedTimeStamp property of the ViewModel:</p><p><strong>XAML<br></strong><pre class="brush: text">&lt;StackPanel x:Name=&quot;ContentPanel&quot; Grid.Row=&quot;1&quot; Margin=&quot;12,0,12,0&quot;&gt;
    &lt;TextBlock Margin=&quot;12,0,0,-5&quot; Style=&quot;{StaticResource PhoneTextSubtleStyle}&quot;&gt;Amount&lt;/TextBlock&gt;
    &lt;TextBox InputScope=&quot;TelephoneNumber&quot; Text=&quot;{Binding Amount, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}&quot; /&gt;
    &lt;TextBlock Margin=&quot;12,10,0,-5&quot; Style=&quot;{StaticResource PhoneTextSubtleStyle}&quot;&gt;From&lt;/TextBlock&gt;
    &lt;toolkit:ListPicker ItemsSource=&quot;{Binding Currencies}&quot; SelectedItem=&quot;{Binding FromCurrency, Mode=TwoWay}&quot; FullModeHeader=&quot;FROM CURRENCY&quot; Style=&quot;{StaticResource CurrencyListPicker}&quot; /&gt;
    &lt;TextBlock Margin=&quot;12,10,0,-5&quot; Style=&quot;{StaticResource PhoneTextSubtleStyle}&quot;&gt;To&lt;/TextBlock&gt;
    &lt;toolkit:ListPicker ItemsSource=&quot;{Binding Currencies}&quot; SelectedItem=&quot;{Binding ToCurrency, Mode=TwoWay}&quot; FullModeHeader=&quot;TO CURRENCY&quot; Style=&quot;{StaticResource CurrencyListPicker}&quot; /&gt;
    &lt;StackPanel&gt;
        &lt;TextBlock Style=&quot;{StaticResource PhoneTextGroupHeaderStyle}&quot; Text=&quot;{Binding ExchangedCurrency}&quot;&gt;&lt;/TextBlock&gt;
        &lt;TextBlock Margin=&quot;25, 0, 0, 0&quot; Style=&quot;{StaticResource PhoneTextTitle1Style}&quot; Text=&quot;{Binding ExchangedAmount}&quot;&gt;&lt;/TextBlock&gt;
        &lt;TextBlock Style=&quot;{StaticResource PhoneTextSubtleStyle}&quot; Text=&quot;{Binding ExchangedTimeStamp}&quot; TextWrapping=&quot;Wrap&quot; TextAlignment=&quot;Right&quot;&gt;&lt;/TextBlock&gt;
    &lt;/StackPanel&gt;
&lt;/StackPanel&gt;</pre></p><p>As for the “update exchange rates” menu option, add a new ApplicationBarMenuItem to the MenuItems collection, set the appropriate text, and add a handler for the click event:</p><p><strong>XAML<br></strong><pre class="brush: text">&lt;phone:PhoneApplicationPage.ApplicationBar&gt;
    &lt;shell:ApplicationBar IsVisible=&quot;True&quot; IsMenuEnabled=&quot;True&quot;&gt;
        &lt;shell:ApplicationBarIconButton IconUri=&quot;/Images/appbar.money.usd.png&quot; Text=&quot;Exchange&quot; Click=&quot;ExchangeIconButton_Click&quot; /&gt;
        &lt;shell:ApplicationBar.MenuItems&gt;
            &lt;shell:ApplicationBarMenuItem Text=&quot;update exchange rates&quot; Click=&quot;UpdateExchangeRatesMenuItem_Click&quot; /&gt;
            &lt;shell:ApplicationBarMenuItem Text=&quot;about&quot; Click=&quot;AboutMenuItem_Click&quot; /&gt;
        &lt;/shell:ApplicationBar.MenuItems&gt;
    &lt;/shell:ApplicationBar&gt;
&lt;/phone:PhoneApplicationPage.ApplicationBar&gt;</pre></p><p>Now, all that is missing is implementing the UpdateExchangeRatesMenuItem_To do so, click the event handler in the MainPage.xaml.cs:</p><p><strong>C#<br></strong><pre class="brush: csharp">private void UpdateExchangeRatesMenuItem_Click(object sender, EventArgs e)
{
    var viewModel = DataContext as MainViewModel;    if (viewModel == null)
        return;    Dispatcher.BeginInvoke(() =&gt;
    {
        viewModel.UpdateCachedExchangeRates();
    });
}</pre></p><h3>Conclusion</h3><p>The bottom line is that your application is as good as the data source you use. By utilizing a new (better) data source, some really simple changes to the code, we now have the Currency Converter—faster than ever!</p><p>And just in time: the coffee is ready!</p><h3>About The Author</h3><p>Pedro Lamas is a Portuguese .Net Senior Developer on Microsoft’s Partner DevScope, where he works with all the cool stuff that Microsoft .Net has to offer its developers!</p><p>He’s also one of the administrators of PocketPT.net, the largest Windows Phone Portuguese community, where his contribution is mostly visible on support for Windows Phone developers, and as a speaker for Windows Phone Development in Microsoft Portugal Events.</p><p>You can read his <a href="http://www.pedrolamas.com">blog</a> or contact him via <a href="http://twitter.com/pedrolamas">twitter</a>!</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f1949595c4fb4be1924f9ed4011b1714">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Currency-Converter-v2--Now-on-Caffeine</comments>
      <itunes:summary> Taking user feedback about the application into consideration, it’s time to make some improvements! J Here are some of the reports we got from the users: The application is too slow when exchanging currencies It uses too much data traffic/should cache the exchange rates It doesn’t work for some currencies The results are inaccurate/using out-of-date exchange rates So, what we can see from these comments is that we need a better data source, and that we should use some sort of caching mechanism… I think I’ll go ahead and put some coffee on to boil! To Bing or not to Bing…The first version of Currency Converter used Bing to make the exchanges, which resulted in some of the reports you read above! For this version, however, we decided to use MSN Money because it has more accurate and up-to-date data, and because it works every time no matter the currency! MSN Money provides a very nice page on which we can see current currency exchange rates in relation to US Dollars; just open your Internet Explorer 8.0&amp;#43; and navigate to the following URL: http://moneycentral.msn.com/investor/market/exchangerates.aspx  As you can see here, we have all the data we need to convert from X to USD and from USD to X, and we can even convert from X to USD to Y. So, why not just get all of this data on a single request, cache it, and use it offline to make the currency exchanges? J Like before, we will retrieve the data we require from the page HTML by using Regular Expressions. To do so, open Internet Explorer Developer Tools (press F12), use the “Select element by click” option (Ctrl &amp;#43; B), and click on the “Argentine Peso” text; you’ll get something looking like this:  Using the information above, we can see a pattern in the code: HTML&amp;lt;tr&amp;gt;
    &amp;lt;td&amp;gt;CURRENCY&amp;lt;/td&amp;gt;
    &amp;lt;td style=”text-align:right”&amp;gt;&amp;lt;a SOMETHING&amp;gt;VALUE_IN_USD&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
    &amp;lt;td style=”text-align:right”&amp;gt;&amp;lt;a SOMETHING&amp;gt;VALUE_PER_USD&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt; Now th</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Currency-Converter-v2--Now-on-Caffeine</link>
      <pubDate>Mon, 02 May 2011 12:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Currency-Converter-v2--Now-on-Caffeine</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/d2ef20a2-9867-4013-9399-5c9a685add18.png" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/79fa25a3-94ee-45da-a789-4929539801c5.png" height="165" width="220"></media:thumbnail>      
      <dc:creator>Pedro Lamas</dc:creator>
      <itunes:author>Pedro Lamas</itunes:author>
      <slash:comments>6</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Currency-Converter-v2--Now-on-Caffeine/RSS</wfw:commentRss>
      <category>MVVM</category>
      <category>Silveright</category>
      <category>Silverlight</category>
      <category>Web Services</category>
      <category>Windows Phone</category>
      <category>XAML</category>
    </item>
  <item>
      <title>Windows Phone 7 Push Notification QuickApp / Web Service (With Azure Publishing Instructions!)</title>
      <description><![CDATA[ <p>John Mulhausen takes you from from zero to an Azure-hosted, push notification-sending web service and an accompanying phone app in 19 minutes.</p><p>1) Do you want to see how to send/receive every kind of Push Notification that there is&nbsp;for Windows Phone?</p><p>2) Do you want to know the certification rules and usage restrictions involved with using Push Notifications for Windows Phone?</p><p>3) Do you want to see how to make a web service and consume it in a Windows Phone app?</p><p>4) Have you been meaning to try Azure but thought it would take MORE than 90 seconds to learn how to publish on it?</p><p>If so, look no further; the answers to all these and more are inside.</p><p><a href="http://archive.msdn.microsoft.com/silverlightforphone/Release/ProjectReleases.aspx?ReleaseId=5522">Click here </a>to download the source code used in this video.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:411f5a90c0e447e5bb229e9c014a73bd">]]></description>
      <comments>http://channel9.msdn.com/posts/Windows-Phone-7-Push-Notification-QuickApp--Web-Service-With-Azure-Publishing-Instructions</comments>
      <itunes:summary> John Mulhausen takes you from from zero to an Azure-hosted, push notification-sending web service and an accompanying phone app in 19 minutes. 1) Do you want to see how to send/receive every kind of Push Notification that there is&amp;nbsp;for Windows Phone? 2) Do you want to know the certification rules and usage restrictions involved with using Push Notifications for Windows Phone? 3) Do you want to see how to make a web service and consume it in a Windows Phone app? 4) Have you been meaning to try Azure but thought it would take MORE than 90 seconds to learn how to publish on it? If so, look no further; the answers to all these and more are inside. Click here to download the source code used in this video. </itunes:summary>
      <itunes:duration>1654</itunes:duration>
      <link>http://channel9.msdn.com/posts/Windows-Phone-7-Push-Notification-QuickApp--Web-Service-With-Azure-Publishing-Instructions</link>
      <pubDate>Sat, 05 Mar 2011 00:36:28 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Windows-Phone-7-Push-Notification-QuickApp--Web-Service-With-Azure-Publishing-Instructions</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_2MB_ch9.wmv" expression="full" duration="1654" fileSize="130258398" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_ch9.mp3" expression="full" duration="1654" fileSize="13240950" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_ch9.wma" expression="full" duration="1654" fileSize="13393807" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_ch9.wmv" expression="full" duration="1654" fileSize="74543357" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_high_ch9.mp4" expression="full" duration="1654" fileSize="436945684" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_low_ch9.mp4" expression="full" duration="1654" fileSize="42074314" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_Zune_ch9.wmv" expression="full" duration="1654" fileSize="68847412" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push.ism/manifest" expression="full" duration="1654" fileSize="5956" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/73BD/411F5A90-C0E4-47E5-BB22-9E9C014A73BD/push_ch9.wmv" length="74543357" type="video/x-ms-wmv"></enclosure>
      <dc:creator>JoMul</dc:creator>
      <itunes:author>JoMul</itunes:author>
      <slash:comments>11</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Windows-Phone-7-Push-Notification-QuickApp--Web-Service-With-Azure-Publishing-Instructions/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Push Notifcation</category>
      <category>Silverlight</category>
      <category>Web Services</category>
      <category>Windows Azure</category>
      <category>Windows Phone</category>
      <category>Windows Phone 7</category>
      <category>Quick Apps</category>
    </item>
  <item>
      <title>Currency Converter for Windows Phone 7</title>
      <description><![CDATA[ <p>The purpose of this article is to show how you can make your very own, very simple Currency Converter application for Windows Phone 7, using Bing to make all the hard exchanging work!</p><h2><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/conversion_splash.png"><img title="conversion_splash" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/conversion_splash_thumb.png" alt="conversion_splash" width="288" height="480" border="0"></a>Introduction</h2><p>Microsoft has done an absolutely amazing job with the Windows Phone 7, giving each and every one of us all of the necessary tools to make our applications blend nicely on it; and the best part—the tools are, and will always be, free!!! J</p><h2>Using Bing for the currency exchange</h2><p>First let's look at what happens when I open up Bing on my browser, and enter a search query like “1 US Dollar in Euros”:</p><p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image.png"><img title="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_thumb.png" alt="image" width="500" height="375" border="0"></a></p><p>As you can see, Bing correctly understood my query, and knew that I was looking for an exchange rate. Then MSN Money made the exchange and presented the result.</p><p>Also, notice that the address displays as:</p><p>http://www.bing.com/search?q=<strong>1&#43;US&#43;Dollar&#43;in&#43;Euros</strong>&amp;go=&amp;form=QBRE&amp;qs=n&amp;sk=&amp;sc=1-20</p><p>OK, but how can we use this to feed the WP7 application? Call the Internet Explorer Developer Tools (just press F12 on your IE8&#43;) and use the “Select element by click” option (Ctrl &#43; B) to select the result on the page and see its HTML code. The result will look just like this:</p><p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_3.png"><img title="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_thumb_3.png" alt="image" width="500" height="406" border="0"></a></p><p>Now we know how to build the Bing currency exchange search query (using “http://www.bing.com/search?q=<strong>{VALUE}</strong>&#43;<strong>{SOURCE_CURRENCY}</strong>&#43;in&#43;<strong>{DESTINATION_CURRENCY}</strong>&amp;go=&amp;form=QBRE&amp;qs=n&amp;sk=&amp;sc=1-20”) and also how to find the results on the returned HTML (search the “&lt;span class=&quot;sc_bigLine&quot;&gt;<strong>RESULT</strong>&lt;/span&gt;”).</p><p>The final task is selecting that span tag on the full HTML and then extracting the converted amount; for this task, I'll be using the following Regular Expression (using System.Text.RegularExpressions):</p><p><strong>C# <br></strong></p><pre class="csharpcode"><span class="kwrd">static</span> Regex _resultRegex =   <span class="kwrd">new</span> Regex(<span class="str">&quot;&lt;span class=\&quot;sc_bigLine\&quot;&gt;.*? = (?&lt;value&gt;[0-9.,]&#43;).*?&lt;/span&gt;&quot;</span>);</pre><p>&nbsp;</p><p>This expression searches the HTML code for a span with class “sc_bigLine” and inner content matching something like the above example: “1 USD = 0.71270 EUR”.</p><p>The expression also allows me to extract the number after the “=” sign by using Groups[“value&quot;].value property.</p><h2>MVVM is our friend!</h2><p>I'll start by quoting the Wikipedia:</p><p><em>The Model View ViewModel (MVVM) is an architectural pattern used in software engineering (…) is targeted at modern UI development platforms (Windows Presentation Foundation and Silverlight) in which there is a User Experience (UX) developer who has different requirements than a more “traditional” developer (i.e. oriented toward business logic and back end development).</em></p><p>Basically, the point is to clearly separate the user interface from all the business logic and data that our application will use!</p><p>We can summarize the MVVM pattern with this schema:</p><p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_4.png"><img title="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_thumb_4.png" alt="image" width="295" height="290" border="0"></a></p><p>The View is the basic XAML for the user interface (although sometimes it can have a C# file attached to it) that will use Data Binding to read and change properties on the ViewModel, and Actions to invoke the methods.</p><p>The ViewModel is the abstraction of the View and will do all the work for binding the View to the Model, with the necessary data conversion.</p><p>The Model can represent the actual object model instance in a known state, or just a data access layer.</p><p>There is one basic rule in MVVM: don't look up! The Model has no knowledge of either the ViewModel or the View, and the ViewModel has no knowledge of the View.</p><p>This brings a new challenge on how to make the three components talk between themselves, and that's where notifications come along!</p><p>We use notifications to communicate changes from a lower component to an upper one; when the upper component gets notified, it will then query the lower for what changed and act accordingly to the new state!</p><p>You can read more about MVVM throughout the internet, but there is an article by Shawn Wildermuth that's one of the best I've seen; you can read it here: <a href="http://msdn.microsoft.com/en-us/magazine/dd458800.aspx">http://msdn.microsoft.com/enus/magazine/dd458800.aspx</a>.</p><h2>The Model</h2><p>We will start at the very bottom (a.k.a. the Model), and as such I've created the following Interfaces to support our Data Model:</p><p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_5.png"><img title="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_thumb_5.png" alt="image" width="401" height="150" border="0"></a><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_6.png"><img title="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_thumb_6.png" alt="image" width="147" height="115" border="0"></a></p><p><strong>C# <br></strong></p><pre class="csharpcode"><span class="kwrd">using</span> System; <span class="kwrd">public</span> <span class="kwrd">interface</span> ICurrencyExchangeService{    ICurrency[] Currencies { get; }    <span class="kwrd">void</span> ExchangeCurrency(        <span class="kwrd">double</span> amount,         ICurrency fromCurrency,         ICurrency toCurrency,         Action&lt;ICurrencyExchangeResult&gt; callback);} <span class="kwrd">public</span> <span class="kwrd">interface</span> ICurrency{    <span class="kwrd">string</span> Name { get; }} <span class="kwrd">public</span> <span class="kwrd">interface</span> ICurrencyExchangeResult{    Exception Error { get; }    <span class="kwrd">string</span> ExchangedCurrency { get; }    <span class="kwrd">double</span> ExchangedAmount { get; }}</pre><p>&nbsp;</p><p>From these three interfaces, we will extend our Bing Currency Exchange provider:</p><p>The abstract CurrencyExchangeServiceBase class implements the ICurrencyExchangeService.ExchangeCurrency method to do all the asynchronous work required to request data from a webserver and retrieve the resulting HTML; to achieve its goal, the CurrencyExchangeServiceBase has two abstract methods that must be implemented: CreateRequestUrl, to get the request url that will be passed to the WebRequest, and GetResultFromResponseContent, to parse the received HTML and return the exchanged value.</p><p>We then extend the BingCurrencyExchangeService from CurrencyExchangeServiceBase, implementing the CreateRequestUrl and GetResultFromResponseContent required methods and the ICurrencyExchangeService.Currencies property including all currencies supported by this service instance.</p><p>We have also a basic ICurrency interface implementation class called BingCurrency.</p><p>This is the CurrencyExchangeServiceBase abstract class implementation:</p><p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_7.png"><img title="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_thumb_7.png" alt="image" width="454" height="412" border="0"></a></p><p><strong>C#</strong></p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">abstract</span> <span class="kwrd">class</span> CurrencyExchangeServiceBase : ICurrencyExchangeService{   <span class="kwrd">public</span> <span class="kwrd">abstract</span> ICurrency[] Currencies { get; }   <span class="kwrd">protected</span> <span class="kwrd">abstract</span> <span class="kwrd">string</span> CreateRequestUrl(        <span class="kwrd">double</span> amount,         ICurrency fromCurrency,         ICurrency toCurrency);   <span class="kwrd">protected</span> <span class="kwrd">abstract</span> <span class="kwrd">double</span>         GetResultFromResponseContent(<span class="kwrd">string</span> responseContent);   <span class="kwrd">public</span> <span class="kwrd">void</span> ExchangeCurrency(        <span class="kwrd">double</span> amount,         ICurrency fromCurrency,         ICurrency toCurrency,         Action&lt;ICurrencyExchangeResult&gt; callback)   {      var url = CreateRequestUrl(amount, fromCurrency, toCurrency);      var request = HttpWebRequest.Create(url);      request.BeginGetResponse(ar =&gt;       {         <span class="kwrd">try</span>         {            var response = (HttpWebResponse)request.EndGetResponse(ar);            <span class="kwrd">if</span> (response.StatusCode == HttpStatusCode.OK)            {               <span class="kwrd">string</span> responseContent;               <span class="kwrd">using</span> (var streamReader =                   <span class="kwrd">new</span> StreamReader(response.GetResponseStream()))               {                  responseContent = streamReader.ReadToEnd();               }               var exchangedCurrency =                   GetResultFromResponseContent(responseContent);               callback(                  <span class="kwrd">new</span> CurrencyExchangeResult(                     toCurrency.Name,                      exchangedCurrency));            }            <span class="kwrd">else</span>            {               <span class="kwrd">throw</span> <span class="kwrd">new</span> Exception(                <span class="kwrd">string</span>.Format(<span class="str">&quot;Http Error: ({0}) {1}&quot;</span>,                  response.StatusCode,                  response.StatusDescription));            }         }         <span class="kwrd">catch</span> (Exception ex)         {            callback(<span class="kwrd">new</span> CurrencyExchangeResult(ex));         }      }, <span class="kwrd">null</span>);   }}</pre><p>&nbsp;</p><p>As I said before, this is an abstract class that requires any inheritor to implement the Currencies property as well as the CreateRequestUrl and GetResultFromResponseContent functions—and that's exactly what the BingCurrencyExchangeService class does:</p><p><strong>C# <br></strong></p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> BingCurrencyExchangeService : CurrencyExchangeServiceBase{   <span class="kwrd">private</span> <span class="kwrd">static</span> Regex _resultRegex =       <span class="kwrd">new</span> Regex(<span class="str">&quot;&lt;span class=\&quot;sc_bigLine\&quot;&gt;.*? = (?&lt;value&gt;[0-9.,]&#43;).*?&lt;/span&gt;&quot;</span>);   <span class="kwrd">private</span> <span class="kwrd">static</span> ICurrency[] _currencies = <span class="kwrd">new</span> ICurrency[] {       <span class="kwrd">new</span> BingCurrency(<span class="str">&quot;Euro&quot;</span>),      <span class="kwrd">new</span> BingCurrency(<span class="str">&quot;US Dollar&quot;</span>)      <span class="rem">//all available currencies will go here!</span>   };   <span class="preproc">#endregion</span>   <span class="kwrd">public</span> <span class="kwrd">override</span> ICurrency[] Currencies   {      get      {         <span class="kwrd">return</span> _currencies;      }   }   <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">string</span> CreateRequestUrl(<span class="kwrd">double</span> amount, ICurrency fromCurrency, ICurrency toCurrency)   {      <span class="kwrd">return</span> <span class="kwrd">string</span>.Format(         <span class="str">@&quot;http://www.bing.com/search?q={0}&#43;{1}&#43;in&#43;{2}&amp;scope=web&amp;mkt=en-US&amp;FORM=W0LH&quot;</span>,         amount,         fromCurrency.Name.Replace(<span class="str">&quot; &quot;</span>, <span class="str">&quot;&#43;&quot;</span>),         toCurrency.Name.Replace(<span class="str">&quot; &quot;</span>, <span class="str">&quot;&#43;&quot;</span>));   }   <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">double</span> GetResultFromResponseContent(<span class="kwrd">string</span> responseContent)   {      var match = _resultRegex.Match(responseContent);      <span class="kwrd">if</span> (match.Success)         <span class="kwrd">return</span> <span class="kwrd">double</span>.Parse(            match.Groups[<span class="str">&quot;value&quot;</span>].Value,             CultureInfo.InvariantCulture);      <span class="kwrd">else</span>         <span class="kwrd">throw</span> <span class="kwrd">new</span> Exception(<span class="str">&quot;Conversion not returned!&quot;</span>);   }}</pre><p>&nbsp;</p><p>As you can see here, the BingCurrencyExchangeService class knows how to build the Bing search url if given the currencies and the value of exchange, and also how to get the converted value out of the response HTML code (notice the usage of our regular expression).</p><h2>The ViewModel</h2><p>The ViewModel has a basic inheritance requirement: using INotifyPropertyChanged to notify the user interface of property value changes.</p><p>Our MainViewModel class will have to expose three base data properties for the user interface controls: FromCurrency, ToCurrency, and Amount.</p><p>All assembled, this is how the ViewModel looks:</p><p><strong>C# <br></strong></p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> MainViewModel : INotifyPropertyChanged{   <span class="kwrd">private</span> ICurrencyExchangeService _currencyExchangeService;   <span class="kwrd">private</span> <span class="kwrd">double</span> _amount;   <span class="kwrd">private</span> ICurrency _fromCurrency;   <span class="kwrd">private</span> ICurrency _toCurrency;   <span class="kwrd">public</span> ICurrencyExchangeService CurrencyExchangeService   {      get      {         <span class="kwrd">return</span> _currencyExchangeService;      }      set      {         <span class="kwrd">if</span> (_currencyExchangeService == <span class="kwrd">value</span>)            <span class="kwrd">return</span>;         _currencyExchangeService = <span class="kwrd">value</span>;         _fromCurrency = Currencies.FirstOrDefault(x =&gt; x.Name == <span class="str">&quot;US Dollar&quot;</span>) ?? Currencies[0];         _toCurrency = Currencies.FirstOrDefault(x =&gt; x.Name == <span class="str">&quot;Euro&quot;</span>) ?? Currencies[1];         RaisePropertyChanged(<span class="str">&quot;CurrencyExchangeService&quot;</span>);         RaisePropertyChanged(<span class="str">&quot;Currencies&quot;</span>);      }   }   <span class="kwrd">public</span> ICurrency[] Currencies   {      get      {         <span class="kwrd">return</span> _currencyExchangeService.Currencies;      }   }   <span class="kwrd">public</span> <span class="kwrd">string</span> Amount   {      get      {         <span class="kwrd">return</span> _amount.ToString(<span class="str">&quot;0.00&quot;</span>);      }      set      {         <span class="kwrd">double</span> amount;         <span class="kwrd">if</span> (<span class="kwrd">double</span>.TryParse(<span class="kwrd">value</span>, <span class="kwrd">out</span> amount))         {            <span class="kwrd">if</span> (_amount == amount)               <span class="kwrd">return</span>;            _amount = amount;            RaisePropertyChanged(<span class="str">&quot;Amount&quot;</span>);         }         <span class="kwrd">else</span>            <span class="kwrd">throw</span> <span class="kwrd">new</span> Exception(<span class="str">&quot;Please enter a valid Amount&quot;</span>);      }   }   <span class="kwrd">public</span> ICurrency FromCurrency   {      get      {         <span class="kwrd">return</span> _fromCurrency;      }      set      {         <span class="kwrd">if</span> (_fromCurrency == <span class="kwrd">value</span>)            <span class="kwrd">return</span>;         _fromCurrency = <span class="kwrd">value</span>;         RaisePropertyChanged(<span class="str">&quot;FromCurrency&quot;</span>);      }   }   <span class="kwrd">public</span> ICurrency ToCurrency   {      get      {         <span class="kwrd">return</span> _toCurrency;      }      set      {         <span class="kwrd">if</span> (_toCurrency == <span class="kwrd">value</span>)            <span class="kwrd">return</span>;         _toCurrency = <span class="kwrd">value</span>;         RaisePropertyChanged(<span class="str">&quot;ToCurrency&quot;</span>);      }   }   <span class="kwrd">public</span> MainViewModel()   {      CurrencyExchangeService = <span class="kwrd">new</span> BingCurrencyExchangeService();      Amount = <span class="str">&quot;100&quot;</span>;   }   <span class="kwrd">public</span> <span class="kwrd">event</span> PropertyChangedEventHandler PropertyChanged;   <span class="kwrd">private</span> <span class="kwrd">void</span> RaisePropertyChanged(<span class="kwrd">string</span> propertyName)   {      <span class="kwrd">if</span> (PropertyChanged != <span class="kwrd">null</span>)         PropertyChanged(<span class="kwrd">this</span>, <span class="kwrd">new</span> PropertyChangedEventArgs(propertyName));   }}</pre><p>&nbsp;</p><p>In order to allow the user to change the FromCurrency and ToCurrency properties, we need to list the available ones; as such, we added a Currencies property to return the ICurrency[] Currencies property of the Model instance.</p><p>On the MainViewModel constructor, set the CurrencyExchangeService property to a new BingCurrencyExchangeService instance, making it retrieve “Euro” and “US Dollar” (if available; if not, get the 1<sup>st</sup> and 2<sup>nd</sup> one instead) as the two default exchange currencies, and then set the Amount property to an initial value of “100.”</p><p>The PropertyChanged event is a basic implementation of the INotifyPropertyChanged interface, with a helper method called RaisePropertyChanged used to invoke the event.</p><p>Now we need to add functionality to request a currency exchange operation and show the results on the user interface:</p><p><strong>C# <br></strong></p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> MainViewModel : INotifyPropertyChanged{    <span class="rem">//remaining code...</span>    <span class="kwrd">private</span> ICurrencyExchangeResult _result;    <span class="kwrd">public</span> ICurrencyExchangeResult Result    {        get        {            <span class="kwrd">return</span> _result;        }        <span class="kwrd">protected</span> set        {            <span class="kwrd">if</span> (_result == <span class="kwrd">value</span>)                <span class="kwrd">return</span>;            _result = <span class="kwrd">value</span>;            RaisePropertyChanged(<span class="str">&quot;Result&quot;</span>);            RaisePropertyChanged(<span class="str">&quot;ExchangedCurrency&quot;</span>);            RaisePropertyChanged(<span class="str">&quot;ExchangedAmount&quot;</span>);        }    }    <span class="kwrd">public</span> <span class="kwrd">string</span> ExchangedCurrency    {        get        {            <span class="kwrd">if</span> (_result == <span class="kwrd">null</span>)                <span class="kwrd">return</span> <span class="kwrd">string</span>.Empty;            <span class="kwrd">return</span> _result.ExchangedCurrency;        }    }    <span class="kwrd">public</span> <span class="kwrd">string</span> ExchangedAmount    {        get        {            <span class="kwrd">if</span> (_result == <span class="kwrd">null</span>)                <span class="kwrd">return</span> <span class="kwrd">string</span>.Empty;            <span class="kwrd">return</span> _result.ExchangedAmount.ToString(<span class="str">&quot;N2&quot;</span>);        }    }    <span class="kwrd">public</span> <span class="kwrd">void</span> ExchangeCurrency()    {        _currencyExchangeService.ExchangeCurrency(_amount, _fromCurrency, _toCurrency, CurrencyExchanged);    }    <span class="kwrd">private</span> <span class="kwrd">void</span> CurrencyExchanged(ICurrencyExchangeResult result)    {        System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =&gt;        {            Result = result;        });    }}</pre><p>&nbsp;</p><p>The ExchangeCurrency method will be used to request a currency exchange operation on the Model instance, including the entered data. When the operation ends, the CurrencyExchanged method will be invoked and we will then get an ICurrencyExchangeResult instance with the results; this method will be asynchronously called on another thread, so we will need get the current Dispatcher and use it to invoke the changes to the MainViewModel.Result property (so that they are made on the interface thread).</p><p>As the Result property gets changed, it will also make property changed notifications to the ExchangedCurrency and ExchangedAmount properties, allowing the user interface to show the returned values.</p><h2>The View</h2><p>The View that will support our application is really quite simple!</p><p>The basic requirements are two ListPicker controls (these are implemented on the Silverlight Toolkit): one for each Currency (the MainViewModel FromCurrency and ToCurrency properties) and a TextBox for the Amount.</p><p>We also need two more TextAreas to show the currency exchange results (one for the ExchangedCurrency property and the other for the ExchangedAmount property, both from our MainViewModel).</p><p>Using the current MainPage.xaml, start by adding a reference to the Silverlight for Windows Phone Toolkit, like so:</p><p><strong>XAML <br></strong></p><pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">phone:PhoneApplicationPage</span><span class="attr">xmlns:toolkit</span><span class="kwrd">=&quot;clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit&quot;</span>&amp;<span class="attr">lt</span>;!<span class="attr">--remaining</span> <span class="attr">code</span>... <span class="attr">--</span><span class="kwrd">&gt;</span></pre><p>&nbsp;</p><p>Then, I'll change the default ContentPanel control from a Grid to a StackPanel, and add the required controls to edit the Currencies and the entry Value:</p><p><strong>XAML <br></strong></p><pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">StackPanel</span> <span class="attr">x:Name</span><span class="kwrd">=&quot;ContentPanel&quot;</span> <span class="attr">Grid</span>.<span class="attr">Row</span><span class="kwrd">=&quot;1&quot;</span> <span class="attr">Margin</span><span class="kwrd">=&quot;12,0&quot;</span><span class="kwrd">&gt;</span>   <span class="kwrd">&lt;</span><span class="html">TextBlock</span>       <span class="attr">Margin</span><span class="kwrd">=&quot;12,0,0,-5&quot;</span>       <span class="attr">Style</span><span class="kwrd">=&quot;{StaticResource PhoneTextSubtleStyle}&quot;</span><span class="kwrd">&gt;</span>      Amount   <span class="kwrd">&lt;/</span><span class="html">TextBlock</span><span class="kwrd">&gt;</span>   <span class="kwrd">&lt;</span><span class="html">TextBox</span>       <span class="attr">InputScope</span><span class="kwrd">=&quot;TelephoneNumber&quot;</span>       <span class="attr">Text</span><span class="kwrd">=&quot;{Binding Amount, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}&quot;</span> <span class="kwrd">/&gt;</span>   <span class="kwrd">&lt;</span><span class="html">TextBlock</span>       <span class="attr">Margin</span><span class="kwrd">=&quot;12,10,0,-5&quot;</span>       <span class="attr">Style</span><span class="kwrd">=&quot;{StaticResource PhoneTextSubtleStyle}&quot;</span><span class="kwrd">&gt;</span>         From   <span class="kwrd">&lt;/</span><span class="html">TextBlock</span><span class="kwrd">&gt;</span>   <span class="kwrd">&lt;</span><span class="html">toolkit:ListPicker</span>       <span class="attr">ItemsSource</span><span class="kwrd">=&quot;{Binding Currencies}&quot;</span>       <span class="attr">SelectedItem</span><span class="kwrd">=&quot;{Binding FromCurrency, Mode=TwoWay}&quot;</span>       <span class="attr">FullModeHeader</span><span class="kwrd">=&quot;FROM CURRENCY&quot;</span>       <span class="attr">Style</span><span class="kwrd">=&quot;{StaticResource CurrencyListPicker}&quot;</span> <span class="kwrd">/&gt;</span>   <span class="kwrd">&lt;</span><span class="html">TextBlock</span>       <span class="attr">Margin</span><span class="kwrd">=&quot;12,10,0,-5&quot;</span>       <span class="attr">Style</span><span class="kwrd">=&quot;{StaticResource PhoneTextSubtleStyle}&quot;</span><span class="kwrd">&gt;</span>      To   <span class="kwrd">&lt;/</span><span class="html">TextBlock</span><span class="kwrd">&gt;</span>   <span class="kwrd">&lt;</span><span class="html">toolkit:ListPicker</span>       <span class="attr">ItemsSource</span><span class="kwrd">=&quot;{Binding Currencies}&quot;</span>       <span class="attr">SelectedItem</span><span class="kwrd">=&quot;{Binding ToCurrency, Mode=TwoWay}&quot;</span>       <span class="attr">FullModeHeader</span><span class="kwrd">=&quot;TO CURRENCY&quot;</span>       <span class="attr">Style</span><span class="kwrd">=&quot;{StaticResource CurrencyListPicker}&quot;</span> <span class="kwrd">/&gt;</span>   <span class="kwrd">&lt;</span><span class="html">StackPanel</span><span class="kwrd">&gt;</span>      <span class="kwrd">&lt;</span><span class="html">TextBlock</span>          <span class="attr">Style</span><span class="kwrd">=&quot;{StaticResource PhoneTextGroupHeaderStyle}&quot;</span>          <span class="attr">Text</span><span class="kwrd">=&quot;{Binding ExchangedCurrency}&quot;</span> <span class="kwrd">/&gt;</span>      <span class="kwrd">&lt;</span><span class="html">TextBlock</span>          <span class="attr">Margin</span><span class="kwrd">=&quot;25, 0, 0, 0&quot;</span>          <span class="attr">Style</span><span class="kwrd">=&quot;{StaticResource PhoneTextTitle1Style}&quot;</span>          <span class="attr">Text</span><span class="kwrd">=&quot;{Binding ExchangedAmount}&quot;</span> <span class="kwrd">/&gt;</span>   <span class="kwrd">&lt;/</span><span class="html">StackPanel</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;/</span><span class="html">StackPanel</span><span class="kwrd">&gt;</span></pre><p>&nbsp;</p><p>Here's how it looks right now:</p><p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_8.png"><img title="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10098706/image_thumb_8.png" alt="image" width="287" height="292" border="0"></a></p><p>Notice the CurrencyListPicker style applied to the two ListPicker controls on the code above? Here it is:</p><p><strong>XAML <br></strong></p><pre class="csharpcode">&lt;phone:PhoneApplicationPage.Resources&gt;   &lt;Style x:Key=<span class="str">&quot;CurrencyListPicker&quot;</span> TargetType=<span class="str">&quot;toolkit:ListPicker&quot;</span>&gt;      &lt;Setter          Property=<span class="str">&quot;DisplayMemberPath&quot;</span>          Value=<span class="str">&quot;Name&quot;</span> /&gt;      &lt;Setter          Property=<span class="str">&quot;CacheMode&quot;</span>          Value=<span class="str">&quot;BitmapCache&quot;</span> /&gt;      &lt;Setter Property=<span class="str">&quot;FullModeItemTemplate&quot;</span>&gt;         &lt;Setter.Value&gt;            &lt;DataTemplate&gt;               &lt;StackPanel                      Orientation=<span class="str">&quot;Horizontal&quot;</span>                      Margin=<span class="str">&quot;16 21 0 20&quot;</span>&gt;                  &lt;TextBlock                      Text=<span class="str">&quot;{Binding Name}&quot;</span>                      FontSize=<span class="str">&quot;43&quot;</span>                      FontFamily=<span class="str">&quot;{StaticResource PhoneFontFamilyLight}&quot;</span>/&gt;               &lt;/StackPanel&gt;            &lt;/DataTemplate&gt;         &lt;/Setter.Value&gt;      &lt;/Setter&gt;   &lt;/Style&gt;&lt;/phone:PhoneApplicationPage.Resources&gt;</pre><p>&nbsp;</p><p>This style sets the initial values of three properties on the ListPickers: the DisplayMemberPath (it will be binded to the ICurrency.Name property), the CacheMode (for optimization only), and, most importantly, the FullModeItemTemplate, which indicates how to show each item when the ListPicker window pops up.</p><p>The next step will be adding the “Exchange” button to the bottom ApplicationBar, like so:</p><p><strong>XAML <br></strong></p><pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">phone:PhoneApplicationPage.ApplicationBar</span><span class="kwrd">&gt;</span>   <span class="kwrd">&lt;</span><span class="html">shell:ApplicationBar</span>       <span class="attr">IsVisible</span><span class="kwrd">=&quot;True&quot;</span>       <span class="attr">IsMenuEnabled</span><span class="kwrd">=&quot;False&quot;</span><span class="kwrd">&gt;</span>      <span class="kwrd">&lt;</span><span class="html">shell:ApplicationBarIconButton</span>          <span class="attr">IconUri</span><span class="kwrd">=&quot;/Images/appbar.money.usd.png&quot;</span>          <span class="attr">Text</span><span class="kwrd">=&quot;Exchange&quot;</span>          <span class="attr">Click</span><span class="kwrd">=&quot;ExchangeIconButton_Click&quot;</span> <span class="kwrd">/&gt;</span>   <span class="kwrd">&lt;/</span><span class="html">shell:ApplicationBar</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;/</span><span class="html">phone:PhoneApplicationPage.ApplicationBar</span><span class="kwrd">&gt;</span> </pre><p>&nbsp;</p><p>Remember to create an Images folder in your project and copy the required “appbar.money.usd.png” image to it (you can find this and other ApplicationBar icons in your “%ProgramFiles%\Microsoft SDKs\Windows Phone\v7.0\Icons\dark”); then, set its “Build” and “Copy to Output Directory” properties to “Content” and “Copy always”, respectively.</p><p>On the MainPage.xaml.cs, we'll add the ExchangeIconButton_Click() method:</p><p><strong>C# <br></strong></p><pre class="csharpcode"><span class="kwrd">private</span> <span class="kwrd">void</span> ExchangeIconButton_Click(<span class="kwrd">object</span> sender, EventArgs e){   var viewModel = DataContext <span class="kwrd">as</span> MainViewModel;   <span class="kwrd">if</span> (viewModel == <span class="kwrd">null</span>)      <span class="kwrd">return</span>;   Focus();   Dispatcher.BeginInvoke(() =&gt;   {      <span class="kwrd">if</span> (!NetworkInterface.GetIsNetworkAvailable())      {         MessageBox.Show(            <span class="str">&quot;No network connection found!&quot;</span>,             <span class="str">&quot;Error&quot;</span>,             MessageBoxButton.OK);         <span class="kwrd">return</span>;      }      viewModel.ExchangeCurrency();   });}</pre><p>&nbsp;</p><p>This method will check for a valid MainViewModel set on the DataContext, remove the Focus from any TextBox (thus hiding the on-screen keyboard), check if there is a valid network connection, and then call the MainViewModel.ExchangeCurrency() method.</p><h2>Tombstoning</h2><p>The final piece to developing this into the perfect Windows Phone 7 application is making it “Tombstoning” aware!</p><p>Since WP7 doesn't allow multitasking, every time an application is deactivated or closed you should save its state and then restore it when the application is reactivated or reopened; this process is called “Tombstoning.”</p><p>To do this, we use the System.Runtime.Serialization classes, namely, the DataMemberAttribute to mark all the properties of the MainViewModel we want to save (FromCurrency, ToCurrency, and Amount), and the IgnoreDataMemberAttribute to mark the ones we don't (CurrencyExchangeService, Currencies, Result, ExchangedCurrency, and ExchangedAmount).</p><p>We can't (or at least, shouldn't!) directly save the state of the FromCurrency and ToCurrency properties because they have complex values (rather than a base type like Int or String), so we mark these with the IgnoreDataMemberAttribute and add two new properties, one for each, that will get/set the relative index of the Currencies array:</p><p><strong>C# <br></strong></p><pre class="csharpcode">[DataMember] <span class="kwrd">public</span> <span class="kwrd">int</span> FromCurrencyIndex{    get    {        <span class="kwrd">return</span> Array.IndexOf(Currencies, FromCurrency);    }    set    {        FromCurrency = Currencies[<span class="kwrd">value</span>];    }}[DataMember] <span class="kwrd">public</span> <span class="kwrd">int</span> ToCurrencyIndex{    get    {        <span class="kwrd">return</span> Array.IndexOf(Currencies, ToCurrency);    }    set    {        ToCurrency = Currencies[<span class="kwrd">value</span>];    }}</pre><p>&nbsp;</p><p>Now add the methods to Load and Save the state of the MainViewModel instance; since the Save method has to be called on the App.xaml.cs Application_Deactivated() and Application_Closing() events, the best way is to make our View Model a singleton. To do this, add the following code to the MainViewModel class:</p><p><strong>C# <br></strong></p><pre class="csharpcode">[IgnoreDataMember] <span class="kwrd">private</span> <span class="kwrd">const</span> <span class="kwrd">string</span> SettingFileName = <span class="str">&quot;mainviewmodel.dat&quot;</span>; <span class="kwrd">public</span> <span class="kwrd">static</span> MainViewModel Instance { get; <span class="kwrd">protected</span> set; } <span class="kwrd">static</span> MainViewModel(){    Instance = Load();} <span class="kwrd">public</span> <span class="kwrd">static</span> MainViewModel Load(){    <span class="kwrd">return</span> StorageHelper.LoadContract&lt;MainViewModel&gt;(SettingFileName, <span class="kwrd">true</span>);} <span class="kwrd">public</span> <span class="kwrd">void</span> Save(){    StorageHelper.SaveContract(SettingFileName, <span class="kwrd">this</span>, <span class="kwrd">true</span>);}</pre><p>&nbsp;</p><p>The StorageHelper class you see here is just a helper used to serialize and deserialize a file on the application's IsolatedStorage.</p><p>Now all we have to do is change the MainPage.xaml.cs constructor so it uses the singleton instead of creating a new MainViewModel instance:</p><p><strong>C# <br></strong></p><pre class="csharpcode"><span class="kwrd">public</span> MainPage(){    InitializeComponent();    <span class="kwrd">this</span>.DataContext = MainViewModel.Instance;}</pre><p>&nbsp;</p><p>Finally, invoke the Save method on the two required events of the App.xaml.cs file:</p><p><strong>C# <br></strong></p><pre class="csharpcode"><span class="kwrd">private</span> <span class="kwrd">void</span> Application_Deactivated(<span class="kwrd">object</span> sender, DeactivatedEventArgs e){    MainViewModel.Instance.Save();} <span class="kwrd">private</span> <span class="kwrd">void</span> Application_Closing(<span class="kwrd">object</span> sender, ClosingEventArgs e){    MainViewModel.Instance.Save();}</pre><p>&nbsp;</p><p>And that is it! To test the application, open it, press the windows key so that the Windows Phone main screen appears, wait a couple of seconds, and press the back key to return to the application: you will see a “resuming” message appear when the application state restores!</p><p>The application can now be Tombstoned anytime, and when it gets opened again, it will appear as if it never closed!</p><h2>Conclusion</h2><p>As you see here, you can build simple applications for Windows Phone 7 by using basic MVVM architecture, and still have time to go out and have a coffee with your friends!</p><p>Remember: If you want to try this out, the download link for the source code is at the top of the article!</p><p>The sample code uses the BingCurrencyExchangeService, but it also has a second provider for MSN Money, the MsnMoneyCurrencyExchangeService, which you can check out!</p><h2>About The Author</h2><p>Pedro Lamas is a Portuguese .Net Senior Developer on Microsoft's Partner DevScope, where he works with all the cool stuff that Microsoft .Net has to offer its developers!</p><p>He's also one of the administrators of PocketPT.net, the largest Windows Phone Portuguese community, where his contribution is mostly visible on support for Windows Phone developers, and as a speaker for Windows Phone Development in Microsoft Portugal Events.</p><p>You can read his <a href="http://www.pedrolamas.com">blog</a> or contact him via <a href="http://twitter.com/pedrolamas">twitter</a>!</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:c06ad9bf51dc4c27a50c9e7600c7076d">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Currency-Converter-for-Windows-Phone-7</comments>
      <itunes:summary> The purpose of this article is to show how you can make your very own, very simple Currency Converter application for Windows Phone 7, using Bing to make all the hard exchanging work! IntroductionMicrosoft has done an absolutely amazing job with the Windows Phone 7, giving each and every one of us all of the necessary tools to make our applications blend nicely on it; and the best part—the tools are, and will always be, free!!! J Using Bing for the currency exchangeFirst let&#39;s look at what happens when I open up Bing on my browser, and enter a search query like “1 US Dollar in Euros”:  As you can see, Bing correctly understood my query, and knew that I was looking for an exchange rate. Then MSN Money made the exchange and presented the result. Also, notice that the address displays as: http://www.bing.com/search?q=1&amp;#43;US&amp;#43;Dollar&amp;#43;in&amp;#43;Euros&amp;amp;go=&amp;amp;form=QBRE&amp;amp;qs=n&amp;amp;sk=&amp;amp;sc=1-20 OK, but how can we use this to feed the WP7 application? Call the Internet Explorer Developer Tools (just press F12 on your IE8&amp;#43;) and use the “Select element by click” option (Ctrl &amp;#43; B) to select the result on the page and see its HTML code. The result will look just like this:  Now we know how to build the Bing currency exchange search query (using “http://www.bing.com/search?q={VALUE}&amp;#43;{SOURCE_CURRENCY}&amp;#43;in&amp;#43;{DESTINATION_CURRENCY}&amp;amp;go=&amp;amp;form=QBRE&amp;amp;qs=n&amp;amp;sk=&amp;amp;sc=1-20”) and also how to find the results on the returned HTML (search the “&amp;lt;span class=&amp;quot;sc_bigLine&amp;quot;&amp;gt;RESULT&amp;lt;/span&amp;gt;”). The final task is selecting that span tag on the full HTML and then extracting the converted amount; for this task, I&#39;ll be using the following Regular Expression (using System.Text.RegularExpressions): C#  static Regex _resultRegex =   new Regex(&amp;quot;&amp;lt;span class=\&amp;quot;sc_bigLine\&amp;quot;&amp;gt;.*? = (?&amp;lt;value&amp;gt;[0-9.,]&amp;#43;).*?&amp;lt;/span&amp;gt;&amp;quot;);&amp;nbsp; This expression searches the HTML code for a span with class “sc_bigLine” and inner co</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Currency-Converter-for-Windows-Phone-7</link>
      <pubDate>Tue, 30 Nov 2010 23:51:54 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Currency-Converter-for-Windows-Phone-7</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/10098706_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/10098706_220.jpg" height="165" width="220"></media:thumbnail>      
      <dc:creator>Pedro Lamas</dc:creator>
      <itunes:author>Pedro Lamas</itunes:author>
      <slash:comments>8</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Currency-Converter-for-Windows-Phone-7/RSS</wfw:commentRss>
      <category>MVVM</category>
      <category>Silverlight</category>
      <category>Web Services</category>
      <category>XAML</category>
    </item>
  <item>
      <title>Ramp Up: Developer Introduction to Windows Server AppFabric</title>
      <description><![CDATA[ <p>Many business applications have a significant code base responsible for back end business processes and activities that are both hard to write and even more challenging to manage. With Web Services being the primary way to expose and consume business logic, building services, coordinating services and implementing the long running processes across these services needs to get easier. The combination of Windows Workflow Foundation in Microsoft .NET 4 together with Windows Server AppFabric provides a new way to create these business processes, to coordinate services and to expose these workflows as services themselves.<br><br>Dive into these 2 new,&nbsp;registration-free Ramp Up&nbsp;learning tracks and&nbsp;find out what's needed to build services and workflows and learn how to configure and manage these using Windows Server AppFabric.<br><br><a href="http://bit.ly/bMfusw">Developer Introduction to Windows Server AppFabric (Part 1): Hosting Services<br></a><a href="http://bit.ly/bxULTZ">Developer Introduction to Windows Server AppFabric (Part 2): Caching Services</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:501d05512f5042f596cb9e17011ecb71">]]></description>
      <comments>http://channel9.msdn.com/posts/Developer-Introduction-to-Windows-Server-AppFabric</comments>
      <itunes:summary> Many business applications have a significant code base responsible for back end business processes and activities that are both hard to write and even more challenging to manage. With Web Services being the primary way to expose and consume business logic, building services, coordinating services and implementing the long running processes across these services needs to get easier. The combination of Windows Workflow Foundation in Microsoft .NET 4 together with Windows Server AppFabric provides a new way to create these business processes, to coordinate services and to expose these workflows as services themselves.Dive into these 2 new,&amp;nbsp;registration-free Ramp Up&amp;nbsp;learning tracks and&amp;nbsp;find out what&#39;s needed to build services and workflows and learn how to configure and manage these using Windows Server AppFabric.Developer Introduction to Windows Server AppFabric (Part 1): Hosting ServicesDeveloper Introduction to Windows Server AppFabric (Part 2): Caching Services </itunes:summary>
      <link>http://channel9.msdn.com/posts/Developer-Introduction-to-Windows-Server-AppFabric</link>
      <pubDate>Fri, 22 Oct 2010 17:32:57 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Developer-Introduction-to-Windows-Server-AppFabric</guid>      
      <dc:creator>MSDN Online Media</dc:creator>
      <itunes:author>MSDN Online Media</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Developer-Introduction-to-Windows-Server-AppFabric/rss</wfw:commentRss>
      <category>.NET 4.0</category>
      <category>.NET Framework 4.0</category>
      <category>AppFabric</category>
      <category>Web Services</category>
      <category>Windows Workflow Foundation</category>
      <category>Windows Server AppFabric</category>
    </item>
  <item>
      <title>Apache Stonehenge new release: how to wire applications with Web Services standards</title>
      <description><![CDATA[ <p><a href="http://blogs.msdn.com/b/interoperability/archive/2009/01/15/apache-incubator-project-stonehenge-showcasing-web-services-interoperability.aspx">Launched in January 2009</a>, Stonehenge is designed to provide a public forum to test the interoperability of WS-* protocols on different technical stacks and to build sample applications that could provide best practices and coding guidelines for better interoperability.<br>Customers get working code on multiple platforms and vendors catch bugs and test interoperability issues in an open manner.<br><a href="http://blogs.msdn.com/b/interoperability/archive/2009/05/12/apache-stonehenge-interoperability-at-work.aspx">The first version “M1” of the Stock Trader sample application</a> showcased the main Web Services standards, including WS-Security.<br>Today, we are glad to announce the availability of Stonehenge “M2”, the second iteration, now including WS-Trust 1.4 and WS-FED 1.1 protocols for claims-based authentication scenarios. This allows the end-users’ to be authenticated through an independent Security Token Service (STS) that is trusted by the bank and to pass that token to the broker to process the transaction.</p><p>In this video, Kent Brown (Product Manager, Microsoft) and&nbsp;Kamaljit Bath (Principal Program Manager, Microsoft)&nbsp;introduce Stonehenge and present an actual demo of the M2 release.</p><p>You can download the M1 and M2 releases of Apache Stonehenge from <a href="http://www.apache.org/dist/incubator/stonehenge">http://www.apache.org/dist/incubator/stonehenge</a> and the documentation is up on the wiki: <a href="https://cwiki.apache.org/confluence/display/STONEHENGE/Index">https://cwiki.apache.org/confluence/display/STONEHENGE/Index</a></p><p>Additional links:</p><ul><li><a href="/projects/apache-stonehenge">Apache Stonehenge</a>&nbsp;project summary </li><li><a href="http://blogs.msdn.com/interoperability/archive/2009/01/15/apache-incubator-project-stonehenge-showcasing-web-services-interoperability.aspx" target="_blank">Blog: Stonehenge: showcasing Web Services interoperability </a></li><li><a href="http://blogs.msdn.com/interoperability/archive/2009/05/12/apache-stonehenge-interoperability-at-work.aspx" target="_blank">Blog: Apache Stonehenge, interoperability at work</a></li><li><a href="http://blogs.msdn.com/interoperability/archive/2009/06/04/sun-joins-microsoft-on-javaone-stage-in-support-of-apache-stonehenge-incubator-project.aspx" target="_blank">Sun Joins Microsoft on JavaOne Stage in support of Apache Stonehenge Incubator Project&nbsp;</a> </li><li><a href="http://bendewey.wordpress.com/2009/07/16/apache-stonehenge-interoperability-presentation-at-the-nyc-net-dev-user-group/">Blog: Apache Stonehenge Interoperability</a></li><li>Presentation at the NYC .NET Dev User Group </li><li><a href="http://blogs.msdn.com/interoperability/archive/2009/11/19/apache-stonehenge-demoed-at-pdc09.aspx">Blog: Apache Stonehenge demoed at PDC09</a></li></ul><p>&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:cff767876e32430f991a9dea00a295d8">]]></description>
      <comments>http://channel9.msdn.com/Blogs/Interoperability/Apache-Stonehenge-new-release-how-to-wire-applications-with-Web-Services-standards</comments>
      <itunes:summary> Launched in January 2009, Stonehenge is designed to provide a public forum to test the interoperability of WS-* protocols on different technical stacks and to build sample applications that could provide best practices and coding guidelines for better interoperability.Customers get working code on multiple platforms and vendors catch bugs and test interoperability issues in an open manner.The first version “M1” of the Stock Trader sample application showcased the main Web Services standards, including WS-Security.Today, we are glad to announce the availability of Stonehenge “M2”, the second iteration, now including WS-Trust 1.4 and WS-FED 1.1 protocols for claims-based authentication scenarios. This allows the end-users’ to be authenticated through an independent Security Token Service (STS) that is trusted by the bank and to pass that token to the broker to process the transaction. In this video, Kent Brown (Product Manager, Microsoft) and&amp;nbsp;Kamaljit Bath (Principal Program Manager, Microsoft)&amp;nbsp;introduce Stonehenge and present an actual demo of the M2 release. You can download the M1 and M2 releases of Apache Stonehenge from http://www.apache.org/dist/incubator/stonehenge and the documentation is up on the wiki: https://cwiki.apache.org/confluence/display/STONEHENGE/Index Additional links: Apache Stonehenge&amp;nbsp;project summary Blog: Stonehenge: showcasing Web Services interoperability Blog: Apache Stonehenge, interoperability at workSun Joins Microsoft on JavaOne Stage in support of Apache Stonehenge Incubator Project&amp;nbsp; Blog: Apache Stonehenge InteroperabilityPresentation at the NYC .NET Dev User Group Blog: Apache Stonehenge demoed at PDC09&amp;nbsp; </itunes:summary>
      <itunes:duration>555</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/Interoperability/Apache-Stonehenge-new-release-how-to-wire-applications-with-Web-Services-standards</link>
      <pubDate>Fri, 16 Jul 2010 01:07:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/Interoperability/Apache-Stonehenge-new-release-how-to-wire-applications-with-Web-Services-standards</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/561317_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/9f9711a5-c127-4eec-9094-944ab6a9aaf1.png" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7/1/3/1/6/5/StonehengeM2_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/3/1/6/5/StonehengeM2_2MB_ch9.wmv" expression="full" duration="555" fileSize="125135795" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/3/1/6/5/StonehengeM2_ch9.mp3" expression="full" duration="555" fileSize="4448994" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/3/1/6/5/StonehengeM2_ch9.mp4" expression="full" duration="555" fileSize="42460557" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/3/1/6/5/StonehengeM2_ch9.wma" expression="full" duration="555" fileSize="4510977" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/3/1/6/5/StonehengeM2_ch9.wmv" expression="full" duration="555" fileSize="57837303" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/1/3/1/6/5/StonehengeM2_ch9.wmv" length="57837303" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jean-Christophe Cimetiere</dc:creator>
      <itunes:author>Jean-Christophe Cimetiere</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/Interoperability/Apache-Stonehenge-new-release-how-to-wire-applications-with-Web-Services-standards/RSS</wfw:commentRss>
      <category>Interoperability</category>
      <category>Java</category>
      <category>PHP</category>
      <category>stonehenge</category>
      <category>Web Services</category>
    </item>
  <item>
      <title>WSDAPI - Ralf Beckers about Web Services on Devices for Windows Embedded Standard 2009</title>
      <description><![CDATA[
<p>Ralf Beckers is a software developer at the Microsoft Embedded Systems Development Center (MESDC) in Aachen, Germany.&nbsp; In this video, Ralf provides a short introduction to the MESDC and then dives into a discussion of the “Web Services on Devices” stack
 for Windows Embedded Standard 2009.</p>
<p>&nbsp;</p>
<p>“Web Services on Devices” API (WSDAPI) is Microsoft’s interoperable implementation of Device Profile for Web Services.&nbsp;WSDAPI can be used for easy SOAP based communications between devices (including those that are embedded) and clients. &nbsp;Because the DPWS
 is an open specification, compatibility with other implementations is ensured. &nbsp;Microsoft’s WSDAPI not only offers a complete set of APIs, it also features a code generation utility that enables developers to focus on core functionality of the device and not
 on the communication.</p>
<p>&nbsp;</p>
<p>Press release about MESDC: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a shape="rect" href="http://www.microsoft.com/presspass/press/2008/feb08/02-26MSEDCPR.mspx" shape="rect">
http://www.microsoft.com/presspass/press/2008/feb08/02-26MSEDCPR.mspx</a></p>
<p>More about WSDAPI on MSDN: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a shape="rect" href="http://msdn.microsoft.com/en-us/library/aa826001(VS.85).aspx" shape="rect">
http://msdn.microsoft.com/en-us/library/aa826001(VS.85).aspx</a></p>
<p>Dan Driscoll’s WDAPI Blog:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a shape="rect" href="http://blogs.msdn.com/dandris/" shape="rect">
http://blogs.msdn.com/dandris/</a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:5a9f75ff215b4d40a45c9deb00191167">]]></description>
      <comments>http://channel9.msdn.com/Blogs/kitano/WSDAPI-Ralf-Beckers-about-Web-Services-on-Devices</comments>
      <itunes:summary>
Ralf Beckers is a software developer at the Microsoft Embedded Systems Development Center (MESDC) in Aachen, Germany.&amp;nbsp; In this video, Ralf provides a short introduction to the MESDC and then dives into a discussion of the “Web Services on Devices” stack
 for Windows Embedded Standard 2009. 
&amp;nbsp; 
“Web Services on Devices” API (WSDAPI) is Microsoft’s interoperable implementation of Device Profile for Web Services.&amp;nbsp;WSDAPI can be used for easy SOAP based communications between devices (including those that are embedded) and clients. &amp;nbsp;Because the DPWS
 is an open specification, compatibility with other implementations is ensured. &amp;nbsp;Microsoft’s WSDAPI not only offers a complete set of APIs, it also features a code generation utility that enables developers to focus on core functionality of the device and not
 on the communication. 
&amp;nbsp; 
Press release about MESDC: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
http://www.microsoft.com/presspass/press/2008/feb08/02-26MSEDCPR.mspx 
More about WSDAPI on MSDN: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
http://msdn.microsoft.com/en-us/library/aa826001(VS.85).aspx 
Dan Driscoll’s WDAPI Blog:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
http://blogs.msdn.com/dandris/ 
</itunes:summary>
      <itunes:duration>433</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/kitano/WSDAPI-Ralf-Beckers-about-Web-Services-on-Devices</link>
      <pubDate>Mon, 26 Apr 2010 08:42:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/kitano/WSDAPI-Ralf-Beckers-about-Web-Services-on-Devices</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/538937_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/538937_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_2MB_ch9.wmv" expression="full" duration="433" fileSize="131128550" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_ch9.mp3" expression="full" duration="433" fileSize="3466193" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_ch9.mp4" expression="full" duration="433" fileSize="49299043" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_ch9.wma" expression="full" duration="433" fileSize="3513649" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_ch9.wmv" expression="full" duration="433" fileSize="73851595" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_Zune_ch9.wmv" expression="full" duration="433" fileSize="43691647" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/3/9/8/3/5/WSDAPI2010_ch9.wmv" length="73851595" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jan Schenk</dc:creator>
      <itunes:author>Jan Schenk</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/kitano/WSDAPI-Ralf-Beckers-about-Web-Services-on-Devices/RSS</wfw:commentRss>
      <category>Aachen</category>
      <category>Devices</category>
      <category>DPWS</category>
      <category>Embedded</category>
      <category>Embedded Systems Developer Center</category>
      <category>MESDC</category>
      <category>SOAP</category>
      <category>Web Services</category>
      <category>WSDAPI</category>
    </item>
  <item>
      <title>TweetCraft 2.0 source code posted!</title>
      <description><![CDATA[
<p>Just posted the updated source code to TweetCraft 2.0.&nbsp; Head over to <a title="http://tweetcraft.codeplex.com/SourceControl/list/changesets" href="http://tweetcraft.codeplex.com/SourceControl/list/changesets">
http://tweetcraft.codeplex.com/SourceControl/list/changesets</a> to check it out.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1dcfc8d7ae684f0eb2bf9e7600ca0f44">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/TweetCraft-20-source-code-posted</comments>
      <itunes:summary>
Just posted the updated source code to TweetCraft 2.0.&amp;nbsp; Head over to 
http://tweetcraft.codeplex.com/SourceControl/list/changesets to check it out. 
</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/TweetCraft-20-source-code-posted</link>
      <pubDate>Wed, 17 Feb 2010 17:16:49 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/TweetCraft-20-source-code-posted</guid>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/TweetCraft-20-source-code-posted/RSS</wfw:commentRss>
      <category>Gaming</category>
      <category>Web Services</category>
      <category>C4FNews</category>
      <category>LUA</category>
      <category>TweetCraft</category>
    </item>
  <item>
      <title>TweetCraft 2.0 released!</title>
      <description><![CDATA[
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9964773/WowTweetCraftUI_1.1_5B1_5D_2.jpg"><img title="WowTweetCraftUI_1.1[1]" border="0" alt="WowTweetCraftUI_1.1[1]" align="right" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9964773/WowTweetCraftUI_1.1_5B1_5D_thumb.jpg" width="179" height="240"></a>
 If you like twitter and World of Warcraft, check out the Coding4Fun project, <a href="http://tweetcraft.codeplex.com/">
TweetCraft</a>.&nbsp; </p>
<p>Version 2.0 brings some new features and bug fixes.</p>
<p><b>Bug fixes</b></p>
<ul>
<li>Fixed: Twitter connection and authentication issues </li><li>Removed: The Windows pop-up messages whenever Twitter's service goes down. You can now right-click on the TweetCraft icon to see what the current status is
</li><li>Removed: The use of LibDataBroker (LDB) for anything besides registering ourselves for other addons like ChocolateBar.
</li></ul>
<br>
<b>New Features</b>
<ul>
<li>In-game help, setup information and how to use TweetCraft </li><li>Auto-updates: The TweetCraft client will now check for and let you know when updates are available.
</li><li>Curse deployment: The TweetCraft add-on is also now distributed through the Curse client so that you can easily get changes to just the addon without having to install TweetCraft again. Note that you will still need to have the TweetCraft Client installed
 in addition to the TweetCraft Wow AddOn for TweetCraft to work properly. </li><li>Auto-screenshot Achievements: You can optionally have TweetCraft automatically take a screenshot of when you receive an achievement and have it posted using TwitPic.
</li></ul>
<p><a href="http://tweetcraft.codeplex.com/SourceControl/list/changesets">Full source code will be available on CodePlex shortly for TweetCraft</a> version 2.0 and if you want to know how this was build, check out the
<a href="http://www.amazon.com/Coding4fun-Programming-Projects-Wiimote-Warcraft/dp/0596520743/">
World of Warcraft RSS Feeder in the Coding4Fun book</a>.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:76d1c24c5bc344c0817e9e7600ca1aec">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/TweetCraft-20-released</comments>
      <itunes:summary>

 If you like twitter and World of Warcraft, check out the Coding4Fun project, 
TweetCraft.&amp;nbsp;  
Version 2.0 brings some new features and bug fixes. 
Bug fixes 

Fixed: Twitter connection and authentication issues Removed: The Windows pop-up messages whenever Twitter&#39;s service goes down. You can now right-click on the TweetCraft icon to see what the current status is
Removed: The use of LibDataBroker (LDB) for anything besides registering ourselves for other addons like ChocolateBar.


New Features

In-game help, setup information and how to use TweetCraft Auto-updates: The TweetCraft client will now check for and let you know when updates are available.
Curse deployment: The TweetCraft add-on is also now distributed through the Curse client so that you can easily get changes to just the addon without having to install TweetCraft again. Note that you will still need to have the TweetCraft Client installed
 in addition to the TweetCraft Wow AddOn for TweetCraft to work properly. Auto-screenshot Achievements: You can optionally have TweetCraft automatically take a screenshot of when you receive an achievement and have it posted using TwitPic.

Full source code will be available on CodePlex shortly for TweetCraft version 2.0 and if you want to know how this was build, check out the

World of Warcraft RSS Feeder in the Coding4Fun book. 
</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/TweetCraft-20-released</link>
      <pubDate>Tue, 16 Feb 2010 23:19:41 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/TweetCraft-20-released</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9964773_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9964773_220.jpg" height="165" width="220"></media:thumbnail>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/TweetCraft-20-released/RSS</wfw:commentRss>
      <category>Gaming</category>
      <category>Web Services</category>
      <category>C4FNews</category>
      <category>LUA</category>
      <category>TweetCraft</category>
    </item>
  <item>
      <title>Greg Leake: Stocktrader - Overview</title>
      <description><![CDATA[Greg Leake is very passionate about loosely-coupled service-oriented n-tiered application architecture. He has created an impressive service-oriented application called
<a shape="rect" href="http://msdn2.microsoft.com/en-us/netframework/bb499684.aspx" shape="rect">
StockTrader</a>. We will be highlighting his great work over the coming days with a four part mini-series on StockTrader. Most of the series will be comprised of demos of StockTrader in action and explanations of what's going on behind the scenes in this truly
 exemplary example of how to create a powerful client-server application that is based on a&nbsp;loosely-coupled service architecture. Further, the interoperability story here is excellent (one of the great advantages of standards-based protocols...).<br /><br />This is an architectural overview of Stocktrader. See Greg demo this incredible SOA application here:<br /><br /><a shape="rect" href="http://channel9.msdn.com/posts/Charles/Greg-Leake-Stocktrader-Demo-1-of-3/" target="_blank" shape="rect">Demo Part 1<br /></a><a shape="rect" href="http://channel9.msdn.com/posts/Charles/Greg-Leake-Stocktrader-Demo-2-of-3/" target="_blank" shape="rect">Demo Part 2<br /></a><a shape="rect" href="http://channel9.msdn.com/posts/Charles/Greg-Leake-Stocktrader-Demo-3-of-3/" target="_blank" shape="rect">Demo Part 3<br /></a><br />From the stocktrader site:<br /><br /><p>&quot;This application is an end-to-end sample application for .NET Enterprise Application Server technologies. It is a service-oriented application based on Windows Communication Foundation (.NET 3.0) and ASP.NET, and illustrates many of the .NET enterprise
 development technologies for building highly scalable, rich &quot;enterprise-connected&quot; applications. It is designed as a benchmark kit to illustrate alternative technologies within .NET and their relative performance.</p>
<p>The application offers full interoperability with J2EE and <a shape="rect" href="http://go.microsoft.com/?linkid=6895278" shape="rect">
IBM WebSphere's Trade 6.1</a> sample application. As such, the application offers an excellent opportunity for developers to learn about .NET and building interoperable, service-oriented applications.&quot;<br /><br />Tune in!</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:48d57e47abf44fd28bf29dea00cf6d36">]]></description>
      <comments>http://channel9.msdn.com/Blogs/Charles/Greg-Leake-Stocktrader-A-Loosely-coupled-and-Interoperable-NET-Enterprise-Services-Sample-Applic</comments>
      <itunes:summary>Greg Leake is very passionate about loosely-coupled service-oriented n-tiered application architecture. He has created an impressive service-oriented application called

StockTrader. We will be highlighting his great work over the coming days with a four part mini-series on StockTrader. Most of the series will be comprised of demos of StockTrader in action and explanations of what&#39;s going on behind the scenes in this truly
 exemplary example of how to create a powerful client-server application that is based on a&amp;nbsp;loosely-coupled service architecture. Further, the interoperability story here is excellent (one of the great advantages of standards-based protocols...).This is an architectural overview of Stocktrader. See Greg demo this incredible SOA application here:Demo Part 1Demo Part 2Demo Part 3From the stocktrader site:&amp;quot;This application is an end-to-end sample application for .NET Enterprise Application Server technologies. It is a service-oriented application based on Windows Communication Foundation (.NET 3.0) and ASP.NET, and illustrates many of the .NET enterprise
 development technologies for building highly scalable, rich &amp;quot;enterprise-connected&amp;quot; applications. It is designed as a benchmark kit to illustrate alternative technologies within .NET and their relative performance. 
The application offers full interoperability with J2EE and 
IBM WebSphere&#39;s Trade 6.1 sample application. As such, the application offers an excellent opportunity for developers to learn about .NET and building interoperable, service-oriented applications.&amp;quot;Tune in! 
</itunes:summary>
      <itunes:duration>2062</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/Charles/Greg-Leake-Stocktrader-A-Loosely-coupled-and-Interoperable-NET-Enterprise-Services-Sample-Applic</link>
      <pubDate>Tue, 09 Feb 2010 22:10:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/Charles/Greg-Leake-Stocktrader-A-Loosely-coupled-and-Interoperable-NET-Enterprise-Services-Sample-Applic</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/249465_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/249465_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_2MB_ch9.wmv" expression="full" duration="2062" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_ch9.mp3" expression="full" duration="2062" fileSize="1" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_ch9.mp4" expression="full" duration="2062" fileSize="1" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_ch9.wma" expression="full" duration="2062" fileSize="1" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_ch9.wmv" expression="full" duration="2062" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_Zune_ch9.wmv" expression="full" duration="2062" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://wm.microsoft.com/ms/evnet/GregLeake_StockTrader_SS_s_ch9.wmv" expression="full" duration="2062" fileSize="188" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/5/6/4/9/4/2/GregLeakeStockTraderOverview_ch9.wmv" length="0" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>13</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/Charles/Greg-Leake-Stocktrader-A-Loosely-coupled-and-Interoperable-NET-Enterprise-Services-Sample-Applic/RSS</wfw:commentRss>
      <category>Enterprise Library</category>
      <category>SaaS</category>
      <category>SQL Server</category>
      <category>WCF</category>
      <category>Web Services</category>
      <category>Windows Server</category>
      <category>WPF</category>
    </item>
  <item>
      <title>Greg Leake: Stocktrader Demo, 3 of 3</title>
      <description><![CDATA[&#65279;Greg Leake is very passionate about loosely-coupled service-oriented n-tiered application architecture. He has created an impressive service-oriented application called
<a shape="rect" href="http://msdn2.microsoft.com/en-us/netframework/bb499684.aspx" shape="rect">
<span>StockTrader</span></a>. We will be highlighting his great work over the coming days with a four part mini-series on StockTrader. Most of the series will be comprised of demos of StockTrader in action and explanations of what's going on behind the scenes
 in this truly exemplary example of how to create a powerful client-server application that is based on a&nbsp;loosely-coupled service architecture. Further, the interoperability story here is excellent (one of the great advantages of standards-based protocols...).<br /><br /><strong>This is Part 4:&nbsp;Continuation of the demo&nbsp;of StockTrader in action shoing interoperability between .NET and WebSphere, looking at performance and clustering, and discussion of&nbsp;architecture/implementation...<br /></strong><br />See part 1, introduction and deep architectural overview, <a shape="rect" href="/Showpost.aspx?postid=335684" shape="rect">
<span>here</span></a>.<br /><br />From the stocktrader site:<br /><br /><p>&quot;This application is an end-to-end sample application for .NET Enterprise Application Server technologies. It is a service-oriented application based on Windows Communication Foundation (.NET 3.0) and ASP.NET, and illustrates many of the .NET enterprise
 development technologies for building highly scalable, rich &quot;enterprise-connected&quot; applications. It is designed as a benchmark kit to illustrate alternative technologies within .NET and their relative performance.</p>
<p>The application offers full interoperability with J2EE and <a shape="rect" href="http://go.microsoft.com/?linkid=6895278" shape="rect">
<span>IBM WebSphere's Trade 6.1</span></a> sample application. As such, the application offers an excellent opportunity for developers to learn about .NET and building interoperable, service-oriented applications.&quot;<br /><br />Tune in!</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:91729df5bf5542a5a10e9dea00cf52dd">]]></description>
      <comments>http://channel9.msdn.com/Blogs/Charles/Greg-Leake-Stocktrader-Demo-3-of-3</comments>
      <itunes:summary>&amp;#65279;Greg Leake is very passionate about loosely-coupled service-oriented n-tiered application architecture. He has created an impressive service-oriented application called

StockTrader. We will be highlighting his great work over the coming days with a four part mini-series on StockTrader. Most of the series will be comprised of demos of StockTrader in action and explanations of what&#39;s going on behind the scenes
 in this truly exemplary example of how to create a powerful client-server application that is based on a&amp;nbsp;loosely-coupled service architecture. Further, the interoperability story here is excellent (one of the great advantages of standards-based protocols...).This is Part 4:&amp;nbsp;Continuation of the demo&amp;nbsp;of StockTrader in action shoing interoperability between .NET and WebSphere, looking at performance and clustering, and discussion of&amp;nbsp;architecture/implementation...See part 1, introduction and deep architectural overview, 
here.From the stocktrader site:&amp;quot;This application is an end-to-end sample application for .NET Enterprise Application Server technologies. It is a service-oriented application based on Windows Communication Foundation (.NET 3.0) and ASP.NET, and illustrates many of the .NET enterprise
 development technologies for building highly scalable, rich &amp;quot;enterprise-connected&amp;quot; applications. It is designed as a benchmark kit to illustrate alternative technologies within .NET and their relative performance. 
The application offers full interoperability with J2EE and 
IBM WebSphere&#39;s Trade 6.1 sample application. As such, the application offers an excellent opportunity for developers to learn about .NET and building interoperable, service-oriented applications.&amp;quot;Tune in! 
</itunes:summary>
      <itunes:duration>567</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/Charles/Greg-Leake-Stocktrader-Demo-3-of-3</link>
      <pubDate>Tue, 09 Feb 2010 19:06:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/Charles/Greg-Leake-Stocktrader-Demo-3-of-3</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/249481_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/249481_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_2MB_ch9.wmv" expression="full" duration="567" fileSize="177577341" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_ch9.mp3" expression="full" duration="567" fileSize="4537698" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_ch9.mp4" expression="full" duration="567" fileSize="100329045" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_ch9.wma" expression="full" duration="567" fileSize="4598087" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_ch9.wmv" expression="full" duration="567" fileSize="123885451" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_Zune_ch9.wmv" expression="full" duration="567" fileSize="79165503" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://wm.microsoft.com/ms/evnet/GregLeake_Demo3_s_ch9.wmv" expression="full" duration="567" fileSize="170" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/1/8/4/9/4/2/GregLeakeStockTraderLabDemoP3_ch9.wmv" length="123885451" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/Charles/Greg-Leake-Stocktrader-Demo-3-of-3/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>SaaS</category>
      <category>SQL Server</category>
      <category>StockTrader</category>
      <category>Web Services</category>
      <category>Windows Server</category>
    </item>
  <item>
      <title>Fabrikam Jets - Integrating Codename &quot;Dallas&quot; with AppFabric Access Control</title>
      <description><![CDATA[This screencast shows how&nbsp;<a shape="rect" href="http://msdn.microsoft.com/en-us/azure/netservices.aspx" title="Read about AppFabric Access Control on MSDN." class="externalLink" shape="rect">AppFabric Access Control</a> (AC) can be used to provide identity
 federation, trust delegation, service authorization and integration with&nbsp;<a shape="rect" href="http://msdn.microsoft.com/en-us/library/bb897402.aspx" title="Read about Active Directory Federation Services on MSDN." class="externalLink" shape="rect">Active
 Directory Federation Services</a> (ADFS), to control access to services based on
<a shape="rect" href="http://msdn.microsoft.com/en-us/azure/cc994380.aspx" title="Read about Windows Azure on MSDN." class="externalLink" shape="rect">
Windows Azure</a>. <br>
<br>
In the demo, Fabrikam Jets uses the <a shape="rect" href="https://www.sqlazureservices.com" title="Explore the portal for Microsoft Codename &quot;Dallas&quot;" class="externalLink" shape="rect">
Dallas Portal</a>, AC and ADFS to grant employees of Contoso Marketing access to <a shape="rect" href="http://www.microsoft.com/windowsazure/dallas/" title="Read about Microsoft Codename &quot;Dallas&quot;." class="externalLink" shape="rect">
Microsoft Codename &quot;Dallas&quot;</a> at Fabrikam's expense, using Windows authentication, without exposing Fabrikam's Dallas account keys. It also shows how Fabrikam can revoke the privilege later.<br>
<br>
The source code for this example&nbsp;is now&nbsp;available soon on <a shape="rect" href="http://code.msdn.microsoft.com/dallasacs" title="Build and run the example used in this demo." shape="rect">
this MSDN Code Gallery page</a>.<br>
<br>
<i>Note: The example has been updated to work with the V1 version of AppFabric Access Control. There were two changes from the CTP version to V1 that made the update necessary: 1) V1 uses version 0.9 of the WRAP protocol, instead of version 0.8, and 2) the
 issuer name generated by V1 is the base URI of the STS endpoint for the service namespace, instead of the full URI.
<i>The screen cast has not yet been updated, and still shows the user providing the full URI of the STS endpoint as the key description, rather than the base URI. In all other respects, however, it remains accurate.</i></i>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:6c050aa03b3d48f9982e9deb0035cc26">]]></description>
      <comments>http://channel9.msdn.com/Blogs/JackGr/Fabrikam-Jets-Integrating-Codename-Dallas-with-AppFabric-Access-Control</comments>
      <itunes:summary>This screencast shows how&amp;nbsp;AppFabric Access Control (AC) can be used to provide identity
 federation, trust delegation, service authorization and integration with&amp;nbsp;Active
 Directory Federation Services (ADFS), to control access to services based on

Windows Azure. 

In the demo, Fabrikam Jets uses the 
Dallas Portal, AC and ADFS to grant employees of Contoso Marketing access to 
Microsoft Codename &amp;quot;Dallas&amp;quot; at Fabrikam&#39;s expense, using Windows authentication, without exposing Fabrikam&#39;s Dallas account keys. It also shows how Fabrikam can revoke the privilege later.

The source code for this example&amp;nbsp;is now&amp;nbsp;available soon on 
this MSDN Code Gallery page.

Note: The example has been updated to work with the V1 version of AppFabric Access Control. There were two changes from the CTP version to V1 that made the update necessary: 1) V1 uses version 0.9 of the WRAP protocol, instead of version 0.8, and 2) the
 issuer name generated by V1 is the base URI of the STS endpoint for the service namespace, instead of the full URI.
The screen cast has not yet been updated, and still shows the user providing the full URI of the STS endpoint as the key description, rather than the base URI. In all other respects, however, it remains accurate.
</itunes:summary>
      <itunes:duration>364</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/JackGr/Fabrikam-Jets-Integrating-Codename-Dallas-with-AppFabric-Access-Control</link>
      <pubDate>Thu, 03 Dec 2009 21:13:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/JackGr/Fabrikam-Jets-Integrating-Codename-Dallas-with-AppFabric-Access-Control</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/510665_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/510665_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_2MB_ch9.wmv" expression="full" duration="364" fileSize="19347219" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_ch9.mp3" expression="full" duration="364" fileSize="2914238" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_ch9.mp4" expression="full" duration="364" fileSize="20728748" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_ch9.wma" expression="full" duration="364" fileSize="2954905" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_ch9.wmv" expression="full" duration="364" fileSize="23466629" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_Zune_ch9.wmv" expression="full" duration="364" fileSize="23431667" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/5/6/6/0/1/5/FabrikamJetsIntegratingCodenameDallaswithAppFabricAccessControl_ch9.wmv" length="23466629" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jack Greenfield</dc:creator>
      <itunes:author>Jack Greenfield</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/JackGr/Fabrikam-Jets-Integrating-Codename-Dallas-with-AppFabric-Access-Control/RSS</wfw:commentRss>
      <category>.NET Framework 3.5</category>
      <category>.Net Services</category>
      <category>Access</category>
      <category>Access Control</category>
      <category>Active Directory</category>
      <category>ActiveDirectory</category>
      <category>AppFabric</category>
      <category>ASP.NET</category>
      <category>Authentication</category>
      <category>Azure</category>
      <category>C#</category>
      <category>claims</category>
      <category>Dallas</category>
      <category>Federated Security</category>
      <category>Header</category>
      <category>HTTP</category>
      <category>Identity</category>
      <category>REST</category>
      <category>SAML</category>
      <category>Sample</category>
      <category>Samples</category>
      <category>Security</category>
      <category>SQL Azure</category>
      <category>SWT</category>
      <category>Token Authentication</category>
      <category>Video</category>
      <category>Videos</category>
      <category>Visual Studio 2008</category>
      <category>Web Services</category>
      <category>WIF</category>
      <category>Windows Forms</category>
      <category>WPF</category>
      <category>WRAP</category>
      <category>WS-Federation</category>
      <category>WS-Trust</category>
    </item>
  <item>
      <title>Apache Stonehenge demoed at PDC09</title>
      <description><![CDATA[
<p>A couple weeks ago, <a shape="rect" href="http://blogs.msdn.com/interoperability/archive/2009/11/07/project-apache-stonehenge-progress-and-roadmap-discussed-at-apachecon-for-interoperability-with-Microsoft-Web-Services.aspx" shape="rect">
Microsoft was at ApacheCon</a>. We reported the progress made on the Stonehenge project and presented the roadmap.&nbsp;
</p>
<p>The goal of Stonehenge is to provide a public forum to test the interoperability of WS-* protocols on different vendor stacks and to build sample applications that could provide best practices and coding guidelines for better interoperability. The main sample
 application, StockTrader has been implemented on .NET (by Microsoft), PHP (by WSO2), WSAS JAVA stack (by WSO2), Metro (by SUN Microsystems), Spring (by SpringSource). The latest version of StockTrader uses the WS-Security and WS-Trust protocols for claims-based
 authentication scenarios. This allows the end-users to be authenticated through an independent Security Token Service (STS) that is trusted by the bank and to pass that token to the broker to process the transaction.</p>
<p>This week at PDC09, we were demoing the project. I went to see Kent Brown, product manager for WCF and asked him to give us an update and show a demo of the different StockTrader applications working together.
</p>
<p>Watch the video till the end, Kent unveils the mystery on why the project was called Stonehenge!</p>
<p>Additional links:</p>
<ul>
<li>
<div>Project page: <a shape="rect" href="http://www.interoperabilitybridges.com/projects/apache-stonehenge.aspx" shape="rect">
Apache Stonehenge</a></div>
</li><li>
<div>Interoperability Team Blog: <a shape="rect" href="http://blogs.msdn.com/interoperability/" shape="rect">
http://blogs.msdn.com/interoperability/</a> </div>
</li></ul>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:aad88ecbb7744adaa4f19deb00151c55">]]></description>
      <comments>http://channel9.msdn.com/Blogs/jccim/Apache-Stonehenge-demoed-at-PDC09</comments>
      <itunes:summary>
A couple weeks ago, 
Microsoft was at ApacheCon. We reported the progress made on the Stonehenge project and presented the roadmap.&amp;nbsp;
 
The goal of Stonehenge is to provide a public forum to test the interoperability of WS-* protocols on different vendor stacks and to build sample applications that could provide best practices and coding guidelines for better interoperability. The main sample
 application, StockTrader has been implemented on .NET (by Microsoft), PHP (by WSO2), WSAS JAVA stack (by WSO2), Metro (by SUN Microsystems), Spring (by SpringSource). The latest version of StockTrader uses the WS-Security and WS-Trust protocols for claims-based
 authentication scenarios. This allows the end-users to be authenticated through an independent Security Token Service (STS) that is trusted by the bank and to pass that token to the broker to process the transaction. 
This week at PDC09, we were demoing the project. I went to see Kent Brown, product manager for WCF and asked him to give us an update and show a demo of the different StockTrader applications working together.
 
Watch the video till the end, Kent unveils the mystery on why the project was called Stonehenge! 
Additional links: 


Project page: 
Apache Stonehenge

Interoperability Team Blog: 
http://blogs.msdn.com/interoperability/ 

</itunes:summary>
      <itunes:duration>419</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/jccim/Apache-Stonehenge-demoed-at-PDC09</link>
      <pubDate>Thu, 19 Nov 2009 23:47:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/jccim/Apache-Stonehenge-demoed-at-PDC09</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/507134_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/507134_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_2MB_ch9.wmv" expression="full" duration="419" fileSize="84386566" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_ch9.mp3" expression="full" duration="419" fileSize="3355923" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_ch9.mp4" expression="full" duration="419" fileSize="74056409" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_ch9.wma" expression="full" duration="419" fileSize="3402501" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_ch9.wmv" expression="full" duration="419" fileSize="92571399" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_Zune_ch9.wmv" expression="full" duration="419" fileSize="59291451" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/4/3/1/7/0/5/ApacheStonehenge_ch9.wmv" length="92571399" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jean-Christophe Cimetiere</dc:creator>
      <itunes:author>Jean-Christophe Cimetiere</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/jccim/Apache-Stonehenge-demoed-at-PDC09/RSS</wfw:commentRss>
      <category>Interoperability</category>
      <category>Java</category>
      <category>PDC09</category>
      <category>PDC 2009</category>
      <category>PHP</category>
      <category>stonehenge</category>
      <category>Web Services</category>
    </item>
  <item>
      <title>NetFlix API</title>
      <description><![CDATA[
<p><a href="http://www.netdave.com"><img title="netflix" border="0" alt="netflix" align="right" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9893401/netflix.png" width="184" height="240"> Dave Cook</a> has created an interesting
 write up on the Netflix API.&nbsp; Netflix has a web service API model so you do need an internet connection to leverage this.</p>
<p>He currently has 4 articles from the simple to the complex.</p>
<ul>
<li><a href="http://www.codeproject.com/KB/IP/NetflixAPIBasics.aspx">API Basics</a>
</li><li><a href="http://www.codeproject.com/KB/IP/NetflixAPI_II.aspx">Accessing the Title Catalog</a>
</li><li><a href="http://www.codeproject.com/KB/IP/NetflixAccountExplorer.aspx">Accessing Subscriber Account Information</a>
</li><li><a href="http://www.codeproject.com/KB/IP/NetflixQueueManager.aspx">Managing Account Information</a>
</li></ul>
<p>If you are interested in doing a netflix project, you have to sign up for a developer account at the
<a title="Netflix Developer Network home page" href="http://developer.netflix.com/">
Netflix Developer Network home page</a>.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:b21050e7fc2740ff97749e7600cb6852">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/NetFlix-API</comments>
      <itunes:summary>
 Dave Cook has created an interesting
 write up on the Netflix API.&amp;nbsp; Netflix has a web service API model so you do need an internet connection to leverage this. 
He currently has 4 articles from the simple to the complex. 

API Basics
Accessing the Title Catalog
Accessing Subscriber Account Information
Managing Account Information

If you are interested in doing a netflix project, you have to sign up for a developer account at the

Netflix Developer Network home page. 
</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/NetFlix-API</link>
      <pubDate>Wed, 09 Sep 2009 21:00:46 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/NetFlix-API</guid>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/NetFlix-API/RSS</wfw:commentRss>
      <category>Media</category>
      <category>Web Services</category>
      <category>C4FNews</category>
    </item>
  <item>
      <title>Native Web Services, Part 2 - Build a WWSAPI Web Service</title>
      <description><![CDATA[
<p>With the Windows Web Services API (WWSAPI), you can connect your C/C&#43;&#43; client applications with web services. You can also create C/C&#43;&#43; server-side web service end-points. WWSAPI is new with Windows 7 (client) and Windows Server 2008 R2 (server). WWSAPI
 is also back-ported to all formally supported versions of Windows (client and server). The WWSAPI runtime library (WebServices.dll) is a native-code implementation of WS-* family of protocols for SOAP based web services.
</p>
<p>WWSAPI enables several solution scenarios and benefits including:</p>
<p>1. Implement web services in native C/C&#43;&#43; code on both Windows client and server. C/C&#43;&#43; application developers have often requested this platform technology capability but were previously forced to write their own or interface their native-code solutions
 with managed-code wrappers. </p>
<p>2. Achieve interoperability with web services implemented using Windows Communication Foundation (WCF), ASP.NET XML Web Services, and even services implemented using non-Microsoft implementations of WS-* libraries.</p>
<p>3. Construct web services with minimal service startup time and minimal process working-set dependencies.</p>
<p>4. Use web services implementations in resource-constrained deployment environments.
</p>
<p>5. Avoid native-management interop scenarios with potentially costly marshalling side-effects.</p>
<p>This is part&nbsp;2 of a 2 episode series and focuses upon using WWSAPI to construct a web service. The example illustrates adding a web-service interface to a native (presumably legacy) application.&nbsp; The&nbsp;demonstration provides a comparison&nbsp;between&nbsp;using&nbsp;a managed&nbsp;(WCF)
 interface and a native (WWSAPI) interface&nbsp;involving sorting algorthms with differing interop&nbsp;costs.</p>
<p>Find sample code and additional technical details at <a shape="rect" href="http://code.msdn.microsoft.com/wwsapi" title="Code Gallery" target="_blank" shape="rect">
MSDN Code Gallery</a>.<br>
<br>
See part&nbsp;1 of this series <a shape="rect" href="http://channel9.msdn.com/tags/WWSAPI" title="CH9 WWSAPI" target="_self" shape="rect">
here</a>.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:6bdea24a1441412a803a9deb000b4c21">]]></description>
      <comments>http://channel9.msdn.com/Blogs/philpenn/WWSAPI-SERVICE</comments>
      <itunes:summary>
With the Windows Web Services API (WWSAPI), you can connect your C/C&amp;#43;&amp;#43; client applications with web services. You can also create C/C&amp;#43;&amp;#43; server-side web service end-points. WWSAPI is new with Windows 7 (client) and Windows Server 2008 R2 (server). WWSAPI
 is also back-ported to all formally supported versions of Windows (client and server). The WWSAPI runtime library (WebServices.dll) is a native-code implementation of WS-* family of protocols for SOAP based web services.
 
WWSAPI enables several solution scenarios and benefits including: 
1. Implement web services in native C/C&amp;#43;&amp;#43; code on both Windows client and server. C/C&amp;#43;&amp;#43; application developers have often requested this platform technology capability but were previously forced to write their own or interface their native-code solutions
 with managed-code wrappers.  
2. Achieve interoperability with web services implemented using Windows Communication Foundation (WCF), ASP.NET XML Web Services, and even services implemented using non-Microsoft implementations of WS-* libraries. 
3. Construct web services with minimal service startup time and minimal process working-set dependencies. 
4. Use web services implementations in resource-constrained deployment environments.
 
5. Avoid native-management interop scenarios with potentially costly marshalling side-effects. 
This is part&amp;nbsp;2 of a 2 episode series and focuses upon using WWSAPI to construct a web service. The example illustrates adding a web-service interface to a native (presumably legacy) application.&amp;nbsp; The&amp;nbsp;demonstration provides a comparison&amp;nbsp;between&amp;nbsp;using&amp;nbsp;a managed&amp;nbsp;(WCF)
 interface and a native (WWSAPI) interface&amp;nbsp;involving sorting algorthms with differing interop&amp;nbsp;costs. 
Find sample code and additional technical details at 
MSDN Code Gallery.

See part&amp;nbsp;1 of this series 
here. 
</itunes:summary>
      <itunes:duration>873</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/philpenn/WWSAPI-SERVICE</link>
      <pubDate>Thu, 23 Jul 2009 02:12:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/philpenn/WWSAPI-SERVICE</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/477508_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/477508_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/28c130ef-71cd-4ea4-a80b-3d5ee8501866.jpg" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/2c53484c-d17c-479f-8ca7-2d47390912f3.jpg" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/0/5/7/7/4/WWSAPISERVICE_2MB_ch9.wmv" expression="full" duration="873" fileSize="22516867" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/0/5/7/7/4/WWSAPISERVICE_ch9.mp3" expression="full" duration="873" fileSize="6992013" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/0/5/7/7/4/WWSAPISERVICE_ch9.mp4" expression="full" duration="873" fileSize="29646366" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/0/5/7/7/4/WWSAPISERVICE_ch9.wma" expression="full" duration="873" fileSize="14156833" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/0/5/7/7/4/WWSAPISERVICE_Zune_ch9.wmv" expression="full" duration="873" fileSize="28602661" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/0/5/7/7/4/WWSAPISERVICE_Zune_ch9.wmv" length="28602661" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Phil Pennington</dc:creator>
      <itunes:author>Phil Pennington</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/philpenn/WWSAPI-SERVICE/RSS</wfw:commentRss>
      <category>w2k8r2</category>
      <category>Web Services</category>
      <category>Windows 7</category>
      <category>Windows Server 2008 R2</category>
      <category>WWSAPI</category>
    </item>
  <item>
      <title>Native Web Services, Part 1 - Build a WWSAPI Client</title>
      <description><![CDATA[
<p>With the Windows Web Services API (WWSAPI), you can connect your C/C&#43;&#43; client applications with web services. You can also create C/C&#43;&#43; server-side web service end-points. WWSAPI is new with Windows 7 (client) and Windows Server 2008 R2 (server). WWSAPI
 is also back-ported to all formally supported versions of Windows (client and server). The WWSAPI runtime library (WebServices.dll) is a native-code implementation of WS-* family of protocols for SOAP based web services.
</p>
<p>WWSAPI enables several solution scenarios and benefits including:</p>
<p>1. Implement web services in native C/C&#43;&#43; code on both Windows client and server. C/C&#43;&#43; application developers have often requested this platform technology capability but were previously forced to write their own or interface their native-code solutions
 with managed-code wrappers. </p>
<p>2. Achieve interoperability with web services implemented using Windows Communication Foundation (WCF), ASP.NET XML Web Services, and even services implemented using non-Microsoft implementations of WS-* libraries.</p>
<p>3. Construct web services with minimal service startup time and minimal process working-set dependencies.</p>
<p>4. Use web services implementations in resource-constrained deployment environments.
</p>
<p>5. Avoid native-management interop scenarios with potentially costly marshalling side-effects.</p>
<p>This is part 1 of a 2 episode series and focuses upon using WWSAPI from a client application. The example illustrates a client application using WWSAPI to interact with a &quot;Sort Service&quot;.
</p>
<p>Find sample code and additional technical details at <a shape="rect" href="http://code.msdn.microsoft.com/wwsapi" title="Code Gallery" target="_blank" shape="rect">
MSDN Code Gallery</a>.<br>
<br>
See part 2 of this series <a shape="rect" href="http://channel9.msdn.com/tags/WWSAPI" title="CH9 WWSAPI" target="_self" shape="rect">
here</a>.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1a6d1b04149a439dbfb29deb000b51ab">]]></description>
      <comments>http://channel9.msdn.com/Blogs/philpenn/WWSAPIclient</comments>
      <itunes:summary>
With the Windows Web Services API (WWSAPI), you can connect your C/C&amp;#43;&amp;#43; client applications with web services. You can also create C/C&amp;#43;&amp;#43; server-side web service end-points. WWSAPI is new with Windows 7 (client) and Windows Server 2008 R2 (server). WWSAPI
 is also back-ported to all formally supported versions of Windows (client and server). The WWSAPI runtime library (WebServices.dll) is a native-code implementation of WS-* family of protocols for SOAP based web services.
 
WWSAPI enables several solution scenarios and benefits including: 
1. Implement web services in native C/C&amp;#43;&amp;#43; code on both Windows client and server. C/C&amp;#43;&amp;#43; application developers have often requested this platform technology capability but were previously forced to write their own or interface their native-code solutions
 with managed-code wrappers.  
2. Achieve interoperability with web services implemented using Windows Communication Foundation (WCF), ASP.NET XML Web Services, and even services implemented using non-Microsoft implementations of WS-* libraries. 
3. Construct web services with minimal service startup time and minimal process working-set dependencies. 
4. Use web services implementations in resource-constrained deployment environments.
 
5. Avoid native-management interop scenarios with potentially costly marshalling side-effects. 
This is part 1 of a 2 episode series and focuses upon using WWSAPI from a client application. The example illustrates a client application using WWSAPI to interact with a &amp;quot;Sort Service&amp;quot;.
 
Find sample code and additional technical details at 
MSDN Code Gallery.

See part 2 of this series 
here. 
</itunes:summary>
      <itunes:duration>1347</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/philpenn/WWSAPIclient</link>
      <pubDate>Thu, 23 Jul 2009 02:11:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/philpenn/WWSAPIclient</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/477506_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/477506_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/0e261db8-3fc0-4599-98ee-7fe5965beeaa.jpg" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/06c9b783-1bdf-4d3b-8fb6-be64f86db110.jpg" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/5/7/7/4/WWSAPICLIENT_2MB_ch9.wmv" expression="full" duration="1347" fileSize="35524375" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/5/7/7/4/WWSAPICLIENT_ch9.mp3" expression="full" duration="1347" fileSize="10778504" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/5/7/7/4/WWSAPICLIENT_ch9.mp4" expression="full" duration="1347" fileSize="45652234" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/5/7/7/4/WWSAPICLIENT_ch9.wma" expression="full" duration="1347" fileSize="21808021" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/5/7/7/4/WWSAPICLIENT_Zune_ch9.wmv" expression="full" duration="1347" fileSize="44573505" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/5/7/7/4/WWSAPICLIENT_Zune_ch9.wmv" length="44573505" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Phil Pennington</dc:creator>
      <itunes:author>Phil Pennington</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/philpenn/WWSAPIclient/RSS</wfw:commentRss>
      <category>w2k8r2</category>
      <category>Web Services</category>
      <category>Windows 7</category>
      <category>Windows Server 2008 R2</category>
      <category>WWSAPI</category>
    </item>
  <item>
      <title>ARCast.TV - Implementing a Hybrid Architecture Based on SOA and ROA in the Enterprise</title>
      <description><![CDATA[In this interview, <a shape="rect" href="http://tinyurl.com/kevinisrael" target="_blank" shape="rect">
Kevin Israel</a>, Visual Studio Team System <a shape="rect" href="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/default.aspx" shape="rect">
MVP</a>, shares with <a shape="rect" href="http://blogs.msdn.com/zxue/" shape="rect">
Zhiming Xue </a>his thoughts on implementation of a hybrid architecture based on SOA and ROA in the enterprise space. Kevin explains what Resource Oriented Architecture (ROA) is and, through examples, highlights its key differences from Service Oriented Architecture
 (SOA). He argues that while the two architectural patterns share the same common problem domains such as versioning and application manageability, they work differently in practice. ROA services or RESTful services may be used to bring resources to the user,
 whereas SOA services are typically created to process business logic. Therefore, the crux of the hybrid architecture implementation is to use them together and use them for their intended purposes. Kevin believes that as cloud computing and enterprise meshup
 applications start to emerge, more applications based on the hybrid architecture of SOA and ROA may be seen in the enterprise.
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:7b9f95e8023b4e179ad29dea00c0d4f6">]]></description>
      <comments>http://channel9.msdn.com/Shows/ARCast.TV/ARCastTV-Implementing-a-Hybrid-Architecture-Based-on-SOA-and-ROA-in-the-Enterprise</comments>
      <itunes:summary>In this interview, 
Kevin Israel, Visual Studio Team System 
MVP, shares with 
Zhiming Xue his thoughts on implementation of a hybrid architecture based on SOA and ROA in the enterprise space. Kevin explains what Resource Oriented Architecture (ROA) is and, through examples, highlights its key differences from Service Oriented Architecture
 (SOA). He argues that while the two architectural patterns share the same common problem domains such as versioning and application manageability, they work differently in practice. ROA services or RESTful services may be used to bring resources to the user,
 whereas SOA services are typically created to process business logic. Therefore, the crux of the hybrid architecture implementation is to use them together and use them for their intended purposes. Kevin believes that as cloud computing and enterprise meshup
 applications start to emerge, more applications based on the hybrid architecture of SOA and ROA may be seen in the enterprise.
</itunes:summary>
      <itunes:duration>991</itunes:duration>
      <link>http://channel9.msdn.com/Shows/ARCast.TV/ARCastTV-Implementing-a-Hybrid-Architecture-Based-on-SOA-and-ROA-in-the-Enterprise</link>
      <pubDate>Mon, 06 Jul 2009 19:56:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/ARCast.TV/ARCastTV-Implementing-a-Hybrid-Architecture-Based-on-SOA-and-ROA-in-the-Enterprise</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/469900_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/469900_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_large_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_small_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_2MB_ch9.wmv" expression="full" duration="991" fileSize="309852000" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_ch9.mp3" expression="full" duration="991" fileSize="7932688" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_ch9.mp4" expression="full" duration="991" fileSize="97477528" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_ch9.wma" expression="full" duration="991" fileSize="16040341" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_ch9.wmv" expression="full" duration="991" fileSize="60043389" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_Zune_ch9.wmv" expression="full" duration="991" fileSize="140507369" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_s_ch9.wmv" expression="full" duration="991" fileSize="255" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/0/9/9/6/4/ARCastImplementingAHybridArchitecture_ch9.wmv" length="60043389" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Bob Familiar</dc:creator>
      <itunes:author>Bob Familiar</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/ARCast.TV/ARCastTV-Implementing-a-Hybrid-Architecture-Based-on-SOA-and-ROA-in-the-Enterprise/RSS</wfw:commentRss>
      <category>ARCast</category>
      <category>Architects</category>
      <category>Architecture</category>
      <category>Patterns</category>
      <category>Resource Oriented Architecture</category>
      <category>REST</category>
      <category>RESTful Services</category>
      <category>ROA</category>
      <category>Service Oriented Architecture </category>
      <category>Web Services</category>
    </item>
  <item>
      <title>TweetCraft - An in-game Twitter client for World of Warcraft</title>
      <description><![CDATA[<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/lfUDUAtG7Rs?fs=1&amp;hl=en_US&amp;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lfUDUAtG7Rs?fs=1&amp;hl=en_US&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>
<p><a href="http://ch9.ms/tweetcraft">TweetCraft</a> is a World of Warcraft add-on that enables you to send and receive tweets using
<a href="http://twitter.com/">Twitter</a> without leaving the game, automatically upload and post screenshots using
<a href="http://twitpic.com/">TwitPic</a> and automatically tweet certain in-game events such as achievements and moving around in the world of Azeroth. TweetCraft customizes your World of Warcraft user interface by adding its own frame similar to the built-in
 ones (such as the Quest Log) and provides easy access to it through a button near the minimap, slash commands or your favorite launcher (e.g. ChocolateBar).</p>

<h3>How TweetCraft works</h3>
<p>Let’s quickly walk through the different things that TweetCraft does to bring Twitter into World of Warcraft.</p>
<h4>Overview</h4>
<p>World of Warcraft’s user interface is highly customizable and enables add-on developers to do almost anything in the game they can dream of. Add-ons can interact with the world, listen to events that happen in the game, alter the look of the default user
 interface or create brand new ones, but add-ons are seriously limited when it comes to talking to the world outside World of Warcraft. They cannot read or write files, call web services or do anything that could be potentially harmful. This is why TweetCraft
 comes with a Windows application that sits in the Notification Area (also known as the tray) and does the bulk of the work, giving the TweetCraft add-on only the data that it needs to display, such as tweets, replies and user pictures. All the Twitter web
 service calls, uploading of screenshots and housekeeping is done by this application. Let’s see how!</p>
<h4>The TweetCraft Tray application</h4>
<p>The TweetCraft Tray application is a WPF application that periodically checks for new tweets, dowloads and converts the user pictures of the tweets’ authors and writes it out to a file that World of Warcraft picks up and the add-on can use. It also picks
 up all outgoing tweets queued up for sending and sends them using Twitter one-by-one. It watches for screenshots taken by World of Warcraft and uploads them using TwitPic immediately.</p>
<p>To do all this, it has a couple of settings that need to be configured before it can work. For starters, it needs your Twitter credentials to be able to send tweets and post pictures on your behalf. It also needs to know which World of Warcraft account you
 are going to use to play and send and receive tweets with. Finally, you can opt out of automatically uploading screenshots you take during game. Figure 1 shows the TweetCraft Settings window that shows up when you first start TweetCraft after installation
 and is also available by right clicking the tray icon (Figure 2).</p>
<p><img border="0" alt="Figure1_TweetCraftSettingsWindow" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9813390/Figure1_TweetCraftSettingsWindow_96f280c9-cef7-47db-a5a8-1b3ae3da5d13.png" width="415" height="544">
<br>
<strong>Figure 1. TweetCraft Settings Window</strong></p>
<p><strong></strong></p>
<p><img border="0" alt="Figure2_TweetCraftTrayIcon" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9813390/Figure2_TweetCraftTrayIcon_647e915d-5ae9-41ab-9f6a-85ffbf94c0cc.png" width="418" height="172">
<br>
<strong>Figure 2. TweetCraft tray icon in the notification area</strong></p>
<h4>Getting data from Twitter</h4>
<p>TweetCraft uses an open-source library called <strong>TwitterLib</strong> to send and receive tweets using Twitter’s API. TwitterLib is part of the open-source WPF Twitter Client
<a href="http://code.google.com/p/wittytwitter/">WittyTwitter</a> and wraps the web services provided by Twitter into an easy to use .NET class library. TweetCraft wraps this library into a simple class called
<strong>TwitterClient</strong> that all the services in TweetCraft rely on. One of those services is the
<strong>TwitterBackgroundService</strong> which polls Twitter periodically to check for new tweets. By default, this is set to five minutes. If new tweets or replies are available, an event is raised that other components of TweetCraft can handle and work with
 the new tweets, download user pictures, etc. Figure 3 shows the three classes that take part in downloading new tweets and replies and notifying other classes.</p>
<p><img border="0" alt="Figure3_TwitterBackgroundService" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9813390/Figure3_TwitterBackgroundService_2c37e43e-7c00-4a0b-8357-f821fc443b79.png" width="715" height="333">
<br>
<strong>Figure 3. TwitterBackgroundService, TwitterClient and TwitterNet (TwitterLib)</strong></p>
<h4>&nbsp;</h4>
<h4>Dynamically building TGA images</h4>
<p>When it comes to visualizing images (or textures, in WoW parlance), World of Warcraft poses quite a few restrictions on what files can be used and where does files should be. First of all, World of Warcraft only supports the TGA and BLP file formats. TGA
 stands for the Truevision Targa format, whereas BLP is Blizzard’s own image format. The images must also have dimensions of two (32×32, 64×64 pixels and so on…), otherwise they won’t show up. On the other hand, Twitter user pictures are available as 48×48
 or 75×75 pixels and in various well-known formats, such as JPG, PNG or even GIF. TweetCraft needs to convert these pictures to 64×64 TGA files if it wants to play nice with World of Warcraft. This is done for each tweet’s authors user picture that will show
 up in World of Warcraft. The converted pictures must be placed in the <em>Interface</em> folder of World of Warcraft where the add-ons themselves also reside. The
<strong>TwitterUserPictureService</strong> can retrieve the user picture and convert it to a 64×64 TGA file that contains the 48×48 user picture in the middle and puts that file into the same directory where the TweetCraft add-on is installed. The files are
 named after each user’s screen name and if <strong>TwitterUserPictureService</strong> sees that a file is already there, it won’t convert it again, saving some time and computing power.</p>
<p>Figure 4 shows <strong>TwitterUserPictureService</strong> and two helper classes that take care of downloading and the actual conversion. The
<code>GetUserPicturePath</code> method returns the path of the resulting World of Warcraft compatible TGA file for a single user.</p>
<p><img border="0" alt="Figure4_TwitterUserPictureService" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9813390/Figure4_TwitterUserPictureService_abf4a52c-8e97-4458-b620-dc62d0be314d.png" width="475" height="313">
<br>
<strong>Figure 4. TwitterUserPictureService and its helper classes</strong></p>
<h4>Serializing tweets into Lua</h4>
<p>Until now, we were quite secretive about how we can avoid World of Warcraft’s restrictions and let TweetCraft be able to read the data and show it. We’ve said that add-ons cannot read or write files and that still hasn’t changed during the last few minutes,
 but add-ons must have a way somehow to save their settings and other information when I log out of the game and load that when I log back in, you sincerely ask and you’re right! Although add-ons cannot read or write to files, they can ask World of Warcraft
 to save and load some of their global variables whenever the user reloads the UI (by entering an instance or hearthing), logs in or logs out. These files are called the SavedVariables files. When TweetCraft finishes downloading tweets, converting user pictures
 and everything else, it saves them using the very same format and to the very same file World of Warcraft uses on behalf of the TweetCraft add-on. Neat, huh? Just wait a little bit more… <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p>
<p>Those variables that an add-on asks to be saved between sessions are saved into a Lua file, which is the same programming language add-on developers can use to write their add-ons. So basically, World of Warcraft creates a file that contains code full of
 assignment statements (think <code>a = 5</code>) that it will just run whenever those values need to be set again. More complex data structures can also be expressed this way using Lua tables, the swiss army-knife of Lua.</p>
<p>It sounds like a great idea to put all the data we would like for TweetCraft to use, but all we have is .NET objects, arrays and dictionaries. Fortunately, all these data structures can be expressed with simple Lua types and tables and TweetCraft comes with
 a class called <strong>LuaSerializer</strong> that produces Lua code from any .NET object (with a few restrictions, of course), very similar to how
<strong>XmlSerializer</strong> works.</p>
<p>To make this even more simple, TweetCraft contains the concept of a <strong>SavedVariablesChannel</strong> that you can just drop objects in, flush it and those object show up on the other side. In our case, as Lua variables. What’s even better, it works
 the other way around as well. The TweetCraft add-on stores all the tweets queued up and ready to be sent in a variable and triggers World of Warcraft to save them to the SavedVariables file. The
<strong>SavedVariablesChannel</strong> detects this by watching for changes made to the SavedVariables file using
<strong>FileSystemWatcher</strong> and notifies other components of the TweetCraft application that can pull out the information and send the tweets.</p>
<p>Figure 5 shows <strong>SavedVariablesChannel</strong> and its base class, <strong>
ValueChannelBase</strong> which keeps track of all objects thrown into it until it is flushed.</p>
<p><img border="0" alt="Figure5_SavedVariablesChannel" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9813390/Figure5_SavedVariablesChannel_d3bf3853-d03e-43a6-b8e4-899708f431dd.png" width="475" height="325">
<br>
<strong>Figure 5. SavedVariablesChannel and ValueChannelBase</strong></p>
<h4>Refreshing the data in World of Warcraft</h4>
<p>There’s one last problem we face when trying to achieve this two-way communication between the TweetCraft add-on and the application. If World of Warcraft is running, we cannot just overwrite the SavedVariables file and expect World of Warcraft to pick it
 up as it does not watch for changes made to the file. If we were to overwrite the file and subsequently the user logs out, World of Warcraft will happily overwrite the information we placed there. There’s another trick we have to resort to: the TweetCraft
 add-on can trigger the reloading of the UI which will unload all add-ons, save their variables and then load them again. There’s a a little bit of time between the saving and loading of a particular add-ons SavedVariables file and that’s when TweetCraft can
 safely read the file for queued up tweets and overwrite it with the new data. This is what happens when the user clicks the Refresh button in TweetCraft’s frame.</p>
<h4>Sending tweets and uploading screenshots</h4>
<p>Whenever the user queues up tweets for sending, they are not immediately sent but kept in a data structure that will be saved out to the SavedVariables file by World of Warcraft. We’ve seen that his happens when either the user logs out or presses the Refresh
 button. The updated SavedVariables file gets detected by <strong>SavedVariablesChannel</strong> and the
<code>ChannelUpdated</code> event is raised. When the TweetCraft application handles this event, it cannot immediately send the tweets as that would take a couple seconds and if you remember from the last section, we only have a tiny little window of time to
 process the values and save back all the data we would like to send back. For this reason, the tweets that are picked up from the SavedVariables file using the
<strong>SavedVariablesChannel</strong> get quickly queued up in the <strong>TwitterDispatcherService</strong> that then goes ahead and starts sending them one by one in the background. To make sure that all the values we prepared to save into the file get flushed,
 the <strong>SavedVariablesChannel</strong> has a property called <code>AutoFlush</code> that is enabled by default.</p>
<p>One thing we have not mentioned is that <strong>TwitterDispatcherService</strong> can also upload and post pictures using TwitPic. It watches the
<em>Screenshots</em> folder of World of Warcraft for new files and if AutoTweeting of screenshots is enabled, immediately queues up the picture for uploading and posting it. This also means that you don’t need to press the Refresh button or wait until you log
 off for screenshots to be posted. They will show up immediately in your Twitter feed.</p>
<p>The <strong>TwitterDispatcherService</strong> uses <strong>TwitterClient</strong> (and
<strong>TwitterLib</strong>) to send the tweets but it does not interfere with the quick reading and writing of the SavedVariables file we discussed previously. It also uses
<strong>TwitPicClient</strong> to upload and post pictures. Figure 6 shows <strong>
TwitterDispatcherService</strong>, <strong>TwitterClient</strong> and <strong>TwitPicClient</strong>.</p>
<p><img border="0" alt="Figure6_TwitterDispatcherService" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9813390/Figure6_TwitterDispatcherService_575f8576-4afc-4191-b41e-e45084b19ae6.png" width="691" height="348">
<br>
<strong>Figure 6. TwitterDispatcherService, TwitterClient and TwitPicClient</strong></p>
<h4>Bringing it all together</h4>
<p>So far, we’ve looked at components of TweetCraft that implemented a particular part of the application. Retrieving and sending tweets, converting user pictures and making all this information available for the TweetCraft add-on, but there’s an important
 class that brings all this together and contains all the logic of how these components interact with each other. We also need to be able to detect World of Warcraft installations, figure out what accounts are available and where to look for files like the
 SavedVariables files and put the converted user pictures. The <strong>TweetCraft</strong> class implements the logic required and relies on the
<strong>WorldOfWarcraft</strong> class for everything World of Warcraft related.</p>
<p>Figure 7 shows the <strong>TweetCraft</strong> and <strong>WorldOfWarcraft</strong> side by side.</p>
<p><img border="0" alt="Figure7_TweetCraft" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9813390/Figure7_TweetCraft_6bf95ca8-d5c2-4d54-8169-c02de469ecb3.png" width="523" height="463">
<br>
<strong>Figure 7. TweetCraft and WorldOfWarcraft</strong></p>
<h3>Summary</h3>
<p>While this is a high-level overview of TweetCraft only, it gives you a good idea of how it enables World of Warcraft players to use Twitter to send and receive tweets, upload the screenshots and share their achievements right inside the game. Make sure you
 try out TweetCraft if you have World of Warcraft installed and if you’re curious,
<a href="http://tweetcraft.codeplex.com/SourceControl/ListDownloadableCommits.aspx">
download the source code</a> and take a deeper look.</p>
<p>&nbsp;</p>
<p><img src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9813390/gaborratky_762a3823-615d-45f0-84f7-bb5c1d0a2707.png">
<br>
Gabor Ratky (<a href="http://rgabostyle.com/">Blog</a>, <a href="http://twitter.com/rgabostyle">
Twitter</a>), Senior Software Engineer and Coding4Fun Ninja at <a href="http://www.epam.com">
EPAM Systems</a>&nbsp;</p>
<p>Gabor is the developer behind TweetCraft and has been working on Coding4Fun projects for almost two years. He also leads the development of
<a href="http://addonstudio.codeplex.com/">AddOn Studio for World of Warcraft</a>, a Visual Studio-based IDE for building World of Warcraft add-ons and he co-authored the chapter in the
<a href="http://www.amazon.com/Coding4Fun-Programming-Projects-Wiimote-Warcraft/dp/0596520743/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1246522615&amp;sr=8-1">
Coding4Fun</a> book about it. He is a VSX Insider and was invited to speak at various events about Visual Studio Extensibility. When not working on Coding4Fun projects, Gabor works on large scale, enterprise solutions using exciting Microsoft technologies.
 He lives in Budapest, Hungary and loves traveling, good wine and Channel9 videos.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:ee1c5cc233474653be019e7600cc088c">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/TweetCraft-An-in-game-Twitter-client-for-World-of-Warcraft</comments>
      <itunes:summary>
TweetCraft is a World of Warcraft add-on that enables you to send and receive tweets using
Twitter without leaving the game, automatically upload and post screenshots using
TwitPic and automatically tweet certain in-game events such as achievements and moving around in the world of Azeroth. TweetCraft customizes your World of Warcraft user interface by adding its own frame similar to the built-in
 ones (such as the Quest Log) and provides easy access to it through a button near the minimap, slash commands or your favorite launcher (e.g. ChocolateBar). 

How TweetCraft works
Let’s quickly walk through the different things that TweetCraft does to bring Twitter into World of Warcraft. 
Overview
World of Warcraft’s user interface is highly customizable and enables add-on developers to do almost anything in the game they can dream of. Add-ons can interact with the world, listen to events that happen in the game, alter the look of the default user
 interface or create brand new ones, but add-ons are seriously limited when it comes to talking to the world outside World of Warcraft. They cannot read or write files, call web services or do anything that could be potentially harmful. This is why TweetCraft
 comes with a Windows application that sits in the Notification Area (also known as the tray) and does the bulk of the work, giving the TweetCraft add-on only the data that it needs to display, such as tweets, replies and user pictures. All the Twitter web
 service calls, uploading of screenshots and housekeeping is done by this application. Let’s see how! 
The TweetCraft Tray application
The TweetCraft Tray application is a WPF application that periodically checks for new tweets, dowloads and converts the user pictures of the tweets’ authors and writes it out to a file that World of Warcraft picks up and the add-on can use. It also picks
 up all outgoing tweets queued up for sending and sends them using Twitter one-by-one. It watches for screenshots taken by World of Warc</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/TweetCraft-An-in-game-Twitter-client-for-World-of-Warcraft</link>
      <pubDate>Thu, 02 Jul 2009 05:18:07 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/TweetCraft-An-in-game-Twitter-client-for-World-of-Warcraft</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9813390_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9813390_220.jpg" height="165" width="220"></media:thumbnail>      
      <dc:creator>Gabor Ratky</dc:creator>
      <itunes:author>Gabor Ratky</itunes:author>
      <slash:comments>17</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/TweetCraft-An-in-game-Twitter-client-for-World-of-Warcraft/RSS</wfw:commentRss>
      <category>Gaming</category>
      <category>Visual Studio</category>
      <category>Web Services</category>
      <category>Mash Up</category>
    </item>
  <item>
      <title>Dynamics Duo: Composition with Third-Party Web Services</title>
      <description><![CDATA[
<p>In this episode we talk about a variety of topics including using Silverlight for UI, composing using 3rd party web services and storing complex information in Dynamics CRM.</p>
<p>We spend most of our time on the flight booking page.&nbsp; This page was built using Silverlight to demonstrate some of the simple experiences that can be designed.&nbsp; In this case the UI was built in Expression Blend.&nbsp; Designers and developers work together closely
 on projects.&nbsp; In fact, developers and designers work on the exact same project files but stay in their own environments; Developers stay in Visual Studio, Designers stay in Expression.&nbsp; We’ll talk a lot more time about Silverlight in the final episode of this
 series tomorrow. </p>
<p>In our example we use a third party web service run by <a shape="rect" href="http://www.ezgds.com/" target="_blank" shape="rect">
ezGDS</a> to present the conference attendee with a list of flight options.&nbsp; ezGDS takes care behind the scenes to retrieve that flight fare information from various
<a shape="rect" href="http://en.wikipedia.org/wiki/Computer_reservations_system" target="_blank" shape="rect">
global distribution systems</a> including Amadeus, Worldspan, Sabre and others.&nbsp; The attendee sees none of that complexity since we’ve built all of that directly into our system.&nbsp; Even though the information coming back can be very complex, including ticket
 information and various inbound and outbound flight segments, Dynamics CRM easily handles storing this information in a custom entity.</p>
<p>This episode is part of a 5-part series. In this series we’ve tried to explain how you can combine the
<a shape="rect" href="http://www.microsoft.com/web/default.aspx" target="_blank" shape="rect">
Microsoft Web Platform</a> with Dynamics CRM to quickly build and deploy self-service solutions. The full set of videos include:</p>
<ol>
<li><a shape="rect" href="http://channel9.msdn.com/posts/benriga/Dynamics-Duo-Rides-again/" target="_blank" shape="rect">Dynamics Duo Rides Again</a>
</li><li><a shape="rect" href="http://channel9.msdn.com/posts/benriga/Dynamics-Duo-Everybody-needs-an-Identity/" target="_blank" shape="rect">Dynamics Duo: Everybody needs an Identity</a>
</li><li><a shape="rect" href="http://channel9.msdn.com/posts/benriga/Dynamics-Duo-Wide-World-Importers-Code/" target="_blank" shape="rect">Dynamics Duo: Wide World Importers Code</a>
</li><li><a shape="rect" href="http://channel9.msdn.com/posts/benriga/Dynamics-Duo-Composition-with-Third-Party-Web-Services/" target="_blank" shape="rect">Dynamics Duo: Composition with Third-Party Web Services</a> (this video)
</li><li><a shape="rect" href="http://channel9.msdn.com/posts/benriga/Dynamics-Duo-Silverlight-and-Jazz-Hands/" target="_blank" shape="rect">Dynamics Duo: Silverlight and Jazz Hands</a>&nbsp;
</li></ol>
<p>Both Girish and I enjoyed recording this series. We hope you enjoyed them as well. If you have comments or suggestions for other topics, feel free to add comments below or
<a shape="rect" href="http://blogs.msdn.com/girishr/contact.aspx" target="_blank" shape="rect">
email Girish</a> or <a shape="rect" href="http://blogs.msdn.com/benriga/contact.aspx" target="_blank" shape="rect">
me (Ben)</a> directly.</p>
<p>&nbsp;</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f06b5caf14444c51bc529deb001162b9">]]></description>
      <comments>http://channel9.msdn.com/Blogs/benriga/Dynamics-Duo-Composition-with-Third-Party-Web-Services</comments>
      <itunes:summary>
In this episode we talk about a variety of topics including using Silverlight for UI, composing using 3rd party web services and storing complex information in Dynamics CRM. 
We spend most of our time on the flight booking page.&amp;nbsp; This page was built using Silverlight to demonstrate some of the simple experiences that can be designed.&amp;nbsp; In this case the UI was built in Expression Blend.&amp;nbsp; Designers and developers work together closely
 on projects.&amp;nbsp; In fact, developers and designers work on the exact same project files but stay in their own environments; Developers stay in Visual Studio, Designers stay in Expression.&amp;nbsp; We’ll talk a lot more time about Silverlight in the final episode of this
 series tomorrow.  
In our example we use a third party web service run by 
ezGDS to present the conference attendee with a list of flight options.&amp;nbsp; ezGDS takes care behind the scenes to retrieve that flight fare information from various

global distribution systems including Amadeus, Worldspan, Sabre and others.&amp;nbsp; The attendee sees none of that complexity since we’ve built all of that directly into our system.&amp;nbsp; Even though the information coming back can be very complex, including ticket
 information and various inbound and outbound flight segments, Dynamics CRM easily handles storing this information in a custom entity. 
This episode is part of a 5-part series. In this series we’ve tried to explain how you can combine the

Microsoft Web Platform with Dynamics CRM to quickly build and deploy self-service solutions. The full set of videos include: 

Dynamics Duo Rides Again
Dynamics Duo: Everybody needs an Identity
Dynamics Duo: Wide World Importers Code
Dynamics Duo: Composition with Third-Party Web Services (this video)
Dynamics Duo: Silverlight and Jazz Hands&amp;nbsp;

Both Girish and I enjoyed recording this series. We hope you enjoyed them as well. If you have comments or suggestions for other topics, feel free to add com</itunes:summary>
      <itunes:duration>988</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/benriga/Dynamics-Duo-Composition-with-Third-Party-Web-Services</link>
      <pubDate>Thu, 18 Jun 2009 04:41:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/benriga/Dynamics-Duo-Composition-with-Third-Party-Web-Services</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/472814_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/472814_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_large_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_small_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_2MB_ch9.wmv" expression="full" duration="988" fileSize="248923551" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_ch9.mp3" expression="full" duration="988" fileSize="7905779" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_ch9.mp4" expression="full" duration="988" fileSize="90716133" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_ch9.wma" expression="full" duration="988" fileSize="15995281" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_ch9.wmv" expression="full" duration="988" fileSize="130907371" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_Zune_ch9.wmv" expression="full" duration="988" fileSize="114283351" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_s_ch9.wmv" expression="full" duration="988" fileSize="211" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/1/8/2/7/4/DynamicsDuoWWI4_ch9.wmv" length="130907371" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Ben Riga</dc:creator>
      <itunes:author>Ben Riga</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/benriga/Dynamics-Duo-Composition-with-Third-Party-Web-Services/RSS</wfw:commentRss>
      <category>Dynamics CRM</category>
      <category>Expression Blend</category>
      <category>Silverlight</category>
      <category>Visual Studio</category>
      <category>Web Services</category>
      <category>Windows Azure</category>
    </item>
  <item>
      <title>Microsoft Dynamics AX 2009 AIF Web Services Screencast</title>
      <description><![CDATA[
<p><a href="http://msdn.microsoft.com/en-us/library/bb496535.aspx">Application Integration Framework (AIF)</a> enables companies to integrate
<a href="http://msdn.microsoft.com/en-us/dynamics/ax/default.aspx">Microsoft Dynamics AX 2009</a> and communicate with external business processes and partners through the exchange of XML over various transport media. AIF enables both business-to-business and
 application-to-application integration scenarios. <br /><br />Following enhancements are new in AX 2009<br />* Create, read, update, and delete (CRUD) operations are now supported.<br />* The programming model for AIF supports document services that encapsulate business logic and are the interface to external systems.<br />* AIF provides functionality for consuming external Web services from within X&#43;&#43;.<br />* Performance improvements include the ability to scale up and handle more messages through parallel message processing and the addition of multiple AOSs.<br />* New document services for additional commonly-used documents.<br /><br />Additional Resources:<br />* <a href="http://www.microsoft.com/Presspass/press/2008/jun08/06-02DynamicsAX2009GAPR.mspx">
Microsoft Releases Microsoft Dynamics AX 2009, June, 2008</a><br />* <a href="http://msdn.microsoft.com/en-us/library/bb496535.aspx">AIF Overview</a><br />* <a href="http://msdn.microsoft.com/en-us/library/cc602654.aspx">What's New in Microsoft Dynamics AX 2009 for Developers</a><br />* <a href="http://channel9.msdn.com/posts/benriga/WCF-and-AIF-in-Dynamics-2009-Chatting-with-Michael-Merz/Default.aspx?wa=wsignin1.0">
WCF and AIF in Dynamics 2009: Chatting with Michael Merz, PM for AIF (Video Interview by Ben Riga)</a><br />* <a href="http://blogs.msdn.com/sanjayjain/archive/2009/06/15/microsoft-dynamics-ax-receives-placement-in-gartner-s-magic-quadrant.aspx">
Microsoft Dynamics AX receives placement in Gartner’s Magic Quadrant</a><br />* Download <a href="https://mbs.microsoft.com/partnersource/deployment/documentation/howtoarticles/presalesdemokitmdax2009">
Pre-Sales Demonstration Toolkit For Microsoft Dynamics AX 2009 - Refresh 1</a> (Need PartnerSource Access)</p>
<p>&nbsp;</p>
<p>Sanjay Jain<br />ISV Architect Evangelist<br />Microsoft Corporation<br /><b>Blog</b>: <a href="http://blogs.msdn.com/SanjayJain">http://Blogs.msdn.com/SanjayJain</a>
<br /><b>Twitter</b>: <a href="http://twitter.com/SanjayJain369">http://twitter.com/SanjayJain369</a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:7b7e438a1815403aa95d9deb000c5876">]]></description>
      <comments>http://channel9.msdn.com/Blogs/SanjayJain/Microsoft-Dynamics-AX-2009-AIF-Web-Services-Screencast</comments>
      <itunes:summary>
Application Integration Framework (AIF) enables companies to integrate
Microsoft Dynamics AX 2009 and communicate with external business processes and partners through the exchange of XML over various transport media. AIF enables both business-to-business and
 application-to-application integration scenarios. Following enhancements are new in AX 2009* Create, read, update, and delete (CRUD) operations are now supported.* The programming model for AIF supports document services that encapsulate business logic and are the interface to external systems.* AIF provides functionality for consuming external Web services from within X&amp;#43;&amp;#43;.* Performance improvements include the ability to scale up and handle more messages through parallel message processing and the addition of multiple AOSs.* New document services for additional commonly-used documents.Additional Resources:* 
Microsoft Releases Microsoft Dynamics AX 2009, June, 2008* AIF Overview* What&#39;s New in Microsoft Dynamics AX 2009 for Developers* 
WCF and AIF in Dynamics 2009: Chatting with Michael Merz, PM for AIF (Video Interview by Ben Riga)* 
Microsoft Dynamics AX receives placement in Gartner’s Magic Quadrant* Download 
Pre-Sales Demonstration Toolkit For Microsoft Dynamics AX 2009 - Refresh 1 (Need PartnerSource Access) 
&amp;nbsp; 
Sanjay JainISV Architect EvangelistMicrosoft CorporationBlog: http://Blogs.msdn.com/SanjayJain
Twitter: http://twitter.com/SanjayJain369 
</itunes:summary>
      <itunes:duration>840</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/SanjayJain/Microsoft-Dynamics-AX-2009-AIF-Web-Services-Screencast</link>
      <pubDate>Wed, 17 Jun 2009 10:51:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/SanjayJain/Microsoft-Dynamics-AX-2009-AIF-Web-Services-Screencast</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/474106_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/474106_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/1/4/7/4/AIFWebSvc_large_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/1/4/7/4/AIFWebSvc_small_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/1/4/7/4/AIFWebSvc_2MB_ch9.wmv" expression="full" duration="840" fileSize="20824361" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/1/4/7/4/AIFWebSvc_ch9.mp3" expression="full" duration="840" fileSize="6728479" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/1/4/7/4/AIFWebSvc_ch9.mp4" expression="full" duration="840" fileSize="20368854" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/1/4/7/4/AIFWebSvc_ch9.wma" expression="full" duration="840" fileSize="13607101" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/1/4/7/4/AIFWebSvc_Zune_ch9.wmv" expression="full" duration="840" fileSize="20794463" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/0/1/4/7/4/AIFWebSvc_2MB_ch9.wmv" length="20824361" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Sanjay Jain</dc:creator>
      <itunes:author>Sanjay Jain</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/SanjayJain/Microsoft-Dynamics-AX-2009-AIF-Web-Services-Screencast/RSS</wfw:commentRss>
      <category>AIF</category>
      <category>Application Integration Framework</category>
      <category>Dynamics AX</category>
      <category>Microsoft Dynamics AX 2009</category>
      <category>Sanjay Jain</category>
      <category>Screencast</category>
      <category>WCF</category>
      <category>Web Services</category>
      <category>Application</category>
    </item>
  <item>
      <title>SharePoint for Developers Part 6 - Custom web services</title>
      <description><![CDATA[<a shape="rect" href="http://blogs.msdn.com/kaevans" shape="rect">Kirk Evans</a>&nbsp;shows how to create a custom ASMX web service hosted in SharePoint that enables query, insert, and delete of specific lists in a SharePoint site.&nbsp; You will also see how to
 use the WCFTestClient utility to call the web services.&nbsp; For more information, visit
<a shape="rect" href="http://blogs.msdn.com/kaevans/archive/2009/04/30/sharepoint-for-developers-part-6-custom-web-services.aspx" shape="rect">
the accompanying blog post on Kirk's MSDN blog</a>.  <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:42e93eb9064a49bdaed29deb000e7066">]]></description>
      <comments>http://channel9.msdn.com/Blogs/kirke/SharePoint-for-Developers-Part-6-Custom-web-services</comments>
      <itunes:summary>Kirk Evans&amp;nbsp;shows how to create a custom ASMX web service hosted in SharePoint that enables query, insert, and delete of specific lists in a SharePoint site.&amp;nbsp; You will also see how to
 use the WCFTestClient utility to call the web services.&amp;nbsp; For more information, visit

the accompanying blog post on Kirk&#39;s MSDN blog. </itunes:summary>
      <itunes:duration>1194</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/kirke/SharePoint-for-Developers-Part-6-Custom-web-services</link>
      <pubDate>Thu, 30 Apr 2009 09:04:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/kirke/SharePoint-for-Developers-Part-6-Custom-web-services</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/467402_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/467402_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/0/4/7/6/4/sharepointcustomwebservices_large_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/0/4/7/6/4/sharepointcustomwebservices_small_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/0/4/7/6/4/sharepointcustomwebservices_2MB_ch9.wmv" expression="full" duration="1194" fileSize="37249143" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/0/4/7/6/4/sharepointcustomwebservices_ch9.mp3" expression="full" duration="1194" fileSize="9561266" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/0/4/7/6/4/sharepointcustomwebservices_ch9.mp4" expression="full" duration="1194" fileSize="34015893" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/0/4/7/6/4/sharepointcustomwebservices_ch9.wma" expression="full" duration="1194" fileSize="19344741" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/0/4/7/6/4/sharepointcustomwebservices_ch9.wmv" expression="full" duration="1194" fileSize="34284607" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/0/4/7/6/4/sharepointcustomwebservices_Zune_ch9.wmv" expression="full" duration="1194" fileSize="32700587" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/0/4/7/6/4/sharepointcustomwebservices_ch9.wmv" length="34284607" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Kirk Evans</dc:creator>
      <itunes:author>Kirk Evans</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/kirke/SharePoint-for-Developers-Part-6-Custom-web-services/RSS</wfw:commentRss>
      <category>MOSS</category>
      <category>Office</category>
      <category>SharePoint</category>
      <category>Visual Studio</category>
      <category>VSeWSS</category>
      <category>Water Cooler</category>
      <category>Web Services</category>
    </item>
  <item>
      <title>SharePoint for Developers Part 4 - Calling SharePoint Web Services from Silverlight</title>
      <description><![CDATA[In this session, <a shape="rect" href="http://blogs.msdn.com/kaevans" shape="rect">
Kirk Evans </a>will demonstrate how to call SharePoint's web services from a Silverlight client.&nbsp; We will use SharePoint's Lists web service, and will show how to use databinding in Silverlight to display results from a SharePoint list.&nbsp; We will also see how
 to get around cross domain issues using SharePoint Designer 2007. The accompanying post with code listings is available on
<a shape="rect" href="http://blogs.msdn.com/kaevans/archive/2009/04/28/sharepoint-for-developers-part-4-consuming-sharepoint-web-services-from-silverlight.aspx" shape="rect">
Kirk’s MSDN blog</a>.&nbsp;  <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:cfabff735c3d4f2288ec9deb000e7ab7">]]></description>
      <comments>http://channel9.msdn.com/Blogs/kirke/SharePoint-for-Developers-Part-4-Calling-SharePoint-Web-Services-from-Silverlight</comments>
      <itunes:summary>In this session, 
Kirk Evans will demonstrate how to call SharePoint&#39;s web services from a Silverlight client.&amp;nbsp; We will use SharePoint&#39;s Lists web service, and will show how to use databinding in Silverlight to display results from a SharePoint list.&amp;nbsp; We will also see how
 to get around cross domain issues using SharePoint Designer 2007. The accompanying post with code listings is available on

Kirk’s MSDN blog.&amp;nbsp; </itunes:summary>
      <itunes:duration>493</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/kirke/SharePoint-for-Developers-Part-4-Calling-SharePoint-Web-Services-from-Silverlight</link>
      <pubDate>Tue, 28 Apr 2009 18:46:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/kirke/SharePoint-for-Developers-Part-4-Calling-SharePoint-Web-Services-from-Silverlight</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/467104_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/467104_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/0/1/7/6/4/sl2callingsharepoint_large_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/0/1/7/6/4/sl2callingsharepoint_small_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/0/1/7/6/4/sl2callingsharepoint_2MB_ch9.wmv" expression="full" duration="493" fileSize="29421329" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/0/1/7/6/4/sl2callingsharepoint_ch9.mp3" expression="full" duration="493" fileSize="3944968" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/0/1/7/6/4/sl2callingsharepoint_ch9.mp4" expression="full" duration="493" fileSize="18706646" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/0/1/7/6/4/sl2callingsharepoint_ch9.wma" expression="full" duration="493" fileSize="7992625" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/0/1/7/6/4/sl2callingsharepoint_ch9.wmv" expression="full" duration="493" fileSize="17976401" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/0/1/7/6/4/sl2callingsharepoint_Zune_ch9.wmv" expression="full" duration="493" fileSize="18808381" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/4/0/1/7/6/4/sl2callingsharepoint_ch9.wmv" length="17976401" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Kirk Evans</dc:creator>
      <itunes:author>Kirk Evans</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/kirke/SharePoint-for-Developers-Part-4-Calling-SharePoint-Web-Services-from-Silverlight/RSS</wfw:commentRss>
      <category>Expression Blend</category>
      <category>MOSS</category>
      <category>Office</category>
      <category>SharePoint</category>
      <category>Silverlight</category>
      <category>Silverlight 2</category>
      <category>VSeWSS</category>
      <category>Water Cooler</category>
      <category>Web Services</category>
    </item>
  <item>
      <title>WCF 3.5 RESTful web service</title>
      <description><![CDATA[REST is an acronym for <strong>RE</strong>presentational <strong>S</strong>tate
<strong>T</strong>ransfer. in thsi screencast i will talk about Rest, RESTFul web services and how easy it is to create Restful services using .NET3.5.
<br /><br />Download the sample from - <a shape="rect" href="http://cid-0666e397c5ca74dd.skydrive.live.com/self.aspx/Screencast/TaskServiceLibrary.zip" shape="rect">
http://cid-0666e397c5ca74dd.skydrive.live.com/self.aspx/Screencast/TaskServiceLibrary.zip</a><br /><br />For more information<br /><a shape="rect" href="http://msdn.microsoft.com/en-us/netframework/cc950529.aspx" shape="rect">http://msdn.microsoft.com/en-us/netframework/cc950529.aspx</a><br /><a shape="rect" href="http://social.msdn.microsoft.com/content/en-us/msft/netframework/wcf/rest/Overview" shape="rect">http://social.msdn.microsoft.com/content/en-us/msft/netframework/wcf/rest/Overview</a><br /><a shape="rect" href="http://msdn.microsoft.com/en-us/library/dd203052(printer).aspx" shape="rect">http://msdn.microsoft.com/en-us/library/dd203052(printer).aspx</a><br /> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:339b75e1fbce4e43899f9deb000c0f25">]]></description>
      <comments>http://channel9.msdn.com/Blogs/ashishjaiman/WCF-35-RESTful-web-service</comments>
      <itunes:summary>REST is an acronym for REpresentational State
Transfer. in thsi screencast i will talk about Rest, RESTFul web services and how easy it is to create Restful services using .NET3.5.
Download the sample from - 
http://cid-0666e397c5ca74dd.skydrive.live.com/self.aspx/Screencast/TaskServiceLibrary.zipFor more informationhttp://msdn.microsoft.com/en-us/netframework/cc950529.aspxhttp://social.msdn.microsoft.com/content/en-us/msft/netframework/wcf/rest/Overviewhttp://msdn.microsoft.com/en-us/library/dd203052(printer).aspx</itunes:summary>
      <itunes:duration>583</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/ashishjaiman/WCF-35-RESTful-web-service</link>
      <pubDate>Sat, 18 Apr 2009 11:56:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/ashishjaiman/WCF-35-RESTful-web-service</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/465895_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/465895_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/8/5/6/4/WECRESTNew_large_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/8/5/6/4/WECRESTNew_small_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/8/5/6/4/WECRESTNew_2MB_ch9.wmv" expression="full" duration="583" fileSize="15184007" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/8/5/6/4/WECRESTNew_ch9.mp3" expression="full" duration="583" fileSize="4667571" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/8/5/6/4/WECRESTNew_ch9.mp4" expression="full" duration="583" fileSize="13860667" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/8/5/6/4/WECRESTNew_ch9.wma" expression="full" duration="583" fileSize="9440553" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/8/5/6/4/WECRESTNew_ch9.wmv" expression="full" duration="583" fileSize="14344941" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/8/5/6/4/WECRESTNew_Zune_ch9.wmv" expression="full" duration="583" fileSize="13496921" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/5/9/8/5/6/4/WECRESTNew_s_ch9.wmv" expression="full" duration="583" fileSize="200" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/8/5/6/4/WECRESTNew_ch9.wmv" length="14344941" type="video/x-ms-wmv"></enclosure>
      <dc:creator>ashishjaiman</dc:creator>
      <itunes:author>ashishjaiman</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/ashishjaiman/WCF-35-RESTful-web-service/RSS</wfw:commentRss>
      <category>endpoint</category>
      <category>REST</category>
      <category>screencasts</category>
      <category>WCF</category>
      <category>Web Services</category>
    </item>
  <item>
      <title>Microsoft Web Technology Announcements from MIX09</title>
      <description><![CDATA[ <p>During this morning’s keynote speech at the <a shape="rect" href="http://www.microsoft.com/events/mix/default.mspx" shape="rect">MIX09 conference</a>, Microsoft made several announcements about updates, new releases, and enhancements to the Microsoft web technologies. Scott Guthrie came on stage to deliver a keynote speech where he talked about <a shape="rect" href="http://go.microsoft.com/fwlink/?linkid=143433" shape="rect">the new version of Silverlight 3</a> as well as the release of <a shape="rect" href="http://expression.microsoft.com/en-us/default.aspx" shape="rect">Expression Blend 3 Preview</a>&nbsp; and updates to Windows Azure. </p><p>If you weren’t able to attend the conference or watch the live stream at <a shape="rect" href="http://live.visitmix.com/" shape="rect">live.visitmix.com</a>, here’s what you missed:</p><h2>Silverlight 3</h2><p>Already the download links are live for the <a shape="rect" href="http://go.microsoft.com/fwlink/?linkid=143433" shape="rect">Developer Runtime Beta</a> of Silverlight 3, the <a shape="rect" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=d09b6ecf-9a45-4d99-b752-2a330a937bc4" shape="rect">SDK</a>, <a shape="rect" href="http://msdn.microsoft.com/en-us/library/cc838158(vs.96).aspx" shape="rect">documentation</a>, and the <a shape="rect" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=11dc7151-dbd6-4e39-878f-5081863cbb5d" shape="rect">Silverlight 3 Tools Beta 1 for Visual Studio 2008 SP1</a>. And we heard the final version of Silverlight 3 should ship by year-end. In the new version of this technology, RIA developers will have more tools to work faster with new graphics, animation, and 3-D features and more than 60 new controls. There’s added support for the H.264 video format, deep linking, better SEO support, and new hardware-based graphics acceleration and animation features. Silverlight 3 will also allow developers to <strong>create lightweight web apps that can exist outside the browser</strong>, which should definitely lead to some interesting scenarios. <em>(Like a Netflix desktop app, I can only hope).</em> </p><p><a shape="rect" href="http://on10.net/Link/2c10a302-7a65-4138-8cc8-3ac05d6b264c/" shape="rect"><img width="262" height="94" width="262" height="94" title="silverlight_logo" alt="silverlight_logo" src="http://on10.net/Link/b0a579dc-cf9f-4b7b-b0fc-7cab0dbd326f/" border="0"></a></p><p>Today, Silverlight is in use on a number of major websites including AOL, eBay, BSkyB, Netflix, CBS Sports Online, the European Commission, CareerBuilder.com, Samsung Electronics Co., and Yahoo! Japan. Microsoft, of course, has deployed the technology on 200&#43; products and sites like Microsoft.com, MSN, Live Search, Windows Live, Microsoft Office Online, Virtual Earth and the <strong>new Silverlight-based WorldWide Telescope application</strong>.</p><h2>Microsoft’s Web Platform Installer &amp; Gallery</h2><p>Also available is <a shape="rect" href="http://arstechnica.com/microsoft/news/2009/03/silverlight-3-related-bits-start-to-arrive-early.ars" shape="rect">a new preview release of .NET RIA Services</a>, technology which brings the ASP.Net platform together with the Silverlight platform and the <a shape="rect" href="http://www.microsoft.com/Web/downloads/platform.aspx" shape="rect">Web Platform Installer 2.0 Beta</a>, a tool that simplifies the installation and maintenance of Microsoft’s web stack as well as other free components. This release lets users download both PHP and the final release of ASP.NET MVC 1.0. It’s available on <a shape="rect" href="http://www.microsoft.com/Web/downloads/platform.aspx" shape="rect">on this page</a> alongside the final version of the 1.0 release. With the new beta, you can easily install popular open source ASP.NET and PHP web apps and other extras like the latest community version of PHP for Windows. </p><p><a shape="rect" href="http://on10.net/Link/4d893a84-7d9e-4268-9a02-f0a21d9bfd00/" shape="rect"><img width="490" height="370" width="490" height="370" title="web_platform_installer" alt="web_platform_installer" src="http://on10.net/Link/058ace4f-874a-4640-b589-cd394bd15264/" border="0"></a></p><p>Along with the Web Platform Installer beta 2, there’s now <a shape="rect" href="http://www.microsoft.com/web/gallery/" shape="rect"><strong>a Windows Web Application Gallery</strong></a> available where developers can discover, explore and download applications and components that can help them build web apps. This gallery doesn’t just feature Microsoft products either – it includes links to other online resources like <strong>Acquia Drupal, DotNetNuke and WordPress.</strong> The gallery divvies up the types of apps into categories and includes both a featured app section and a “top 5” section. </p><p><a shape="rect" href="http://on10.net/Link/ed356771-3883-47a0-a04a-47fb7b42279d/" shape="rect"><img width="490" height="373" width="490" height="373" title="web_app_gallery" alt="web_app_gallery" src="http://on10.net/Link/2c476712-f5dc-421f-b74c-3e8a322143d6/" border="0"></a></p><h2>Windows Azure Tools and Upgrades</h2><p>Finally, Guthrie unveiled the new <a shape="rect" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=59e8fc0c-c399-4ab7-8a93-882d8e74b67a" shape="rect">Windows Azure Tools for Microsoft Visual Studio</a>. These extend Visual Studio’s capabilities to allow for the creation, building, debugging, running, and packaging of scalable services on Windows Azure. The Azure Tools download also includes the Windows Azure SDK. </p><p><a shape="rect" href="http://on10.net/Link/3d390016-8138-4b3a-b0a9-9a7bdec299cb/" shape="rect"><img width="317" height="57" width="317" height="57" title="azure_001" alt="azure_001" src="http://on10.net/Link/e4b7747a-d13e-46e3-abe1-4da6b928066f/" border="0"></a></p><p>The Windows Azure Platform itself received an upgrade, too. Today Microsoft added new capabilities including support for full trust to increase the level of flexibility for developers through support of native code, non-.NET language support via FastCGI, and geolocation which will allow developers to host data and code across two U.S.-based datacenters. The Azure team has also addressed the top customer bugs and has implemented update notifications for future releases. Customers were reminded, however, that Azure is still a CTP (Community Technology Preview) and should not yet be used on production systems. </p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/web+services/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1b16bc6fc11243fa8d699e0e00f08f0a">]]></description>
      <comments>http://channel9.msdn.com/Blogs/coolstuff/Microsoft-Web-Technology-Announcements-from-MIX09</comments>
      <itunes:summary> During this morning’s keynote speech at the MIX09 conference, Microsoft made several announcements about updates, new releases, and enhancements to the Microsoft web technologies. Scott Guthrie came on stage to deliver a keynote speech where he talked about the new version of Silverlight 3 as well as the release of Expression Blend 3 Preview&amp;nbsp; and updates to Windows Azure.  If you weren’t able to attend the conference or watch the live stream at live.visitmix.com, here’s what you missed: Silverlight 3Already the download links are live for the Developer Runtime Beta of Silverlight 3, the SDK, documentation, and the Silverlight 3 Tools Beta 1 for Visual Studio 2008 SP1. And we heard the final version of Silverlight 3 should ship by year-end. In the new version of this technology, RIA developers will have more tools to work faster with new graphics, animation, and 3-D features and more than 60 new controls. There’s added support for the H.264 video format, deep linking, better SEO support, and new hardware-based graphics acceleration and animation features. Silverlight 3 will also allow developers to create lightweight web apps that can exist outside the browser, which should definitely lead to some interesting scenarios. (Like a Netflix desktop app, I can only hope).   Today, Silverlight is in use on a number of major websites including AOL, eBay, BSkyB, Netflix, CBS Sports Online, the European Commission, CareerBuilder.com, Samsung Electronics Co., and Yahoo! Japan. Microsoft, of course, has deployed the technology on 200&amp;#43; products and sites like Microsoft.com, MSN, Live Search, Windows Live, Microsoft Office Online, Virtual Earth and the new Silverlight-based WorldWide Telescope application. Microsoft’s Web Platform Installer &amp;amp; GalleryAlso available is a new preview release of .NET RIA Services, technology which brings the ASP.Net platform together with the Silverlight platform and the Web Platform Installer 2.0 Beta, a tool that simplifies the install</itunes:summary>
      <link>http://channel9.msdn.com/Blogs/coolstuff/Microsoft-Web-Technology-Announcements-from-MIX09</link>
      <pubDate>Wed, 18 Mar 2009 15:40:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/coolstuff/Microsoft-Web-Technology-Announcements-from-MIX09</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/on10_25383_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/on10_106bc980-065f-4978-a861-8c37e8b57d46.jpg" height="195" width="150"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/on10_25383_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/on10_2dc0eba1-7f70-4411-b9b9-ffc8bcbb8389.jpg" height="64" width="85"></media:thumbnail>      
      <dc:creator>Sarah Perez</dc:creator>
      <itunes:author>Sarah Perez</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/coolstuff/Microsoft-Web-Technology-Announcements-from-MIX09/RSS</wfw:commentRss>
      <category>.NET</category>
      <category>.NET Framework</category>
      <category>Azure</category>
      <category>Developer</category>
      <category>Developers</category>
      <category>Development</category>
      <category>Expression</category>
      <category>Expression Blend</category>
      <category>Mix</category>
      <category>MIX09</category>
      <category>Silverlight</category>
      <category>Visual Studio</category>
      <category>Web</category>
      <category>Web Services</category>
      <category>Windows Azure</category>
      <category>Web Development</category>
    </item>    
</channel>
</rss>