<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>WCF</title>
        <link>http://blog.galasoft.ch/category/4987.aspx</link>
        <description>WCF</description>
        <language>en-US</language>
        <copyright>Laurent Bugnion</copyright>
        <managingEditor>laurent@galasoft.ch</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
        <item>
            <title>MVVM Light template and WCF services (or any ASP.NET application for that matter)</title>
            <link>http://blog.galasoft.ch/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx</link>
            <description>&lt;p&gt;I was recently made aware of a couple of people having issues with WCF services (or ASP.NET applications) when using the MVVM Light project template for Silverlight. There is a blog post and a StackOverflow question, so what exactly is happening there?&lt;/p&gt;  &lt;p align="left"&gt;Well in fact it is pretty simple when you know how Silverlight connects to web services. Due to the security model of Silverlight, the application cannot connect to a web site if it is not originating of this very website. In laymen’s terms, it means that the application can only connect to a web server if it also comes from the same webserver. For example, if the Silverlight application is served by &lt;a href="http://www.galasoft.com"&gt;http://www.galasoft.com&lt;/a&gt;, it won’t be able to connect to, say, &lt;a href="http://www.cnn.com"&gt;http://www.cnn.com&lt;/a&gt; without getting an exception. We talk about cross-domain access restrictions.&lt;/p&gt;  &lt;p align="left"&gt;&lt;em&gt;Of course there are ways around that, for instance a website can specifically give access to Silverlight applications &lt;a href="http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx"&gt;through a configuration file&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p align="left"&gt;In the case that concerns us, it is exactly what is happening. You see, the MVVM Light Silverlight project template creates a Silverlight application without an ASP.NET host. I didn’t add one because I didn’t want to complicate the template too much. And also, to be honest, because adding a web project is super easy, but of course only if you know how to do, and this is exactly what we will do here!&lt;/p&gt;  &lt;h2&gt;Creating the application&lt;/h2&gt;  &lt;p&gt;The steps to create the application and the WCF service are as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create the MVVM Light application using the MVVM Light project template for Silverlight. &lt;/li&gt;    &lt;li&gt;Right click on the solution in the Solution Explorer and select "Add, New Project from the context menu. &lt;/li&gt;    &lt;li&gt;From the WCF category, select a WCF Service Application and create it. &lt;/li&gt;    &lt;li&gt;Build the application. &lt;/li&gt;    &lt;li&gt;Right click on the MVVM Light project and select Add Service Reference from the context menu. &lt;/li&gt;    &lt;li&gt;In the Add Service Reference dialog, click on Discover. &lt;/li&gt;    &lt;li&gt;Make sure that the found service is the one you want to connect to, and click on OK. &lt;/li&gt;    &lt;li&gt;In the MVVM Light application, open the file Model/DataService.cs and modify the code as follows: &lt;/li&gt; &lt;/ul&gt;  &lt;pre class="csharp" name="code"&gt;public class DataService : IDataService
{
    public void GetData(Action&amp;lt;DataItem, Exception&amp;gt; callback)
    {
        var client = new ServiceReference1.Service1Client();
        client.GetDataCompleted += ClientGetDataCompleted;

        client.GetDataAsync(1234, callback);
    }

    void ClientGetDataCompleted(
        object sender, 
        ServiceReference1.GetDataCompletedEventArgs e)
    {
        var callback = e.UserState as Action&amp;lt;DataItem, Exception&amp;gt;;

        if (callback == null)
        {
            return;
        }

        if (e.Error != null)
        {
            callback(null, e.Error);
        }

        callback(new DataItem(e.Result), null);
    }
}&lt;/pre&gt;

