Day 3 at PDC is off to a great start so far. I just attended a session on the architecture and development of the content delivery infrastructure and Silverlight client for the NBC Olympics online. It’s pretty amazing how they pulled it off but one of the reasons for the success was scrumming and face-to-face meetings. With teams scattered all over the globe from Redmond to Beijing it takes great project management besides super technical skills to drive success. This is key to any software project, not just large ones like this.
Now I’m sitting in a session with Pablo Castro, a Software Architect over in SQL, on offline-enabled data services and desktop applications. This one is really good. I’m really interested in this one because on my former system that I developed we implemented our own data caching mechanisms and some of the challenges once you decide what data can be offline is how to efficiently synchronize it with the server as well as determining how stale you can tolerate the data. The plumbing for serializing and syncing the data is non-trivial so I’m happy to see these frameworks that handle that for you.
ADO.NET Data Services (Astoria) make it really really easy for you to put your data on the web. I’ve been getting into it since it was added to Visual Studio 2008 SP1. I think that combining this with Sync Services will make a great framework for you to build an easy data caching framework as well as enable you to "play back" calls to the service for you once you get back online. Pablo referred to this as "Astoria Offline" integrated into Visual Studio. I can’t wait.
He built a simple ADO.NET Data Service (just like Saaid showed here) using the Entity Framework to model some data. The service then exposes this model to the web. The new thing he showed is that when creating the service there was an option on the dialog to create an offline enabled service. This adds code to enable sync services and scripts to modify the SQL Server database schema to enable change tracking on the tables (similar to how you do it now in VS 2008 using sync services, like Milind showed here). Then Pablo added a WPF client. and added a Service Reference to the data service. Because it was set up as an offline-enabled service it asks you if you want to take the service offline. If you say yes then it downloads the metadata from the service, creates a local SQL CE database and then adds an Entity Framework model to the local database. This allows you to code against the local data model which then syncs with the service behind the scenes using an orchestrator. VERY COOL. Its amazing what you can do with Visual Studio.
Speaking of Visual Studio — Visual Studio 2010 and .NET 4.0 CTP was released on Monday so have a look at an early build of the next version of VS. I’ll be bugging the Visual Studio teams for Channel 9 videos in the coming months to show us what they got in there and how to use it. Now’s the time for feedback so play with it and tell us about it on the Dev10 CTP Feedback page and the feedback forums.
Other things to look at and play with: