image

Like all good things, sadly Seattle CodeCamp has come to an end. I had a great time and enjoyed hanging out with all the CodeCampers. I particularly enjoyed hearing about the different challenges customers are facing in their implementations. I also took part in more than a few discussions about our p&p deliverables including perceptions on the new Unity container and our newly announced "Prism" project. In general I heard no complaints and a lot of support for the new emphasis we've been putting on simplifying our deliverables and giving more options as to how you use them.

As to my talks, well they certainly didn't turn out as I had planned ;)

My WCSF talk was originally scheduled to be around an advanced topic of how to replace the default Session-State injection mechanism in the factory. However, I quickly switched gears and ended up doing an overview on Composite applications, Dependency Injection and the Web Client Software Factory. Notwithstanding the change in topic the session was really enjoyable. The coding was all ad-hoc and apparently I scored a few brownie points when it compiled the first time :) We ended the talk at a point when we could have dove into the original topic, however there wasn't enough time.

My day two talk followed suit which switching gears yet again, this time covering the Smart Client Software Factory. As before the session was not planned, but I think it went well. At the end of this talk a few of the attendees requested that they would really like to cover the topic I originally planned (the DSA) now that they understand the basics of Smart Client Software Factory. It turned out that there was a free slot at 3 PM which I happily agreed to (though my wife on the other hand was less than pleased ;) )

During the last talk we did a deep dive into how the Disconnected Service Agent works under the hood, and how you can go about replacing it's default mechanism which supports a simple Request-Response message exchange pattern, to instead use a Duplex channel. The one annoying part to the talk was that I was experiencing connectivity issues and the connection monitor infrastructure was working too well keeping my application in an off-line state. We finally got around this by connecting to the internet through a USB connection to one of the attendees cell phones :)

Actually the connection monitor does allow you to configure a DesktopConnection which you can use to simulate connectivity even if you are not connected. I spent about 30 minutes trying to get this configured before my talk (as I realized it might be a problem), but I was unsuccessful. Anyway, all and all I think the talk went well though it had a few hiccups, but hey this is CodeCamp :)

You can find all the code and decks for the talks (both the originally planned and the actual ones delivered) posted on a skydrive here.

  • "Custom Session State Injection" contains the sample for my original WCSF talk. Take a look at the helpers folder in the Shell project to see the custom mechanism. In the web site, GetSessionValue.aspx and SetSessionValue.aspx demonstrate the functionality.
  • "DSAQuickStart" contains the original Disconnected Service Agent Quickstart that uses the Request-Response message exchange.
  • "CustomDSAQuickStart" contains the modified version that uses a WCF Duplex channel to allow multiple callbacks. When you run the code you will notice only a partial list of restaurants appears to be returned. This is because we changed the code in the session to do a call back every 5 items. The client app however was not written to deal with multiple responses, so the second callback overrides the first.
  • "DemoApp" contains the account site that we build in the WCSF overview talk. Within the sample we show recursive DI in that the AuditingService has a dependency on the AuditingTransportService.
  • "DemoClient" contains the simple (and I do mean simple) app we through together in the SCSF talk.

Note: You'll need SQL Compact to be installed in order to run the DSA samples which are built on VS2005. If you upgrade the projects to VS2008 they will work, but you will need to use Upgrade utility to convert the compact DB to the latest version. Aside from the DSA, all the other samples are in VS2008.

Also I have added a few links below to blog posts where you can read about the different techniques.

http://staff.southworks.net/blogs/siacomuzzi/archive/2007/09/24/Enabling-WCF-Duplex-Channel-in-DSA-solution.aspx

http://staff.southworks.net/blogs/siacomuzzi/archive/2007/10/05/How-to-replace-our-Sessions-State-strategy-in-Web-Client-Software-Factory-with-a-custom-one.aspx

Thanks to everyone for making it a fun event. Until next year!