<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>A Cup of Silverlight, RIA &amp; Interoperability : Architecture</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/tags/Architecture/default.aspx</link><description>Tags: Architecture</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>PDC2008 : Silverlight on its way to address Business Apps</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/11/04/silverlight-alexandria-RIA-business-apps-cool.aspx</link><pubDate>Wed, 05 Nov 2008 01:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9041739</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/9041739.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=9041739</wfw:commentRss><description>&lt;P&gt;Last week at PDC 2008, Jamie Cool demonstrated some very cool work under progress at Microsoft, to deliver a first class development experience for people looking forward to build Business Applications on top of Silverlight.&lt;/P&gt;
&lt;P&gt;If you started working on business apps, you miss several capabilities with the current version of Silverlight : see yellow boxes below. This slides comes from &lt;A href="http://channel9.msdn.com/pdc2008/PC11/" mce_href="http://channel9.msdn.com/pdc2008/PC11/"&gt;Jamie Cool talk available on channel 9.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/PDC2008SilverlightcomestoBusinessApps_DA1C/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/PDC2008SilverlightcomestoBusinessApps_DA1C/image_2.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=306 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/PDC2008SilverlightcomestoBusinessApps_DA1C/image_thumb.png" width=440 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/PDC2008SilverlightcomestoBusinessApps_DA1C/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The availability of Jamie's framework has not been disclosed. If you cannot wait for those bits,&amp;nbsp;have a look at &lt;A href="http://www.code-magazine.com/article.aspx?quickid=0811061" mce_href="http://www.code-magazine.com/article.aspx?quickid=0811061"&gt;CSLA.Net for Silverlight&lt;/A&gt; and &lt;A href="http://www.lhotka.net/cslalight/" mce_href="http://www.lhotka.net/cslalight/"&gt;here also&lt;/A&gt;. CSLA is already available. I did not have the opportunity to play with it yet.&lt;/P&gt;
&lt;P&gt;A &lt;A href="http://blogs.msdn.com/swiss_dpe_team/archive/2008/10/29/live-from-pdc-day-2.aspx" mce_href="http://blogs.msdn.com/swiss_dpe_team/archive/2008/10/29/live-from-pdc-day-2.aspx"&gt;DPE Team from Switzerland wrote&lt;/A&gt; this synthesis of Jamie’s talk :&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;What this framework will give you are:&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;- “Shared Business Entities” between tiers that enable client side change tracking (using DiffGrams). Enabling optimistic locking multi records CRUD operations. Validation is also given thanks that the “Entities” can have attributes like [Range(0,100)] for end to end across tiers validation. You can also have a server side method for validation that gets triggered on update for example. All this can run on top of LINQ to SQL, the Entity Framework or even your custom DAL. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;- A DataSource control is also provided and it can manage round trip to the server for efficient data paging, filtering and sorting. Basically it uses the IQuerable interface to filter, apply skip/take and order by on the server and the data round trip .&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;- Wrapper around the Authentication &amp;amp; Membership provider of ASP.NET are also provided. Including SL controls that enable you, with 2 line of code, to add Login functionality directly in Silverlight. It is also populating the Principal object in SL with the authenticated User, making it easier to use the identity in your UI tier. Last but not least you can decorate your server side “Entity” with permissions attributes to enable role base security on top of your “Entity” and CRUD operations.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;- Page Navigation model including browser history integration. This make very easy to write multi forms application in SL. It plugs-in to the browser history, enabling user to navigate through the forms with the forward and backwards buttons, without reloading the SL application. It also enable the user to copy and paste around a Url, that will bring the user right back to the right form.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;- Additional controls like form control to make even more productive data driven app development will be also provided.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9041739" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Futures/default.aspx">Futures</category></item><item><title>Architecture Series – Pure and Mixed configurations</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/10/16/eclipse4sl-architecture-series-pure-or-mixed-eclipse.aspx</link><pubDate>Thu, 16 Oct 2008 01:23:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9001136</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/9001136.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=9001136</wfw:commentRss><description>&lt;p&gt;This is the first article in an &lt;a href="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Series/default.aspx"&gt;Architecture Series&lt;/a&gt; dealing with technical options taken for the Eclipse Tools for Silverlight. Future articles will focus on the XAML rendering architecture, the Eclipse extension points as well as the “MSBuild” project structure preservation option that was taken to allow the back and forth loop.&lt;/p&gt;  &lt;p&gt;In the very first words of the eclipse4SL &lt;a href="http://www.eclipse4sl.org/download/"&gt;installation&lt;/a&gt;, you are told to choose between two configurations : Pure or Mixed Eclipse. Why that ? To minimize the size of the bits to download but also to adapt to your interoperability scenario (any co-workers using Microsoft Tools ?). So what ? That’s enough information to you. Fine, have fun with the &lt;a href="http://www.eclipse4sl.org/learn/"&gt;Tutorials&lt;/a&gt; and please give your &lt;a href="https://sourceforge.net/forum/?group_id=240702"&gt;feedback&lt;/a&gt;. Now let’s talk about the Silverlight 2 runtimes, SDK and Tools for Visual Studio, and how they fit one with another.&lt;/p&gt;  &lt;p&gt;If you’re new to Silverlight, you’ll want to begin with the &lt;a href="http://silverlight.net/GetStarted/"&gt;Get Started&lt;/a&gt; section of the &lt;a href="http://silverlight.net/default.aspx"&gt;Silverlight site&lt;/a&gt;. After that take an hour or two to go through &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-2-end-to-end-tutorial-building-a-digg-search-client.aspx"&gt;Scott Guthrie’s tutorials&lt;/a&gt;. Finally give a try to &lt;a href="http://timheuer.com/blog/"&gt;Tim Heuer’s technically amazing posts&lt;/a&gt;. BTW, have you read the Silverlight 2 announcements from &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/10/14/silverlight-2-released.aspx"&gt;Scott&lt;/a&gt; and &lt;a href="http://timheuer.com/blog/archive/2008/10/14/silverlight-2-released-officially.aspx"&gt;Tim&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;OK let’s start. From the &lt;a href="http://www.microsoft.com/silverlight/resources/tools.aspx"&gt;Silverlight Tools page&lt;/a&gt;, you’ll notice that Silverlight 2 is composed of a runtime but also a set of development tools (developer runtime, SDK and Visual Studio Tools). Note that eclipse4SL has been added to the list of tools :-).&lt;/p&gt;  &lt;p&gt;eclipse4SL uses several pieces of the Silverlight Tools to perform the compilation of your XAML code (you don’t know about XAML, experience it from the &lt;a href="http://blogs.msdn.com/silverlight_plus_java/pages/eclipse4sl-hello-world-tutorial.aspx"&gt;HelloWorld tutorial&lt;/a&gt;) : MSBuild version 3.5, complementary compilation tasks which come with the SDK and the Silverlight runtime to actually render the bits on the surface as well as run your application.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;In a pure Microsoft environment&lt;/strong&gt;, you would get the following configuration :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/eclipse4SLArchitectureSeriesPureorMixede_138F3/image_4.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="427" alt="image" src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/eclipse4SLArchitectureSeriesPureorMixede_138F3/image_thumb_1.png" width="544" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;If you chose to install a Pure Eclipse configuration&lt;/strong&gt;, the Silverlight runtime plus the Silverlight SDK are sufficient (the latter has a dependency on MSBuild 3.5 which comes with .Net 3.5). Note that .Net 3.5 SP1 is optional here. Bonus : as eclipse4SL M1 does not support debugging, you may use a standard Silverlight runtime instead of the developer runtime.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/eclipse4SLArchitectureSeriesPureorMixede_138F3/image_6.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="410" alt="image" src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/eclipse4SLArchitectureSeriesPureorMixede_138F3/image_thumb_2.png" width="550" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Finally, in a Mixed Eclipse configuration&lt;/strong&gt;, you’ll go back and forth between Eclipse, Visual Studio and Expression Blend but this comes with a maximum of products to install.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/eclipse4SLArchitectureSeriesPureorMixede_138F3/image_8.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="424" alt="image" src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/eclipse4SLArchitectureSeriesPureorMixede_138F3/image_thumb_3.png" width="547" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Any comments, please use the &lt;a href="https://sourceforge.net/forum/?group_id=240702"&gt;forums&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9001136" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Interoperability/default.aspx">Interoperability</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/eclipse4SL/default.aspx">eclipse4SL</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Series/default.aspx">Series</category></item><item><title>B2C scenario : Customer Environement</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2c-scenario-customer-environment.aspx</link><pubDate>Thu, 31 Jul 2008 17:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8793404</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/8793404.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=8793404</wfw:commentRss><description>&lt;P mce_keep="true"&gt;The B2C scenario corresponds to &lt;STRONG&gt;Web applications accessed by customers&lt;/STRONG&gt;, traditionnaly built with some dynamic HTML/AJAX technology running on the server side, that &lt;STRONG&gt;have been elected to leverage the Silverlight capabilities&lt;/STRONG&gt; (enriched user experience, vector based contents, scaling, rich media…).To comply with the scope of this blog, we’ll concentrate on RIA scenarios, where the customer accesses private data from a Silverlight Client.&lt;/P&gt;
&lt;P&gt;As listed in &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/silverlight-scenarios-for-rich-internet-applications.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/silverlight-scenarios-for-rich-internet-applications.aspx"&gt;Silverlight scenarios for Rich Internet Applications&lt;/A&gt;, the following constraints apply to the Customer Environment scenario :&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Infrastructure security is mandatory : it includes &lt;STRONG&gt;a DMZ&lt;/STRONG&gt; to protect the Web Server and access to the Web Services &lt;STRONG&gt;and optional SSL/HTTPS communications &lt;/STRONG&gt;depending on the confidentiality of the data accessed. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Protocol adaptation is required if&lt;/STRONG&gt; the application is interfaced with pre-existing Web Services that cannot be immediatly consumed by Silverlight. This extract work is performed by a mediation layer, materialized in the schema below by the &lt;STRONG&gt;Services Gateway. Moreover&lt;/STRONG&gt;, the Services Gateway in the Customer scenario &lt;STRONG&gt;can enforce the alignement of the incoming messages&lt;/STRONG&gt; with the entreprise governance policies. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Authentication &amp;amp; authorization is required&lt;/STRONG&gt; for Line of Business Applications to secure read and write access to Entreprise Data. &lt;STRONG&gt;Form based&lt;/STRONG&gt; authentication would be the preferred way in this scenario. If you need Claim based authentication, take a look at the &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2b-scenario-partner-env.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2b-scenario-partner-env.aspx"&gt;B2B&lt;/A&gt; scenario. &lt;/LI&gt;
&lt;LI&gt;A cross domain security file is required to access the Services Gateway&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2BscenarioPartnerEnv_A878/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2BscenarioPartnerEnv_A878/image_4.png"&gt;&lt;IMG title=image height=239 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2BscenarioPartnerEnv_A878/image_thumb_1.png" width=347 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2BscenarioPartnerEnv_A878/image_thumb_1.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/ScenarioD2DDeveloperEnv_E51C/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/ScenarioD2DDeveloperEnv_E51C/image_2.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We plan to document this scenario by extending the “B2E with mediation” scenario, with Form Based Authentication &amp;amp; Authorization constraints. If you have technical requirements not list here, there’s good chance the B2C scenario can be enriched from the B2B scenario.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8793404" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/XML_2F00_REST/default.aspx">XML/REST</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/SOAP_2F00_RPC/default.aspx">SOAP/RPC</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Interoperability/default.aspx">Interoperability</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Cross+Domain/default.aspx">Cross Domain</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/B2C/default.aspx">B2C</category></item><item><title>B2B scenario : Partner Environment</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2b-scenario-partner-env.aspx</link><pubDate>Thu, 31 Jul 2008 13:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8793123</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/8793123.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=8793123</wfw:commentRss><description>&lt;P&gt;The B2B scenario corresponds to Enterprise Web Services exposed to a partner through a Rich Client application, traditionnaly built with some dynamic HTML/AJAX technology running on the server side, that &lt;STRONG&gt;have been elected to leverage the Silverlight capabilities&lt;/STRONG&gt; (enriched user experience, vector based contents, scaling, rich media…).&lt;/P&gt;
&lt;P&gt;As listed in &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/silverlight-scenarios-for-rich-internet-applications.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/silverlight-scenarios-for-rich-internet-applications.aspx"&gt;Silverlight scenarios for Rich Internet Applications&lt;/A&gt;, the following constraints apply to the Partner Environment scenario :&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Infrastructure security is mandatory : it includes &lt;STRONG&gt;a DMZ&lt;/STRONG&gt; to protect the Web Server and access to the Web Services &lt;STRONG&gt;and SSL/HTTPS communications &lt;/STRONG&gt;to protect the confidential data owned by your enterprise and shared with your partner. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Protocol adaptation is required if&lt;/STRONG&gt; the application is interfaced with pre-existing Web Services that cannot be immediatly consumed by Silverlight. This extract work is performed by a mediation layer, materialized in the schema below by the &lt;STRONG&gt;Services Gateway. Moreover&lt;/STRONG&gt;, the Services Gateway in the Customer scenario &lt;STRONG&gt;can enforce the alignement of the incoming messages&lt;/STRONG&gt; with the entreprise governance policies. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Authentication &amp;amp; authorization is required&lt;/STRONG&gt; to secure read and write access to Entreprise Data. &lt;STRONG&gt;Claim based&lt;/STRONG&gt; authentication would be the preferred way in this scenario. If you want wish to use Form based authentication, have a look at the &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2c-scenario-customer-environment.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2c-scenario-customer-environment.aspx"&gt;B2C&lt;/A&gt; scenario. &lt;/LI&gt;
&lt;LI&gt;A cross domain security file is required to access the Services Gateway if not host on the Site of Origin.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2BscenarioPartnerEnv_A878/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2BscenarioPartnerEnv_A878/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=263 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2BscenarioPartnerEnv_A878/image_thumb.png" width=383 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2BscenarioPartnerEnv_A878/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/ScenarioD2DDeveloperEnv_E51C/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/ScenarioD2DDeveloperEnv_E51C/image_2.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We plan to document this scenario by extending the “B2E with mediation” scenario with a Services Gateway (such as &lt;A href="http://www.codeplex.com/servicesengine" mce_href="http://www.codeplex.com/servicesengine"&gt;Managed Services Engine&lt;/A&gt;)&amp;nbsp; and SSL/HTTPS.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8793123" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/XML_2F00_REST/default.aspx">XML/REST</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/SOAP_2F00_RPC/default.aspx">SOAP/RPC</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Interoperability/default.aspx">Interoperability</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Cross+Domain/default.aspx">Cross Domain</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/B2B/default.aspx">B2B</category></item><item><title>B2E scenario : Intranet Environment</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2e-scenario-intranet-environment.aspx</link><pubDate>Thu, 31 Jul 2008 12:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8793070</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/8793070.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=8793070</wfw:commentRss><description>&lt;P&gt;The B2E scenario corresponds to &lt;STRONG&gt;internal Web applications&lt;/STRONG&gt;, traditionnaly built with some dynamic HTML/AJAX technology running on the server side, that &lt;STRONG&gt;have been elected to leverage the Silverlight capabilities&lt;/STRONG&gt; (enriched user experience, vector based contents, scaling, rich media…).&lt;/P&gt;
&lt;P&gt;As listed in &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/silverlight-scenarios-for-rich-internet-applications.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/silverlight-scenarios-for-rich-internet-applications.aspx"&gt;Silverlight scenarios for Rich Internet Applications&lt;/A&gt;, the following constraints apply to the Intranet Environment scenario :&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Infrastructure security is optional as we are in a IT governed environment,&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Protocol adaptation is required if the application is interfaced with pre-existing Web Services&lt;/STRONG&gt; that cannot be immediatly consumed by Silverlight. This extract work is performed by a mediation layer, materialized in the schema below by the &lt;STRONG&gt;Services Gateway&lt;/STRONG&gt; .&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Authentication &amp;amp; authorization is required&lt;/STRONG&gt; for Line of Business Applications to secure read and write access to Entreprise Data. &lt;STRONG&gt;Windows integrated authentication&lt;/STRONG&gt; would be the preferred way for an intranet scenario. If you want wish to use Form or Claim based authentication, take a look at the &lt;A class="" href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2b-scenario-partner-env.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2b-scenario-partner-env.aspx"&gt;B2B&lt;/A&gt; and &lt;A class="" href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2c-scenario-customer-environment.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2c-scenario-customer-environment.aspx"&gt;B2C&lt;/A&gt; scenarios.&lt;/LI&gt;
&lt;LI&gt;A cross domain security file is needed&amp;nbsp;if the Services Gateway&amp;nbsp;is implemented or&amp;nbsp;if the Site Of Origin does not host the Web Services (as in interoperability scenarios where the Site of Origin and the Web Services rely on two different technologies).&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2EScenarioIntranetEnvironment_9397/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2EScenarioIntranetEnvironment_9397/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=202 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2EScenarioIntranetEnvironment_9397/image_thumb.png" width=278 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2EScenarioIntranetEnvironment_9397/image_thumb.png"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2EScenarioIntranetEnvironment_9397/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2EScenarioIntranetEnvironment_9397/image_4.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=203 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2EScenarioIntranetEnvironment_9397/image_thumb_1.png" width=283 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/B2EScenarioIntranetEnvironment_9397/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/ScenarioD2DDeveloperEnv_E51C/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/ScenarioD2DDeveloperEnv_E51C/image_2.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We plan to experiment SOAP/RPC and XML/REST configuration in Full Windows, Full Java and Mixt environment. &lt;/P&gt;
&lt;P&gt;We’ll also demonstrate how Web Services invoked from Silverlight can leverage the Authentication &amp;amp; Authentication facilities provided by IIS/ASP.NET through interoperabiliy.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8793070" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/XML_2F00_REST/default.aspx">XML/REST</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/SOAP_2F00_RPC/default.aspx">SOAP/RPC</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Interoperability/default.aspx">Interoperability</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Cross+Domain/default.aspx">Cross Domain</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/B2E/default.aspx">B2E</category></item><item><title>What are those SOAP/RPC and XML/REST styles ?</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/30/what-are-those-soap-rpc-and-xml-rest-styles.aspx</link><pubDate>Wed, 30 Jul 2008 10:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8791184</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/8791184.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=8791184</wfw:commentRss><description>&lt;P&gt;In the Silverlight world, the sole protocol you need to care about is the HTTP protocol. Yet, you can take 2 directions to send and retreive messages from a Silverlight Rich Client application. &lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;SOAP/RPC style&lt;/STRONG&gt; leverages the SOAP specifications and the Remote Procedure Call paradigm (ie, a request message is composed of an operation + arguments, and the response corresponds to a structure of data. Both request and response are formatted in XML in a SOAP enveloppe which enriches the communcation). &lt;/P&gt;
&lt;P&gt;On the client side, the SOAP/RPC style is implemented by a subset of the .Net Windows Communication Foundation framework. The basicHttpBinding is the unique supported binding in Silverlight 2 beta 2, and several restrictions apply : SOAP 1.1 only, no WS-Adressing, no WS-* specification. Why those restrictions ? because we want to keep the Silverlight runtime as light as possible (a standard .Net full WCF runtime is about 11 Mo !).&lt;/P&gt;
&lt;P&gt;On the server side, you're free to use any SOAP framework and technology as this is a promise of the Services paradigm ... as long as you conform to the restrictions brought by the Silverlight client (see above), otherwise, your Silverlight client will never get a chance to consume your data. &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;For the scope of the implementations detailled on this blog, we chose server side frameworks that we thought were dominant in their respective community, even if we do not have precise measure about it. Moreover, we wanted free frameworks to allow anybody to replay the samples.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows : the &lt;STRONG&gt;WCF framework&lt;/STRONG&gt; which comes with .Net 3.5. The 3.5 version gives us nice SOAP and REST capabilities + the Stream support which enables us to service client access policy file directly from WCF (no HTTP server needed).&lt;/LI&gt;
&lt;LI&gt;Java : the &lt;STRONG&gt;JAX-WS Reference Implementation from Sun&lt;/STRONG&gt; that comes with Java version 6. We have worked a year ago about the &lt;A href="http://www.microsoft.com/france/interop/themes/applications/20070627-services-web-NET-Java/default.mspx" mce_href="http://www.microsoft.com/france/interop/themes/applications/20070627-services-web-NET-Java/default.mspx"&gt;compatibility issues between WCF and JAX-WS&lt;/A&gt;, thus we feel rather comfortable with it. JAX-WS may be hosted in any Application Server. Again, we choose a free and popular one : Tomcat, from the &lt;A href="http://port25.technet.com/archive/2008/07/25/oscon2008.aspx" mce_href="http://port25.technet.com/archive/2008/07/25/oscon2008.aspx"&gt;Apache foundation which Microsoft came to sponsor&lt;/A&gt; during the course of our experimentations (welcome Apache, bring us great support and performance for the Windows platform)&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;By &lt;STRONG&gt;XML/REST style&lt;/STRONG&gt;, we mean the retrieval of an XML formatted message in the REST philosophy, where the operation paradigm is replaced by a resource paradigm so that retrieving data maps to a resource invocation through the couple (HTTP ORDER + URI). For example, "HTTP GET /clients/name" or "HTTP POST /clients [XML data coresponding to a new client] . The format of the response can be of any kind, it is declared in the "Content-Type" HTTP header. For the scope of this blog which is RIA oriented, we'll stick to XML as we are focusing on fetching and updating Data (we could have also used JSON but XML is a preferred way for Rich Internet Applications because if its schema / typing capability).&lt;/P&gt;
&lt;P&gt;On the client side, the XML/REST style requires the capability to invoke HTTP commands, and getting the results in Async mode to ensure the User Interface remains responsive (ie, UI does not get stuck by network or service latencies. For your information the SOAP/RPC style is also implemented on the client side with an Async pattern, behind the scene). &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;If you are a Restafarian, you are wondering how much of your REST programing skills you can leverage with Silverlight ? Well, Silverlight 2 Beta 2 restricts to the GET and POST commands of the HTTP protocol. Moreover, you can not control the set of HTTP headers you can transmit to your RESTful service : the sole HTTP header you can modify in beta 2 is the Content-Type.&lt;/P&gt;
&lt;P&gt;From an implementation point of view, Silverlight 2 beta 2 provides two programmatic interfaces : WebClient and HttpWebRequest. Which one should you use ? The &lt;A href="http://msdn.microsoft.com/en-us/library/cc645049(VS.95).aspx#WebClient_and_HttpWebRequest" mce_href="http://msdn.microsoft.com/en-us/library/cc645049(VS.95).aspx#WebClient_and_HttpWebRequest"&gt;SL2beta2 breaking changes&lt;/A&gt; brings the answer. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;"&lt;EM&gt;The updated WebClient API provides a much fuller featured WebClient. This changes the guidance around which networking APIs to use: &lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;EM&gt;WebClient: Use this class when you want an easy to use, event-based API. &lt;/EM&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;EM&gt;HttpWebRequest: Use this class when you want a delegate based model and/or the ability to progressively read the response stream. "&lt;/EM&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;To learn more about pratical issues with XML/REST style invocations, read "&lt;A class="" href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/30/Limitations-when-accessing-REST-services-from-Silverlight.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/30/Limitations-when-accessing-REST-services-from-Silverlight.aspx"&gt;Limitations when accessing REST services from Silverlight&lt;/A&gt;" by Ronny.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;On the server side, all we need is a REST style compliant framework. The Windows and Java communities provide us with several options :&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Microsoft delivers WCF and "Astoria, aka &lt;A href="http://astoria.mslivelabs.com/" mce_href="http://astoria.mslivelabs.com/"&gt;ADO.NET Data Services&lt;/A&gt;". The latter proposes a great &lt;A href="http://blogs.msdn.com/astoriateam/archive/2008/04/24/using-rest-services-in-silverlight.aspx" mce_href="http://blogs.msdn.com/astoriateam/archive/2008/04/24/using-rest-services-in-silverlight.aspx"&gt;support for Silverlight 2&lt;/A&gt; but that is out of the scope of this blog... therefore, we turned to &lt;STRONG&gt;WCF REST capabilities&lt;/STRONG&gt; which come with .Net 3.5.&lt;/LI&gt;
&lt;LI&gt;Among the Java REST initiative, we had a look at the SUN versus opensouce alternative. It turned out that &lt;STRONG&gt;the Reslet framework&lt;/STRONG&gt; developped by &lt;A href="http://www.restlet.org/" mce_href="http://www.restlet.org/"&gt;Jerome Louvel&lt;/A&gt; provides a great REST experience with a unique French flavor. Special thanks to &lt;A href="http://blogpro.toutantic.net/" mce_href="http://blogpro.toutantic.net/"&gt;Aurelien Pelletier&lt;/A&gt; for making us aware of this technology.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8791184" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/XML_2F00_REST/default.aspx">XML/REST</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/SOAP_2F00_RPC/default.aspx">SOAP/RPC</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Silverlight scenarios for Rich Internet Applications</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/silverlight-scenarios-for-rich-internet-applications.aspx</link><pubDate>Mon, 28 Jul 2008 15:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8784089</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/8784089.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=8784089</wfw:commentRss><description>&lt;P&gt;From the architecture described in the previous post &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/a-cup-of-silverlight-a-drop-of-architecture.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/a-cup-of-silverlight-a-drop-of-architecture.aspx"&gt;a cup of Silverlight, a drop of Architecture&lt;/A&gt;, you may experience several technical requirements : &lt;/P&gt;
&lt;UL dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;LI&gt;&lt;STRONG&gt;Infrastructure Security&lt;/STRONG&gt; 
&lt;UL&gt;
&lt;LI&gt;DMZ (if the application is internet facing), &lt;/LI&gt;
&lt;LI&gt;Secured transport (HTTPS) if private communication has to be enforced (Mandatory in B2B and B2C environments)&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Application Security&lt;/STRONG&gt; 
&lt;UL&gt;
&lt;LI&gt;Authentication may be Form, Windows or Claim based depending on the consumer (employees, subcontractors, partners or customers) &lt;/LI&gt;
&lt;LI&gt;Authorization may be role based from various repositories (Active Directory, Claims, SQL Database)&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Application Topology&lt;/STRONG&gt; 
&lt;UL&gt;
&lt;LI&gt;The consumed Web Services are likely to be hosted on a distinct node in case of re-use or interop scenario. &lt;/LI&gt;
&lt;LI&gt;In new project development scenario, the Site of Origin may also host the Web Services.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Services Gateway and Protocols Adaptation&lt;/STRONG&gt; 
&lt;UL&gt;
&lt;LI&gt;The consumed Web Services may not be directly accessible due to security topology (ie, requires some kind of Gateway, Reverse Proxy) &lt;/LI&gt;
&lt;LI&gt;In case of Web Services re-use, they are likely to be exposed through protocols and/or formats incompatible with the Silverlight WCF client capabilities (ie, requires some kind of Mediation, Adaptation)&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;To comply with these Real World variants, we propose to categorize Silverlight Rich Client Applications into scenarios that you 'll may mix to conform to your requirements.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/SilverlightscenariosforRichInternetAppli_8D49/image_4.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=465 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/SilverlightscenariosforRichInternetAppli_8D49/image_thumb_1.png" width=572 border=0&gt;&lt;/A&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/scenario-d2d-developer-env.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/scenario-d2d-developer-env.aspx"&gt;&lt;STRONG&gt;D2D&lt;/STRONG&gt; (Developer To Developer) - Development Env&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2e-scenario-intranet-environment.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2e-scenario-intranet-environment.aspx"&gt;&lt;STRONG&gt;B2E &lt;/STRONG&gt;(Business To Employee) - Silverlight App on an Intranet&lt;/A&gt;, eventually consuming pre-existing Web Services&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2b-scenario-partner-env.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2b-scenario-partner-env.aspx"&gt;&lt;STRONG&gt;B2B&lt;/STRONG&gt; (Business to Business) - Silverlight App delivered to partners&lt;/A&gt;, consuming pre-existing Web Services with federated security enforcement&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2b-scenario-partner-env.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/b2b-scenario-partner-env.aspx"&gt;&lt;STRONG&gt;B2C &lt;/STRONG&gt;(Business to Consumer) - Silverlight App delivered to customers&lt;/A&gt;, eventually consuming pre-existing Web Services with form based security enforcement &lt;/P&gt;
&lt;P&gt;In future posts, we discuss the architecture and an implementation sample with interoperability in mind.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8784089" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/XML_2F00_REST/default.aspx">XML/REST</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/SOAP_2F00_RPC/default.aspx">SOAP/RPC</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/D2D/default.aspx">D2D</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/B2B/default.aspx">B2B</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/B2E/default.aspx">B2E</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/B2C/default.aspx">B2C</category></item><item><title>A cup of Silverlight, a drop of Architecture</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/a-cup-of-silverlight-a-drop-of-architecture.aspx</link><pubDate>Mon, 28 Jul 2008 13:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8783557</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/8783557.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=8783557</wfw:commentRss><description>&lt;P&gt;We discussed before &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/24/silverlight-from-a-technical-stand-point.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/24/silverlight-from-a-technical-stand-point.aspx"&gt;what Silverlight is about from a technical standpoint&lt;/A&gt;. Moving from theory to implementation, let's discuss today the architectural challenges when building a Silverlight App. The following considerations apply to Siliverlight 2 beta 2 (current version of Silverlight as of July 2008) : &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;A SilverLight app runs locally in the browser which renders a Web page composed of HTML code and a XAP archive. This archive contains presentation code (XAML), logic code (JavaScript, .Net or Dynamic) and Resources (Images… that may be accessed for Silverlight logic code). &lt;/LI&gt;
&lt;LI&gt;The Silverlight app may interact with Services in two ways and through 5 different API’s 
&lt;UL&gt;
&lt;LI&gt;HTTP stack 
&lt;UL&gt;
&lt;LI&gt;HTTP GET, POST / REST style : WebClient, HttpWebRequest &lt;/LI&gt;
&lt;LI&gt;SOAP over HTTP : WCF client&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;IP Socket 
&lt;UL&gt;
&lt;LI&gt;TCP : System.Net TCP Listener &lt;/LI&gt;
&lt;LI&gt;Socket : System.Net Sockets &lt;/LI&gt;
&lt;LI&gt;Duplex Channel: As a bonus, Silverlight 2 beta 2 brings among its set of news features, a duplex channel communication through its WCF support.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;As we focus on Silverlight interop in this blog, we will detail the HTTP aspects only. Here is some global consideration from what we've learned so far :&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/AcupofSilverlightadropofArchitecture_F98F/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=414 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/AcupofSilverlightadropofArchitecture_F98F/image_thumb.png" width=537 border=0&gt;&lt;/A&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;To fully understand the above, may we bring some complementary vocabulary and explanations : &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;SOO - Site Of Origin designates the Web Site from which the XAP is downloaded, ie, your HTTP Web Server &lt;/LI&gt;
&lt;LI&gt;The Business Logic is composed of the Web Services exposed to your SL client.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The Web Services may be running on the Site Of Origin or not. Depending on this topology, your security settings need to be adapted by adding a cross domain access policy at the root of the Web Services host endpoint. This secures the invocation of services from a Silverlight client whose Site of Origin does not host the requested services endpoint. For more information about cross domain, read scorbs post "&lt;A title='Permanent Link to "Silverlight HTTP Networking Stack - Part 2 (Cross Domain Communication Overview)"' href="http://scorbs.com/2008/04/15/silverlight-http-networking-stack-part-2-cross-domain-communication-overview/" rel=bookmark&gt;Silverlight HTTP Networking Stack - Part 2 (Cross Domain Communication Overview)&lt;/A&gt;"&lt;/P&gt;
&lt;P&gt;As the Web brings two services styles (SOAP/RPC &amp;amp; XML/REST), Silverlight supports both. To decide which one to use for your Silverlight data interactions, read "&lt;A id=bp___v___r___postlist___EntryItems_ctl01_PostTitle href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/30/what-are-those-soap-rpc-and-xml-rest-styles.aspx"&gt;&lt;FONT color=#176db5&gt;What are those SOAP/RPC and XML/REST styles ?&lt;/FONT&gt;&lt;/A&gt; ".&lt;/P&gt;
&lt;P&gt;From those considerations, we propose to decline the Silverlight Architecte described above into Real World Enterprise Scenarios focusing on &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/tags/D2D/default.aspx"&gt;&lt;FONT color=#176db5&gt;D2D&lt;/FONT&gt;&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/tags/B2E/default.aspx"&gt;&lt;FONT color=#176db5&gt;B2E&lt;/FONT&gt;&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/tags/B2B/default.aspx"&gt;&lt;FONT color=#176db5&gt;B2B&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;or &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/tags/B2C/default.aspx"&gt;&lt;FONT color=#176db5&gt;B2C&lt;/FONT&gt;&lt;/A&gt; scenarios: &lt;A id=bp___v___r___postlist___EntryItems_ctl02_PostTitle href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/28/silverlight-scenarios-for-rich-internet-applications.aspx"&gt;&lt;FONT color=#176db5&gt;Silverlight scenarios for Rich Internet Applications&lt;/FONT&gt;&lt;/A&gt;,&lt;/P&gt;
&lt;P&gt;To finish with, let's discuss interoperability. We named our Web &amp;amp; App Server layer as Interaction &amp;amp; Transactional Services to refer to Microsoft SOA Reference Architecture Model where 2 nature of SOA are introduced : SOA to interact and SOA to transact, the two being connected through interop channels. This is where our Silverlight plus ... Java, .Net, PHP, Ruby... comes into play.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/ssfartz" mce_href="http://blogs.msdn.com/ssfartz"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=299 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/AcupofSilverlightadropofArchitecture_A1F6/image5.png" width=456 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/AcupofSilverlightadropofArchitecture_A1F6/image_5.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8783557" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Intro/default.aspx">Intro</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/XML_2F00_REST/default.aspx">XML/REST</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/SOAP_2F00_RPC/default.aspx">SOAP/RPC</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Interoperability/default.aspx">Interoperability</category></item></channel></rss>