<?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>The .NET Endpoint : Silverlight</title><link>http://blogs.msdn.com/endpoint/archive/tags/Silverlight/default.aspx</link><description>Tags: Silverlight</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>New Web Services features in Silverlight 4 Beta </title><link>http://blogs.msdn.com/endpoint/archive/2009/11/18/new-web-services-features-in-silverlight-4-beta.aspx</link><pubDate>Wed, 18 Nov 2009 18:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9924527</guid><dc:creator>.NET Connected Framework Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9924527.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9924527</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Cross-posted from the &lt;A href="http://blogs.msdn.com/silverlightws/" mce_href="http://blogs.msdn.com/silverlightws/"&gt;Silverlight Web Services Team Blog&lt;/A&gt;.&lt;/EM&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This morning at PDC ’09 ScottGu just announced the availability of Silverlight 4 Beta. Later on today I am going on to present the latest improvements around networking and web services and I’ll link to the full talk as soon as it is available online. In this post I’ll provide a quick summary of today’s announcements, with more detail to follow.&lt;/P&gt;
&lt;P&gt;On the high level, we are announcing an exciting alignment between the different web services stacks in Silverlight. ADO.NET Data Services and .NET RIA Services are being rebranded as WCF Data Services and WCF RIA Services to reflect the fact that both technologies are being built out as programming models on top of WCF. In a way, this is not really major news; to you as a developer, pretty much everything stays the same, and you can continue using your favorite technology, whether it is straight WCF, or WCF RIA Services or WCF Data Services. &lt;/P&gt;
&lt;P&gt;RIA Services and Data Services give you productive patterns for specific kinds of services and applications, hiding away some of the complexity of using WCF directly. The power of WCF is still there for you under the covers, if you need to modify some setting to your liking.&lt;/P&gt;
&lt;P&gt;Specifically within the core WCF model, Silverlight 4 Beta has support for a brand new binding: &lt;STRONG&gt;NetTcp&lt;/STRONG&gt;. This binding lets Silverlight talk to WCF services using a high-performance TCP pipe, using a duplex message pattern. In Silverlight, the binding is built on top of the sockets support that’s already there since Silverlight 2, so we inherit the security requirements of the Silverlight sockets API. More specifically, the service needs to be hosted in a given port range (4502 – 4534) and needs to expose a policy responder on port 943. One more thing to be aware of is that the security support and the streamed programming model for NetTcp available in WCF on the desktop framework are not available in Silverlight 4 Beta.&lt;/P&gt;
&lt;P&gt;We’ll have a lot more content for you coming up soon, including the code from my talk today. If you want to get your hands dirty right away, go get the Silverlight 4 Beta, and then try &lt;A href="http://msdn.microsoft.com/en-us/library/cc645026(VS.96).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc645026(VS.96).aspx"&gt;the steps this how-to in our MSDN documentation, which has already been updated and show usage for NetTcp&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;More information:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/brada/archive/2009/11/18/welcome-to-wcf-ria-services-beta.aspx" mce_href="http://blogs.msdn.com/brada/archive/2009/11/18/welcome-to-wcf-ria-services-beta.aspx"&gt;Brad Abrams on WCF RIA Services&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/astoriateam/archive/2009/11/17/simplifying-our-n-tier-development-platform-making-3-things-1-thing.aspx" mce_href="http://blogs.msdn.com/astoriateam/archive/2009/11/17/simplifying-our-n-tier-development-platform-making-3-things-1-thing.aspx"&gt;Mike Flasko on WCF Data Services&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Thanks, and looking forward to your feedback!&lt;BR&gt;Yavor Georgiev&lt;BR&gt;Program Manager,&amp;nbsp;Silverlight&lt;BR&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924527" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/PDC/default.aspx">PDC</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Improving the performance of web services in Silverlight 3 Beta</title><link>http://blogs.msdn.com/endpoint/archive/2009/06/07/improving-the-performance-of-web-services-in-silverlight-3-beta.aspx</link><pubDate>Mon, 08 Jun 2009 06:32:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9707407</guid><dc:creator>.NET Connected Framework Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9707407.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9707407</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;Cross-posted from the &lt;a href="http://blogs.msdn.com/silverlightws"&gt;Silverlight Web Services Team Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Silverlight 3 Beta introduces a new way to improve the performance of web services. You have all probably used the &lt;em&gt;Silverlight-enabled WCF Service&lt;/em&gt; item template in Visual Studio to create a WCF web service, and then used the &lt;em&gt;Add Service Reference&lt;/em&gt; command in your Silverlight application project in order to access the web service. In SL3, the item template has undergone a small change that turns on the new &lt;strong&gt;binary message encoder&lt;/strong&gt;, which significantly improves the performance of the WCF services you build. Note that this is the same binary encoder which has been available in .Net since the release of WCF, so all WCF developers will find the object model very familiar.&lt;/p&gt;  &lt;p&gt;The best part is that this is done entirely in the service configuration file (&lt;em&gt;Web.config&lt;/em&gt;) and does not affect the way you use the service. (Check out &lt;a href="http://blogs.msdn.com/silverlightws/archive/2009/03/20/what-s-new-with-web-services-in-silverlight-3-beta.aspx"&gt;this post&lt;/a&gt; for a brief description of exactly what the change is.)&lt;/p&gt;  &lt;p&gt;I wanted to share some data that shows exactly how noticeable this performance improvement is, and perhaps convince some of you to consider migrating your apps from SL2 to SL3. &lt;/p&gt;  &lt;p&gt;When Silverlight applications use web services, XML-based messages (in the SOAP format) are being exchanged. In SL2, those messages were always encoded as plain text when being transmitted; you could open a HTTP traffic logger and you would be able to read the messages. However using plain text is far from being a compact encoding when sending across the wire, and far from being fast when decoding on the server side. When we use the binary encoder, the messages are encoded using a WCF binary encoding, which provides two main advantages: increased server throughput and decreased message size.&amp;#160; &lt;/p&gt;  &lt;h3&gt;Increased server throughput&lt;/h3&gt;  &lt;p&gt;Let’s examine the following graph (hat tip to &lt;a title="Greg Leake&amp;#39;s blog" href="http://blogs.msdn.com/gregleak/"&gt;Greg Leake&lt;/a&gt; of &lt;a title="StockTrader website" href="http://msdn.microsoft.com/stocktrader"&gt;StockTrader&lt;/a&gt; fame for collecting this data). Here is the scenario we measure: the client sends a payload, the server receives it and sends it back to the client. Many clients are used to load the service up to its peak throughput. We run the test once using the text-based encoding and once using the new binary encoding and compare the peak throughput at the sever. We do this for 2 message sizes: in the smaller size the payload an array with 20 objects, and in the bigger one the payload is an array with 100 objects.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Some more details for the curious: &lt;/strong&gt;The service is configured to ensure no throttling is happening, and a new instance of the service is created for every client call (known as PerCall instancing). There are ten physical clients driving load, each running many threads hitting service in tight loop (but with small 0.1 second think time between requests) using a shared channel to reduce client load. The graph measures peak throughput on the service at 100% CPU saturation. Note that in this test we did not use Silverlight clients but regular .Net clients. Since we are measuring &lt;em&gt;server throughput&lt;/em&gt; it is not significant what the clients are. &lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/photos/silverlightws/images/9703322/original.aspx" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;When sending the smaller message we see a &lt;strong&gt;24% increase in server throughput&lt;/strong&gt;, and with the larger message size we see a &lt;strong&gt;71% increase in server throughput&lt;/strong&gt;. As the message complexity continues to grow, we should see even more significant gains from using the binary encoder.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What does that mean to you?&lt;/strong&gt; If you run a service that is being used by Silverlight clients and you exchange non-trivial messages, you can support significantly more clients if the clients use SL3’s binary encoding. As usage of your service increases, that could mean being able to save on buying and deploying extra servers.&lt;/p&gt;  &lt;h3&gt;Decreased message size&lt;/h3&gt;  &lt;p&gt;Another feature of the binary encoder is that since messages sent on the wire are no longer plain-text, you will see a reduction in their average size. Let’s clarify this point: the main reason you would use the binary encoding is to increase the service throughput, as discussed in the previous section. The decrease in message size is a nice side-effect, but let’s face it: you can accomplish the same effect by turning on compression on the HTTP level.&lt;/p&gt;  &lt;p&gt;This test was far less comprehensive than the previous one and we did it ad-hoc on my co-worker’s office machine. We took various objects inside a Silverlight control, and turned them into the same kind of SOAP messages that get sent to the service. We did this using the plain-text encoding and using binary encoding and then we compared the size of the messages in bytes. Here are our results:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/photos/silverlightws/images/9703323/original.aspx" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The takeaway here is that the reduction of message size depends on the nature of the payload: sending large instances of system types (for example a long String) will result in a modest reduction, but &lt;strong&gt;the largest gains occur when complex object graphs are being encoded &lt;/strong&gt;(for example objects with many members, or arrays).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What does this mean to you?&lt;/strong&gt; If you run a web service and you pay your ISP for the traffic your service generates, using binary encoding will reduce the size of messages on the wire, and hopefully lower your bandwidth bills as traffic to your service increases.&lt;/p&gt;  &lt;h3&gt;Conclusion&lt;/h3&gt;  &lt;p&gt;We are confident that binary encoding is the right choice for most &lt;strong&gt;backend WCF service&lt;/strong&gt; scenarios: you should never see a regression over text encoding when it comes to server throughput or message size; hopefully you will see performance gains in most cases. This is why the binary encoder is the new default in the &lt;em&gt;Silverlight-enabled WCF Service&lt;/em&gt; item template in Visual Studio.&lt;/p&gt;  &lt;p&gt;An important note: binary encoding is only supported by WCF services and clients, and so it is not the right choice if you aren’t using WCF end-to-end. If your service needs to be accessed by non-WCF clients, using binary encoding may not be possible. The binary AMF encoding used by Adobe Flex is similarly restricted to services that support it.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9707407" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Check us out at TechEd North America 2009</title><link>http://blogs.msdn.com/endpoint/archive/2009/04/20/check-us-out-at-teched-north-america-2009.aspx</link><pubDate>Mon, 20 Apr 2009 10:35:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9556348</guid><dc:creator>.NET Connected Framework Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9556348.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9556348</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;Cross-posted from the &lt;a title="Silverlight Web Services Team" href="http://blogs.msdn.com/silverlightws"&gt;Silverlight Web Services Team&lt;/a&gt; blog.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I hope you enjoy the content we post on this blog. I’ll be giving a talk at the upcoming TechEd conference in LA, going through some Silverlight 3 content similar to what we have been posting here. If you’re attending TechEd, check out:&lt;/p&gt;  &lt;blockquote&gt;   &lt;h4&gt;SOA03-INT Interacting with Web Services Using Microsoft Silverlight&lt;/h4&gt;    &lt;p&gt;Yavor Georgiev      &lt;br /&gt;Tue 5/12 | 4:30 PM-5:45 PM | Blue Theater 2       &lt;br /&gt;300 - Advanced, Middle Tier Platform and Tools, SOA and Business Processes, TLC Interactive Theater&lt;/p&gt;    &lt;p&gt;Learn how easy it is to utilize POX, REST, RSS, ATOM, JSON, and SOAP services in your Silverlight 2 mash-up application. Hear best practices for developing and consuming secure services within and across domain boundaries. Experience new features in the upcoming Silverlight 3 release including optimized binary communication format, improved support for server- to-client &amp;quot;push&amp;quot; scenarios and new security features.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you have not registered, you still have the opportunity to do so:&lt;/p&gt;  &lt;p&gt;&lt;a title="Register for TechEd 09" href="http://www.msteched.com/teched/registration-info.aspx"&gt;&lt;img border="0" src="http://www.msteched.com/teched/img/badges/speaker/TENA_blgr2_seeme.gif" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you do attend, make sure you let me know you’re a reader of our blog… I’d love to hear any feedback you have.&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;-Yavor&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9556348" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/TechEd/default.aspx">TechEd</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Hosting WCF Services in Windows Azure</title><link>http://blogs.msdn.com/endpoint/archive/2009/04/07/hosting-wcf-services-in-windows-azure.aspx</link><pubDate>Wed, 08 Apr 2009 02:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9537218</guid><dc:creator>.NET Connected Framework Team</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9537218.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9537218</wfw:commentRss><description>&lt;P&gt;Hi folks, &lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.microsoft.com/azure" mce_href="http://www.microsoft.com/azure"&gt;Windows Azure&lt;/A&gt; is Microsoft's cloud services operating system, based on Windows Server 2008 and .Net Framework 3.5 SP1. Azure is currently in a Community Technology Preview stage and you can register and try it out for free on &lt;A class="" href="http://www.microsoft.com/azure/register.mspx" mce_href="http://www.microsoft.com/azure/register.mspx"&gt;this page&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Many of you may have wondered what is the experience of hosting WCF services in the Azure cloud. We have created&amp;nbsp;a full set of samples on our newly launched Code Gallery site:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://code.msdn.microsoft.com/wcfazure" mce_href="http://code.msdn.microsoft.com/wcfazure"&gt;WCF Azure Samples&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The samples show hosting WCF services for use by Silverlight clients and ASP.NET AJAX clients, as well as REST WCF services built using the new &lt;A class="" href="http://msdn.com/wcf/rest" mce_href="http://msdn.com/wcf/rest"&gt;WCF REST Starter Kit&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;You may also find some useful workarounds on the &lt;A class="" href="http://code.msdn.microsoft.com/wcfazure/Wiki/View.aspx?title=KnownIssues&amp;amp;referringTitle=Home" mce_href="http://code.msdn.microsoft.com/wcfazure/Wiki/View.aspx?title=KnownIssues&amp;amp;referringTitle=Home"&gt;WCF known issues page&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=wcfazure&amp;amp;DownloadId=5304" mce_src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=wcfazure&amp;amp;DownloadId=5304"&gt;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;-Yavor Georgiev&lt;BR&gt;Program Manager, Connected Framework Team&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9537218" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/REST/default.aspx">REST</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/azure/default.aspx">azure</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/ajax/default.aspx">ajax</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/asp.net+ajax/default.aspx">asp.net ajax</category></item><item><title>What's new with web services in Silverlight 3 Beta </title><link>http://blogs.msdn.com/endpoint/archive/2009/03/20/what-s-new-with-web-services-in-silverlight-3-beta.aspx</link><pubDate>Fri, 20 Mar 2009 23:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9493407</guid><dc:creator>.NET Connected Framework Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9493407.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9493407</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Cross-posted from the &lt;/EM&gt;&lt;A href="http://blogs.msdn.com/silverlightws/" mce_href="http://blogs.msdn.com/silverlightws/"&gt;&lt;FONT color=#78798a&gt;&lt;EM&gt;Silverlight Web Services Team Blog&lt;/EM&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;EM&gt;.&lt;/EM&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Silverlight 3 beta comes with a set of exciting web services features that address key customer requests.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Binary message encoding&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In Silverlight 2 the only supported binding was BasicHttpBinding, which encodes outgoing messages as text and sends them over an HTTP transport. This binding is great for interoperability with SOAP 1.1 services and is also easily debuggable since messages can be viewed in plain text on the wire using HTTP debugging tools such as &lt;A title="Fiddler HTTP debugger" href="http://www.fiddlertool.com/" mce_href="http://www.fiddlertool.com/"&gt;Fiddler&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;However as Silverlight applications go into production and grow to scale, service developers start getting concerned with the cost of hosting services. Two things in particular that we are about:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Increased server throughput&lt;/STRONG&gt; - more clients can be&amp;nbsp;connected to a&amp;nbsp;server, which means fewer servers need to be purchased.&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Decreased message size&lt;/STRONG&gt; - smaller message sizes exchanged on the wire means lower bandwidth bills&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Silverlight 3 introduces a binary message encoder, which produces significant improvements in both of the above indicators. A follow-up post is coming with some specific data on the improvements that can be expected.&lt;/P&gt;
&lt;P&gt;Binary encoding is implemented as a custom binding, there is no out-of-the-box binary binding. &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&amp;lt;bindings&amp;gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;customBinding&amp;gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;binding name="binaryHttpBinding"&amp;gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;binaryMessageEncoding /&amp;gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;httpTransport /&amp;gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/binding&amp;gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/customBinding&amp;gt;&lt;BR&gt;&amp;lt;/bindings&amp;gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt"&gt;&amp;lt;endpoint address="" binding="customBinding" bindingConfiguration="binaryHttpBinding"&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;contract="Service" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;
&lt;P&gt;The BinaryMessageEncodingBindingElement can be used as part of any custom binding and so it composes easily to create things like a binary duplex binding.&lt;/P&gt;
&lt;P&gt;The binary encoder offers performance gains over the text encoder, and there should never be any regressions. This is why binary is the new default in backend service scenarios, such as where the &lt;STRONG&gt;Silverlight-enabled WCF Service&lt;/STRONG&gt; item template is used. Therefore the template has been modified to use binary. The interop cases is where binary should not be used (if the client is talking to a non-WCF service), since binary is a WCF-specific encoding: please continue to use BasicHttpBinding with text encoding in those scenarios (for example accessing ASMX services).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Duplex object model simplification&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Duplex is an innovative Silverlight 2 feature which allows the service to send data to the client without the client manually polling for the data ("smart" polling still occurs on the network layer, but the user does not need to know).&amp;nbsp;However there were two significant limitations in the Silverlight&amp;nbsp;2 duplex&amp;nbsp;object model:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Channel programming had to be used and&lt;/LI&gt;
&lt;LI&gt;Serialization was not supported so a Message programming model had to be used.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Silverlight 3 lifts these restrictions and introduces &lt;STRONG&gt;Add Service Reference support for duplex services&lt;/STRONG&gt;.&amp;nbsp;Familiar-looking proxies are now generated, greatly reducing&amp;nbsp;the amount of&amp;nbsp;Silverlight code that is needed to access a duplex service. A simple stock ticker client implementation, which previously took 203 lines of code, &lt;STRONG&gt;can now be reduced to a mere 48 lines of code, a 76% reduction in code size.&lt;/STRONG&gt; Not to mention that the channel-based code was complex and very error-prone due to its use of async patterns. Here is a snippet showing the crux of the new object model, in the context of the stock ticker example:&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Button_Click(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, System.Windows.RoutedEventArgs e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ServiceClient proxy = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; ServiceClient(binding, address);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;proxy.ReceiveCallbackCompleted += &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;EventHandler&lt;/SPAN&gt;&amp;lt;ReceiveCallbackCompletedEventArgs&amp;gt;(proxy_ReceiveCallbackCompleted);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;proxy.StartAsync(symbol.Text);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;void&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; proxy_ReceiveCallbackCompleted(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, ReceiveCallbackCompletedEventArgs e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (e.Error == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;price.Text = e.price.ToString();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;}&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;
&lt;P&gt;Note that receiving the callback from the server is now just a matter of attaching a callback to an event. Also note the fact that we are working with CLR types and not Message objects, so serialization is now enabled. We have updated &lt;A title="Duplex documentation" href="http://msdn.microsoft.com/en-us/library/dd470105(VS.96).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd470105(VS.96).aspx"&gt;our documentation&lt;/A&gt; with&amp;nbsp;a walkthrough of how to use the new object model. In addition, &lt;A title="Duplex chat server" href="http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=2401" mce_href="http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=2401"&gt;Eugene's duplex chat server implementation&lt;/A&gt;, which has proven very popular, has also been updated with the new OM.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Faults support&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In Silverlight 2 if an unexpected exception occurred in the service, the fault would not be propagated to the Silverlight client. Instead of getting&amp;nbsp;the exception propagated to the user,&amp;nbsp;Silverlight would throw an unhelpful&amp;nbsp;&lt;STRONG&gt;CommunicationException&lt;/STRONG&gt; which carries no useful information.&amp;nbsp;There were two reasons for this: (1) faults are returned with a 500 status code, and the browser networking stack prevents Silverlight from reading the body of such a response, and (2) Silverlight did not support he necessary client-side logic to convert the fault message into an exception that can be surfaced to the user. These limitation made it very difficult to debug services from Silverlight. &lt;/P&gt;
&lt;P&gt;In Silverlight 3 Beta&amp;nbsp;limitation (1) is unfortunately still present.&amp;nbsp;To work around this issue&amp;nbsp;&lt;A title="Faults documentation" href="http://msdn.microsoft.com/en-us/library/dd470096(VS.96).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd470096(VS.96).aspx"&gt;our documentation&lt;/A&gt;&amp;nbsp;provides a WCF endpoint behavior, which can be applied to your WCF service to switch the response code from 500 to 200. With this response code the message will be accessible to Silverlight and we can address limitation (2). In Silverlight 3, we have added the necessary client-side OM to surface faults to the user. Look out for helpful &lt;STRONG&gt;FaultException &lt;/STRONG&gt;and &lt;STRONG&gt;FaultException&amp;lt;ExceptionDetail&amp;gt; &lt;/STRONG&gt;exceptions which will help you debug your service. Also please see the documentation page linked earlier for a full description of the faults object model in Silverlight.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;New security mode&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A common scheme used to secure services for use by Silverlight clients is browser-based authentication. However browser-based authetnication is not safe to use if your service is accessible from any domain via a cross-domain policy file. This would expose your service to &lt;A title="Cross Site Request Forgery" href="http://en.wikipedia.org/wiki/Cross-site_request_forgery" mce_href="http://en.wikipedia.org/wiki/Cross-site_request_forgery"&gt;CSRF&lt;/A&gt; type attacks, where cached browser credentials can be used by malicious apps to access your sercure service without the user's knowledge. &lt;/P&gt;
&lt;P&gt;Silverlight 3 introduces a new security mode called &lt;STRONG&gt;TransportSecurityWithMessageCredential &lt;/STRONG&gt;to address this configuration. In this mode, the credentials are included in every outgoing message to the service, and the service verifies those credentials on the SOAP layer. However since the credentials are in plain text inside the message the transport needs to be secure so we use HTTPS.&lt;/P&gt;
&lt;P&gt;A more detailed walktrhough of valid Silverlight security configurations will follow.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Command-line proxy generation&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In Silverlight 2 &lt;STRONG&gt;Add Service Reference &lt;/STRONG&gt;as part of Visual Studio is the only way to generate proxies for Silverlight clients. In Silverlight 3 we are introducing a command-line tool called &lt;STRONG&gt;slsvcutil.exe&lt;/STRONG&gt;, which allows customized command-line proxy generation. Using the tool, proxies can now be generated as part of your build process for greater robustness. The slsvcutil.exe tool is fully described in this &lt;A title="slsvcutil.exe documentation" href="http://msdn.microsoft.com/en-us/library/dd470117(VS.96).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd470117(VS.96).aspx"&gt;documentation topic&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Thanks for reading through this, and please stay tuned for some in-depth posts about these new features.&lt;/P&gt;
&lt;P&gt;Yavor Georgiev&lt;BR&gt;Program Manager, Connected Framework team&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9493407" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/MIX/default.aspx">MIX</category></item><item><title>"Paste XML as Types" in REST Starter Kit</title><link>http://blogs.msdn.com/endpoint/archive/2009/03/16/paste-xml-as-types-in-rest-starter-kit.aspx</link><pubDate>Mon, 16 Mar 2009 23:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9481971</guid><dc:creator>.NET Connected Framework Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9481971.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9481971</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Cross-posted from the &lt;A href="http://blogs.msdn.com/silverlightws/" mce_href="http://blogs.msdn.com/silverlightws/"&gt;Silverlight Web Services Team Blog&lt;/A&gt;.&lt;/EM&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just a quick announcement here of a release that will be interesting to Silverlight developers who want to access REST services. The &lt;STRONG&gt;WCF REST Starter Kit Preview 2&lt;/STRONG&gt; is now out, go grab it at &lt;A href="http://msdn.com/wcf/rest"&gt;http://msdn.com/wcf/rest&lt;/A&gt;. The release gives you a polished install/uninstall experience, so don't be afraid to try it on your box, it won't muck it up like "preview" software so frequently does.&lt;/P&gt;
&lt;P&gt;This release gives you one interesting client-side feature that you may have heard me or &lt;A title="Eugene's blog" href="http://eugeneos.blogspot.com/" mce_href="http://eugeneos.blogspot.com/"&gt;Eugene&lt;/A&gt; speak about: &lt;STRONG&gt;Paste XML as Types&lt;/STRONG&gt;. It's a VS menu item which helps you use &lt;STRONG&gt;XmlSerializer&lt;/STRONG&gt; with REST services. Frequently these services use human-readable documentation to describe the XML shape, and it is difficult to &lt;STRONG&gt;hand-code &lt;/STRONG&gt;a type to use with &lt;STRONG&gt;XmlSerializer&lt;/STRONG&gt;, especially when the XML instance is complex. For example check out this &lt;A title="XML example from Yahoo BOSS" href="http://developer.yahoo.com/search/boss/boss_guide/Web_Search.html#id311445" mce_href="http://developer.yahoo.com/search/boss/boss_guide/Web_Search.html#id311445"&gt;sample XML response &lt;/A&gt;from the Yahoo BOSS API. With this new feature it takes&lt;STRONG&gt; one click&lt;/STRONG&gt; to generate the type:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 679px; HEIGHT: 527px" title="Using Paste XML as Types with Yahoo BOSS API" alt="Using Paste XML as Types with Yahoo BOSS API" src="http://blogs.msdn.com/photos/silverlightws/images/9473440/original.aspx" width=679 height=527 mce_src="http://blogs.msdn.com/photos/silverlightws/images/9473440/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Another interesting feature in the release is &lt;STRONG&gt;HttpClient &lt;/STRONG&gt;- a sort of specialized WebClient&amp;nbsp;- which can be used to programmatically access REST services using an extensible model for sending HTTP requests and processing HTTP responses. The model enables you to complete common HTTP/REST development activities required to consume an existing service in a fraction of the time you normally spend. Some convenient time-savers include query string support (build URIs as name/value pairs) and&amp;nbsp;serialization support (easily plug in types generated with &lt;STRONG&gt;Paste XML as Types &lt;/STRONG&gt;to read the response). &lt;/P&gt;
&lt;P&gt;Unfortunately in this release the starter kit &lt;STRONG&gt;only contains a .Net version of HttpClient&lt;/STRONG&gt;, which will &lt;U&gt;not&lt;/U&gt; compile in Silverlight. We are considering porting this prototype to Silverilght, and if you get a chance to try it&amp;nbsp;on .Net, please let us know of any feedback&amp;nbsp;you have.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;Yavor Georgiev, Program Manager&lt;BR&gt;Connected Framework Team&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9481971" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/REST/default.aspx">REST</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>WCF Support in Silverlight 2</title><link>http://blogs.msdn.com/endpoint/archive/2009/03/09/wcf-support-in-silverlight-2.aspx</link><pubDate>Mon, 09 Mar 2009 10:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9467537</guid><dc:creator>.NET Connected Framework Team</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/endpoint/comments/9467537.aspx</comments><wfw:commentRss>http://blogs.msdn.com/endpoint/commentrss.aspx?PostID=9467537</wfw:commentRss><description>&lt;P&gt;WCF services can be accessed by a variety of clients, and this post will talk briefly about accessing services from Silverlight. The same familiar programming model applies to Silverlight as any WCF client application.&lt;/P&gt;
&lt;P&gt;The first step in developing Silverlight clients is to set up a &lt;STRONG&gt;development environment&lt;/STRONG&gt;. If you already have Visual Studio 2008 SP1 on the box, all that is needed is to install the Microsoft Silverlight Tools for Visual Studio 2008, available on &lt;A href="http://www.microsoft.com/silverlight/resources/tools.aspx" mce_href="http://www.microsoft.com/silverlight/resources/tools.aspx"&gt;this page&lt;/A&gt;&amp;nbsp;(among other resources). The package will install the Silverlight runtime (the piece required to run Silverlight apps in the browser), the Silverlight SDK (the libraries and tools needed to build apps), and the Visual Studio project templates and other supporting features.&lt;/P&gt;
&lt;P&gt;To create your first WCF service and Silverlight client combination, follow the steps in &lt;A href="http://msdn.microsoft.com/en-us/library/cc197964(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc197964(VS.95).aspx"&gt;this set&amp;nbsp;of documentation topics&lt;/A&gt;. Note that &lt;STRONG&gt;only certain WCF bindings and features are supported in Silverlight&lt;/STRONG&gt;, and you can consult &lt;A href="http://msdn.microsoft.com/en-us/library/cc197959(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc197959(VS.95).aspx"&gt;this page &lt;/A&gt;for&amp;nbsp;a full description.&lt;/P&gt;
&lt;P&gt;A common pitfall for developers new to Silverlight is the &lt;STRONG&gt;cross-domain restriction&lt;/STRONG&gt; in the networking stack. For security reasons, if the WCF service and Silverlight client live on different domains (for example &lt;A href="http://fabrikam.com/service.svc"&gt;http://fabrikam.com/service.svc&lt;/A&gt; and &lt;A href="http://contoso.com/mysilverlightcontrol.html"&gt;http://contoso.com/mysilverlightcontrol.html&lt;/A&gt;), the service domain needs to &lt;STRONG&gt;use a cross-domain policy file to explicitly opt in to be accessible by Silverlight clients&lt;/STRONG&gt; (for example &lt;A href="http://fabrikam.com/clientaccesspolicy.xml"&gt;http://fabrikam.com/clientaccesspolicy.xml&lt;/A&gt;). For a description of the cross-domain restriction, see &lt;A href="http://msdn.microsoft.com/en-us/library/cc838250(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc838250(VS.95).aspx"&gt;this topic&lt;/A&gt;. For an example cross-domain policy file, see &lt;A href="http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx"&gt;this topic&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;If you get stuck at any point in the process so far, &lt;A href="http://msdn.microsoft.com/en-us/library/cc197938(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc197938(VS.95).aspx"&gt;this article &lt;/A&gt;explains how to easily debug the service-client pair. &lt;/P&gt;
&lt;P&gt;After you have built your first Silverlight WCF solution, you can move on to some advanced scenarios. Here is a list of areas you may wish to explore:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Duplex communication&lt;/STRONG&gt; - WCF services can "push" data to Silverlight clients, without the user having to manually poll the service. This is also known as a "notification"&amp;nbsp;communication pattern, as opposed to a&amp;nbsp;"request/reply" pattern. &lt;A href="http://msdn.microsoft.com/en-us/library/cc645026(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc645026(VS.95).aspx"&gt;This topic&lt;/A&gt; walks you through implementing this scenario.&amp;nbsp;The programming model for duplex services is rather complex, so our team has implemented a code sample which hides away some of that complexity. Check out the "Duplex Services" section of&lt;A href="http://blogs.msdn.com/silverlightws/archive/2008/10/20/new-web-services-features-in-sl2-rtw.aspx" mce_href="http://blogs.msdn.com/silverlightws/archive/2008/10/20/new-web-services-features-in-sl2-rtw.aspx"&gt; this blog post&lt;/A&gt; for more information and a link to the sample. In the next version of Silverlight, a greatly simplified duplex programming model is being considered.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;REST services&lt;/STRONG&gt;&amp;nbsp;- this class of web services uses light-weight wire formats (such as plain XML or JSON) and clear URI conventions for a simple experience consuming services. &lt;A href="http://msdn.microsoft.com/en-us/library/cc197947(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc197947(VS.95).aspx"&gt;This set of topics&lt;/A&gt;&amp;nbsp;highlights how WCF in Silverlight can be used to access REST services. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Here are some good resources for follow-up:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc296254(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc296254(VS.95).aspx"&gt;Silverlight web services documentation&lt;/A&gt; - content from this resource was already referred to multiple times &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/silverlightws/" mce_href="http://blogs.msdn.com/silverlightws/"&gt;Silverlight web services team blog&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://code.msdn.microsoft.com/silverlightws" mce_href="http://code.msdn.microsoft.com/silverlightws"&gt;Silverlight web services code samples&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;Going forward, content from the Silverlight web services team blog (linked above) will be syndicated over here at the .NET Endpoint blog. Please keep an eye out for exciting new content coming up over the next month.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Yavor Georgiev&lt;BR&gt;Program Manager&lt;BR&gt;Connected Framework Team&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9467537" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/endpoint/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/endpoint/archive/tags/Silverlight/default.aspx">Silverlight</category></item></channel></rss>