&lt;p&gt;This code uses an asynchronous service call pattern where the callback (a reference to a method passed as Action by the caller) is saved in the service call. Then when the asychronous call returns (in the Completed event), the callback is retrieved from the UserState. If an error occurred, the callback can be used to pass this error to the caller. Otherwise, a new DataItem class is created and passed to the called.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Details about this pattern can be found in my talks &lt;a href="http://www.galasoft.ch/mvvmvideo1"&gt;Understanding the MVVM pattern&lt;/a&gt; and &lt;a href="http://www.galasoft.ch/mvvmvideo2"&gt;Deep Dive MVVM&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;So why doesn’t it work?&lt;/h2&gt;

&lt;p&gt;If you run the application now (making sure that the MVVM Light project is selected as Startup Project), you will first see a warning dialog and then an exception. What happened?&lt;/p&gt;

&lt;p&gt;&lt;a title="Warning dialog" href="http://www.flickr.com/photos/36917929@N06/6473500843"&gt;&lt;img src="http://farm8.staticflickr.com/7154/6473500843_6dd5be59cf.jpg" width="478" height="185" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a title="Exception" href="http://www.flickr.com/photos/36917929@N06/6473504667"&gt;&lt;img src="http://farm8.staticflickr.com/7166/6473504667_0302c65c53.jpg" width="408" height="443" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;What happened here is exactly the cross-domain issue I mentioned: The Silverlight application is not explicitly hosted into a web application, so Visual Studio is using an auto-generated HTML page instead, and running it from the embedded web server (“Cassini”). In fact, unless you explicitly specified otherwise, the test page is run in “file mode” instead of HTTP mode. The URI in the web browser window starts with C:\ for instance, instead of http://.&lt;/p&gt;

&lt;p&gt;In those conditions, the access to the WCF service is (justly) denied, and you get a security exception.&lt;/p&gt;

&lt;h2&gt;Correcting the error&lt;/h2&gt;

&lt;p&gt;In order to correct the error, you can either &lt;a href="http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx"&gt;add a cross-domain policy file&lt;/a&gt; to your WCF application, or host the Silverlight application in the same web project as the WCF service. Let’s do that now:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Right click on the WCF Service application in the Solution Explorer, and select Properties from the context menu. &lt;/li&gt;

  &lt;li&gt;On the left, select the Silverlight Applications tab. &lt;/li&gt;

  &lt;li&gt;Click on Add. &lt;/li&gt;

  &lt;li&gt;Select Use an existing Silverlight project in the solution and make sure that your MVVM Light application is selected in the combo box. &lt;/li&gt;

  &lt;li&gt;Make sure that Add a test page that references the control is checked, as well as Enable Silverlight debugging. &lt;/li&gt;

  &lt;li&gt;Press Add. &lt;/li&gt;
&lt;/ul&gt;
&lt;a title="Configuring the Silverlight application" href="http://www.flickr.com/photos/36917929@N06/6473557623"&gt;&lt;img src="http://farm8.staticflickr.com/7146/6473557623_569d8c0630.jpg" width="500" height="461" /&gt;&lt;/a&gt; 

&lt;p&gt;This creates two new files in your WCF Service application: One is suffixed TestPage.html and the other is suffixed TestPage.aspx. We typically don’t need the ASPX one so you can safely delete it.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Right click on the WCF Service application and select Set as StartUp Project from the context menu. &lt;/li&gt;

  &lt;li&gt;Right click about the HTML test page and select Set as Start Page from the context menu. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By doing this, we force Visual Studio to serve the HTML page and the Silverlight application from the same URL as the WCF Service, and to serve it as HTTP. This is possible because &lt;strong&gt;a WCF Service application is nothing else than an ASP.NET web server running WCF&lt;/strong&gt;. So the same web server can deliver HTML, Silverlight and of course WCF.&lt;/p&gt;

&lt;p&gt;If you run the application now, you will see the following result:&lt;/p&gt;
&lt;a title="Snagit Capture for Flickr" href="http://www.flickr.com/photos/36917929@N06/6473564443"&gt;&lt;img src="http://farm8.staticflickr.com/7007/6473564443_d68c4eb3fb.jpg" width="500" height="294" /&gt;&lt;/a&gt; 

&lt;p&gt;&lt;em&gt;Note that the warning shown earlier will still appear, but it is really just a warning, and you can safely turn it off. Just remember the cross-domain restriction when you publish your Silverlight application to another web server!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Success, we hit the WCF service and returned with a valid result! In fact, you can verify by placing breakpoints in the DataService.GetData method on the client, and in the Service1.GetData method on the server. Then press F5 to run the application in Debug mode and notice how you can easily debug both the client and the server at the same time.&lt;/p&gt;

&lt;h2&gt;What about the opposite way?&lt;/h2&gt;

&lt;p&gt;It is also possible to add a new MVVM Light application to an existing WCF Service application with the following steps (I am going a bit faster now, I am sure you will get it easily):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Open the existing WCF Service application. &lt;/li&gt;

  &lt;li&gt;Right click on the Solution and select Add New Project. &lt;/li&gt;

  &lt;li&gt;Select the MVVM Light project template for Silverlight and add a new project. &lt;/li&gt;

  &lt;li&gt;Build the application. &lt;/li&gt;

  &lt;li&gt;Just like before, add a Service Reference to the Silverlight application. &lt;/li&gt;

  &lt;li&gt;Again, just like before, add the Silverlight application to the WCF Service application (WCF Project Properties, Silverlight Applications, Add…). &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;Hopefully the confusion around this is cleared now. In summary:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Silverlight applications are restricted to access cross-domain web servers (unless explicitly authorized to do so). &lt;/li&gt;

  &lt;li&gt;The default MVVM Light application does not have an explicit host, so it runs off the default test page. &lt;/li&gt;

  &lt;li&gt;You can however easily add the MVVM Light application to the WCF Service application and then run it and debug it. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that the steps above can be used to add an MVVM Light application (or any Silverlight application) to any ASP.NET application, be it WCF Service application, ASP.NET MVC application or “classic” ASP.NET application.&lt;/p&gt;

&lt;p&gt;Happy coding! 
  &lt;br /&gt;Laurent&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div style="margin-bottom: -1em"&gt;
  &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;

  &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt; 

    &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt; 

    &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/147973.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx</guid>
            <pubDate>Wed, 07 Dec 2011 21:36:33 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/147973.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/147973.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/147973.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft Shape</title>
            <link>http://blog.galasoft.ch/archive/2010/10/26/microsoft-shape.aspx</link>
            <description>&lt;p&gt;Today I have been invited by Microsoft Switzerland to present three of our awesome Windows Phone 7 applications on stage at their yearly Shape conference. It was a great moment, and I felt super proud to show the IMDb app, the Twitter app and the SBB Mobile app. The response was excellent, I didn’t have one single demo effect, was able to stream a movie preview live from the IMDb app, to show most features of the Twitter app, to load a timetable and purchase a ticket from the SBB app, and all this in slightly more than 10 minutes! How cool is that??&lt;/p&gt;
&lt;p&gt;The two former apps (IMDb and Twitter) are already available from the marketplace:&lt;/p&gt;
&lt;p&gt;&lt;a title="Twitter for Windows Phone 7" href="http://www.flickr.com/photos/36917929@N06/5118674126"&gt;&lt;img alt="" width="338" height="251" src="http://farm2.static.flickr.com/1155/5118674126_b6e0d4b1b8.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="IMDb for Windows Phone 7" href="http://www.flickr.com/photos/36917929@N06/5118074077"&gt;&lt;img alt="" width="344" height="252" src="http://farm2.static.flickr.com/1079/5118074077_619d4a4397.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The SBB Mobile app is not available yet, but it is in the process of submission and it should be ready very soon for download. All the three apps are free!&lt;/p&gt;
&lt;h2&gt;WCF RIA Services demo&lt;/h2&gt;
&lt;p&gt;I also talked about WCF RIA Services, and here are the promised code samples:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The &lt;a href="http://www.galasoft.ch/blogs-all/resources/20101026/MyNorthwind.zip"&gt;full WCF RIA Services sample&lt;/a&gt;, with Customizing columns, Executing CRUD, Displaying messages, Validating, Filtering, Enhancing the UX, Paging, Showing errors, Reconciling data, Printing, Copy/paste, Running out of the browser...&lt;/li&gt;
    &lt;li&gt;The &lt;a href="http://www.galasoft.ch/blogs-all/resources/20101026/MyNorthwind.OOB.zip"&gt;same sample modified to run out-of-the-browser&lt;/a&gt; (OOB).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once downloaded, right click on the zip file, select Properties, and if you see an Unblock button on the General tab, click it!. Then only extract the content.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.slideshare.net/lbugnion/silverlight-for-line-of-business"&gt;The slides are here&lt;/a&gt;. The session was recorded and will be posted on Microsoft servers soon (stay tuned for more info!!)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="margin-bottom: -1em"&gt;
&lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt; &lt;br /&gt;
&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt; &lt;br /&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2010/10/26/microsoft-shape.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no" style="border-bottom-style: none; border-right-style: none; margin-top: 7px; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-left-style: none; overflow: hidden"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/142457.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2010/10/26/microsoft-shape.aspx</guid>
            <pubDate>Tue, 26 Oct 2010 07:22:40 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/142457.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2010/10/26/microsoft-shape.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/142457.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/142457.aspx</trackback:ping>
        </item>
        <item>
            <title>Posting the source code for my #mix09 and #techdays (Belgium) talk</title>
            <link>http://blog.galasoft.ch/archive/2009/03/25/posting-the-source-code-for-my-mix09-talk.aspx</link>
            <description>&lt;div class="gslb_rsbDivFrame"&gt;Note: I just updated the title for this article, sorry to all of you who were waiting for the TechDays Belgium source code and didn't realize it was here :)&lt;/div&gt;  &lt;p&gt;I just posted the source code of the demo applications I used in my MIX09 talk "Working across the client continuum".&lt;/p&gt;  &lt;p&gt;The source code is structured as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/mydotnet/articles/resources/mix09/DotNetContinuum.zip"&gt;DotNetContinuum&lt;/a&gt;&lt;/strong&gt;: This solution contains the following projects:       &lt;ul&gt;       &lt;li&gt;DotNetContinuum: a WCF service configured with 2 endpoints (SOAP and JSON), as well as 3 client applications: &lt;/li&gt;        &lt;li&gt;DotNetContinuum.Mvc: An ASP.NET MVC application showing a "pure" ASP.NET MVC application enhanced with AJAX content. See the following files          &lt;ul&gt;           &lt;li&gt;HomeController.cs (in Controllers): Contains the "ServerDateTime" action. &lt;/li&gt;            &lt;li&gt;ServerDateTime.aspx (in Views/Home): Contains the view code for ServerDateTime. &lt;/li&gt;            &lt;li&gt;Index.aspx (in Views/Home): Start page for the MVC application, contains the links to ServerDateTime, as well as the AJAX code. &lt;/li&gt;            &lt;li&gt;Silverlight.html: Start page for the Silverlight application. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;DotNetContinuum.SL: A Silverlight application connecting to the WCF service in an asynchronous way. See the following files:          &lt;ul&gt;           &lt;li&gt;Page.xaml: Front end with a very simple UI. &lt;/li&gt;            &lt;li&gt;Page.xaml.cs: Code behind with the code to connect to the WCF service. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;DotNetContinuum.Wpf: A WPF application connecting to the WCF service in an asynchronous way. See the following files:          &lt;ul&gt;           &lt;li&gt;Window.xaml: Front end with a very simple UI. &lt;/li&gt;            &lt;li&gt;Window.xaml.cs: Code behind with the code to connect to the WCF service. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/mydotnet/articles/resources/mix09/Customers.zip"&gt;Customers&lt;/a&gt;:&lt;/strong&gt; This solution is a WCF service reading a list of customers from an XML file and delivering them as a list of Customer objects.       &lt;ul&gt;       &lt;li&gt;CustomerAccess.cs: Contains the LINQ to XML code used to read and write the XML file. &lt;/li&gt;        &lt;li&gt;Customer.cs: The class used to pass information between the service and the client. &lt;/li&gt;        &lt;li&gt;CustomerService.svc.cs: The service implementation. &lt;/li&gt;        &lt;li&gt;Customers.xml: The "data base" of customers &lt;/li&gt;        &lt;li&gt;Note also that there is a unit test project in the solution, used to unit test the WCF service. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/mydotnet/articles/resources/mix09/CustomersApplication.zip"&gt;CustomersApplication&lt;/a&gt;:&lt;/strong&gt; This solution contains client applications for the Customers WCF service.       &lt;ul&gt;       &lt;li&gt;CustomersApplication.Mvc: An ASP.NET MVC and AJAX client.          &lt;ul&gt;           &lt;li&gt;HomeController.cs: Contains the "ShowCustomers" action. &lt;/li&gt;            &lt;li&gt;ShowCustomers.aspx: Contains a mix of ASP.NET MVC and AJAX code to interact with the WCF service. &lt;/li&gt;            &lt;li&gt;Silverlight.html: Start page for the Silverlight application. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;CustomersApplication.SL: The Silverlight application connecting to the WCF service and showing the list of customers. &lt;/li&gt;        &lt;li&gt;CustomersApplication.WPF: Same application, implemented in WPF. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The last applications (CustomersApplication.SL and CustomersApplication.WPF) are implemented using the MVVM pattern, and share a maximum of code.&lt;/p&gt;  &lt;p&gt;As soon as I have a moment, I will post a walkthrough of my demos. In the mean time, you can catch the Powerpoint slides and the talk's video &lt;a href="http://videos.visitmix.com/MIX09/T13F"&gt;&lt;strong&gt;from the MIX09 session page&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Have fun!!&lt;/p&gt; &lt;img src="http://blog.galasoft.ch/aggbug/130385.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2009/03/25/posting-the-source-code-for-my-mix09-talk.aspx</guid>
            <pubDate>Tue, 24 Mar 2009 23:06:30 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/130385.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2009/03/25/posting-the-source-code-for-my-mix09-talk.aspx#feedback</comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/130385.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/130385.aspx</trackback:ping>
        </item>
        <item>
            <title>My #MIX09 session is available in video</title>
            <link>http://blog.galasoft.ch/archive/2009/03/21/my-mix09-session-is-available-in-video.aspx</link>
            <description>&lt;p&gt;MIX09 is over, people are slowly going back home. I will be flying home tomorrow, quite a long trip since I will reach Zurich only on Sunday morning.&lt;/p&gt;  &lt;p&gt;I had the great pleasure to see that the video of my talk was posted online! This is great, because I didn't have a huge crowd (what do you expect when you "compete" against and Vertigo and their Playboy talk, and the amazing Corrina Black :))&lt;/p&gt;  &lt;p&gt;But it's OK, because the people at my talk were really great. I felt wonderful during the talk, and even the small issue I had with Visual Studio didn't manage to disturb me much (even though I kind of freaked out when it happened, you can hardly notice it).&lt;/p&gt;  &lt;p&gt;The video is &lt;a href="http://mschannel9.vo.msecnd.net/o9/mix/09/wmv-hq/t13f.wmv"&gt;available for download&lt;/a&gt;. You can also stream it (Silverlight required) by clicking on the image below. Have fun!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://videos.visitmix.com/MIX09/T13F"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Working across the client continuum" border="0" alt="Working across the client continuum" src="http://www.galasoft.ch/blogs-all/MyMIX09sessionisavailableinvideo_1047C/image.png" width="657" height="409" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;img src="http://blog.galasoft.ch/aggbug/130286.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2009/03/21/my-mix09-session-is-available-in-video.aspx</guid>
            <pubDate>Sat, 21 Mar 2009 07:09:41 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/130286.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2009/03/21/my-mix09-session-is-available-in-video.aspx#feedback</comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/130286.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/130286.aspx</trackback:ping>
        </item>
        <item>
            <title>Reminder: My talk at #MIX09</title>
            <link>http://blog.galasoft.ch/archive/2009/03/19/reminder-my-talk-at-mix09.aspx</link>
            <description>&lt;p&gt;Tomorrow Thursday 19th of March 2009&lt;/p&gt;  &lt;p&gt;Location: Delfino 4105&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Working across the .NET continuum&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Come see how to build a continuum of client applications including HTML, AJAX, ASP.NET, Microsoft Silverlight, and Windows Presentation Foundation (WPF) that all consume the same Windows Communication Foundation (WCF) service. Learn how to reuse as much code as possible, how to optimize the development process, and how to address key logistical issues like external servers and cross domain communication.&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;See you there!!&lt;/h2&gt; &lt;img title="MIX09" alt="MIX09" src="http://geekswithblogs.net/images/geekswithblogs_net/lbugnion/4797/r_MIX09_BlogBling_InterfaceCreativity_CR4_3.jpg" /&gt; &lt;img src="http://blog.galasoft.ch/aggbug/130210.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2009/03/19/reminder-my-talk-at-mix09.aspx</guid>
            <pubDate>Thu, 19 Mar 2009 00:58:01 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/130210.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2009/03/19/reminder-my-talk-at-mix09.aspx#feedback</comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/130210.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/130210.aspx</trackback:ping>
        </item>
        <item>
            <title>TechDays Belgium is over</title>
            <link>http://blog.galasoft.ch/archive/2009/03/14/techdays-belgium-is-over.aspx</link>
            <description>&lt;p&gt;I just held two talks in Antwerp, Belgium, for TechDays and it was really nice. First the Belgian team did a fantastic work welcoming the speakers, and as far as I could say, the attendees were also taken care of in an exemplary way. We had just a small incident (there was a power breakdown about 15 minutes before my show and the whole center went black), but noone panicked and it was taken care of with a lot of care. We started the sessions only 15 minutes late on the last day. Everyone stayed calm. I also want to especially mention the technical teams who were simply AMAZING. Such a great work. Before my first session, the technician called my mobile to tell me that he was available and I could go to the room if I wanted. Once there, they totally made me feel at home, were efficient, polite and interested, and even gave feedback after the talk. I would work again with such a team any time!!&lt;/p&gt;  &lt;p&gt;My 2 talks went great, I got approximately 300 people at each. The talks were held in big movie theaters, and we actually used the movie projectors to beam. We had image in image so the speakers were filmed while they talked. The screen was impressive.&lt;/p&gt; &lt;img src="http://farm4.static.flickr.com/3473/3351334054_59b789eb35.jpg?v=0" /&gt;  &lt;p&gt;I want to thank all the people who made this possible. It was a fantastic experience, and I am looking forward to repeat that soon. For the people who attended my talks, I will post the source code and walkthroughs here after MIX is over, so stay tuned.&lt;/p&gt;  &lt;p&gt;Cheers!!&lt;/p&gt; &lt;img src="http://blog.galasoft.ch/aggbug/130086.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2009/03/14/techdays-belgium-is-over.aspx</guid>
            <pubDate>Sat, 14 Mar 2009 11:09:54 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/130086.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2009/03/14/techdays-belgium-is-over.aspx#feedback</comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/130086.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/130086.aspx</trackback:ping>
        </item>
        <item>
            <title>Talking at MIX09: Las Vegas and the continuum</title>
            <link>http://blog.galasoft.ch/archive/2009/02/21/talking-at-mix09-las-vegas-and-the-continuum.aspx</link>
            <description>&lt;a href="http://2009.visitmix.com/"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/lbugnion/4797/r_MIX09_BlogBling_InterfaceCreativity_CR4_3.jpg" /&gt;&lt;/a&gt;   &lt;p&gt;One of my dreams is going to come true: Since the very first time I attended &lt;a href="http://2009.visitmix.com/"&gt;MIX&lt;/a&gt; in 2006, I have wanted to talk there. MIX has a very special meaning for me. It is in the Venetian conference rooms that I heard about Windows Presentation Foundation and what would later become Silverlight. It is there that me and my two colleagues Andreas and James decided that we wanted WPF for the project we had just started at Siemens. A decision that was definitely the right one, from a technical point of view but also from a user experience point of view. It is at MIX 2007 that I started to talk to people from my current firm &lt;a href="http://identitymine.com/"&gt;IdentityMine&lt;/a&gt; about the possibility to join them, which I did in December 2008.&lt;/p&gt;  &lt;p&gt;In short, the MIX conference has a special place in my professional life, and I am very glad and honored to announce that one of the sessions I proposed has been accepted. Yes, I will be talking at MIX 2009! My session just appeared on the sessions list at    &lt;br /&gt;&lt;a title="https://content.visitmix.com/2009/sessions/" href="https://content.visitmix.com/2009/sessions/"&gt;https://content.visitmix.com/2009/sessions/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And my short bio can be seen at    &lt;br /&gt;&lt;a title="https://content.visitmix.com/2009/speakers/" href="https://content.visitmix.com/2009/speakers/"&gt;https://content.visitmix.com/2009/speakers/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The session's title is:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Working across the Client Continuum&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Come see how to build a continuum of client applications including HTML, AJAX, ASP.NET, Microsoft Silverlight, and Windows Presentation Foundation (WFP) that all consume the same Windows Communication Foundation (WCF) service. Learn how to reuse as much code as possible, how to optimize the development process, and how to address key logistical issues like external servers and cross domain communication.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I really hope I will see many of you at my session. For those of you who cannot come, it will be recorded (like MIX08 and PDC08 were too). But let's face it, nothing replaces the real MIX, and nothing replaces Vegas, baby!&lt;/p&gt; &lt;img src="http://blog.galasoft.ch/aggbug/129585.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2009/02/21/talking-at-mix09-las-vegas-and-the-continuum.aspx</guid>
            <pubDate>Sat, 21 Feb 2009 21:33:30 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/129585.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2009/02/21/talking-at-mix09-las-vegas-and-the-continuum.aspx#feedback</comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/129585.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/129585.aspx</trackback:ping>
        </item>
        <item>
            <title>Updated my laptop to the June CTP of .NET 3.0</title>
            <link>http://blog.galasoft.ch/archive/2006/07/02/83859.aspx</link>
            <description>        &lt;div class="gslbDivBlogParagraph" style="margin-top: 8px;margin-bottom: 8px;"&gt;
          I took the time today to install the June CTP of .NET 3.0 (see the checklist hereunder).
          It went rather well, and I didn't have major problems, but it takes a long time... well,
          when you do it on the balcony with your kids playing in the pool, it's not that terrible,
          is it? ;-)
        &lt;/div&gt;
        
        &lt;div class="gslbDivBlogParagraph" style="margin-top: 8px;margin-bottom: 8px;"&gt;
          Update: My
          &lt;a href="http://www.galasoft-lb.ch/mydotnet/GalaSoftLb.Wpf.Demo/index.html"&gt;WPF demo&lt;/a&gt;
          now works with the June CTP.
        &lt;/div&gt;
        
        &lt;div class="gslbDivBlogParagraph" style="margin-top: 8px;margin-bottom: 8px;"&gt;
          &lt;b&gt;Uninstall May CTP edition:&lt;/b&gt;
          &lt;ol&gt;
            &lt;li&gt;
              Pre-released WinFX Runtime Components
              &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AAE7FC63-D405-4E13-909F-E85AA9E66146&amp;displaylang=en"&gt;
              Uninstall Tool&lt;/a&gt;              
            &lt;/li&gt;
            &lt;li&gt;
              Download and run Uninstall tool
            &lt;/li&gt;
            &lt;li&gt;
              Removed Debug tools for Windows
            &lt;/li&gt;
            &lt;li&gt;
              Removed Atlas
            &lt;/li&gt;
            &lt;li&gt;
              Removed FxCop
            &lt;/li&gt;
            &lt;li&gt;
              Removed Web Application project add-in
            &lt;/li&gt;
            &lt;li&gt;
              Removed Windows SDK
            &lt;/li&gt;
            &lt;li&gt;
              Removed
              &lt;a href="http://msdn.microsoft.com/windowsvista/support/relnotes/netfxjunectp/default.aspx#topic2"&gt;
              WIC&lt;/a&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
        &lt;/div&gt;
        
        &lt;div class="gslbDivBlogParagraph" style="margin-top: 8px;margin-bottom: 8px;"&gt;
          &lt;b&gt;.NET 3.0:&lt;/b&gt;
          &lt;ol&gt;
            &lt;li&gt;
              Install
              &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8D09697E-4868-4D8D-A4CF-9B82A2AE542D&amp;displaylang=en"&gt;
              WinFX Runtime components June CTP&lt;/a&gt;
            &lt;/li&gt;
            &lt;li&gt;
              Install
              &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9221A6AA-AC1C-4604-A326-B8CF2B12B6EB&amp;displaylang=en"&gt;
              WinSDK June CTP&lt;/a&gt;
            &lt;/li&gt;
            &lt;li&gt;
              Install MSDN 2005 (from CD)
            &lt;/li&gt;
            &lt;li&gt;
              Install
              &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1A994549-94CB-4F61-903D-A8C8E453EEF4&amp;displaylang=en"&gt;
              Orcas development tools June CTP&lt;/a&gt;
            &lt;/li&gt;
            &lt;li&gt;
              Reinstall
              &lt;a href="http://msdn.microsoft.com/windowsvista/support/relnotes/netfxjunectp/default.aspx#topic2"&gt;
              WIC&lt;/a&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
        &lt;/div&gt;

        &lt;div class="gslbDivBlogParagraph" style="margin-top: 8px;margin-bottom: 8px;"&gt;
          &lt;b&gt;Atlas:&lt;/b&gt;
          &lt;ol&gt;
            &lt;li&gt;
              Install Microsoft Visual Studio 2005 -
              &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=8B05EE00-9554-4733-8725-3CA89DD9BFCA&amp;displaylang=en"&gt;
              Update to Support Web Application Projects&lt;/a&gt;
            &lt;/li&gt;
            &lt;li&gt;
              Install Visual Studio 2005
              &lt;a href="http://msdn.microsoft.com/asp.net/reference/infrastructure/wap/default.aspx"&gt;
              Web Application Projects&lt;/a&gt;
            &lt;/li&gt;
            &lt;li&gt;
              Download
              &lt;a href="http://atlas.asp.net/default.aspx?tabid=47&amp;subtabid=471"&gt;Atlas&lt;/a&gt;
            &lt;/li&gt;
            &lt;li&gt;
              Install AtlasSetup.msi
            &lt;/li&gt;
            &lt;li&gt;
              Install AtlasDocumentation.msi
            &lt;/li&gt;
            &lt;li&gt;
              Install AtlasSample.msi
            &lt;/li&gt;
            &lt;li&gt;
              Install
              &lt;a href="http://download.microsoft.com/download/B/8/1/B8176A86-5D85-41B8-819B-19A9ACF1CE8C/AtlasControlToolkit.exe"&gt;
              AtlasToolkit&lt;/a&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
        &lt;/div&gt;
 &lt;img src="http://blog.galasoft.ch/aggbug/83859.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2006/07/02/83859.aspx</guid>
            <pubDate>Sun, 02 Jul 2006 09:57:00 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/83859.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2006/07/02/83859.aspx#feedback</comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/83859.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/83859.aspx</trackback:ping>
        </item>
    </channel>
</rss>
