PDC 2008, Day #2, Session #3, 1 hr 15 mins
In the Silverlight Futures session, Jamie Cool focused on building business applications using Silverlight. (From now on, when we say “Silverlight”, we really mean “Silverlight 2”).
Jamie started by summarizing the whole thick/thin client thing and reiterating where Silverlight fits in.
- WPF apps run natively on your PC
- Richer UI experience
- Better performance
- Access to everything on your PC, e.g. file system
- ASP.NET web apps run in the browser
- Broadest reach, running on any platform, any browser
- Much more limited UI
- Runs in a sandbox, limited access to local resources
- Silverlight is somewhere in the middle
- Runs in your browser
- Much better user experience than ASP.NET
- Fewer trips back to server, things running on client
- Requires client to first download Silverlight runtime
People who write business applications hear requests all the time for accessing their apps through a web browser. In the past, this has meant a radically different and more limited GUI in the form of ASP.NET. But with Silverlight, you can really have it all—deliver both rich WPF applications and browser-based applications using Silverlight. Because Silverlight uses a subset of the .NET Framework, you can even use the same codebase. (If you’re careful).
Support for Business Apps Using Today’s Platforms
Much of Jamie’s talk focused on a future extension to Silverlight, code-named Alexandria, that would provide a richer framework for allowing business apps hosted in Silverlight to do the kinds of things that they typically need doing.
According to Jamie, business applications have the following characteristics:
- They are mainly focused on working with data and applying business logic to data
- They need
- A way to move data between tiers
- Methods for “shaping” data
- Methods for soundly applying business logic to the data
- A way to bind data to the user interface
In terms of moving data between tiers, Jamie mentioned ADO.NET Data Services as really being the best tool for exposing data stored in a database to a web-based application. He mentioned the same speaking points as the guys in the Astoria talks—the ability to expose/consume data using simple a REST protocol.
Jamie also demoed how the Entity Data Model could be used a data layer between the database (or data service) and the application. He also demoed some of the basics of binding Silverlight controls to the data served up through ADO.NET Data Services.
Futures – A Business Logic Framework
The second half of Jamie’s talk focused on a future extension to Silverlight, code-named Alexandria, that would provide a richer framework for allowing business apps hosted in Silverlight to do the kinds of things that business apps typically need to do.
(Jamie never mentioned “Alexandria”, but he was making use of a namespace that had that name in all of his demos).
Jamie did some basic demos of how Alexandria works. To start with, you create a class to represent your business object, then set up its data binding and use attributes to specify validation rules.
Hold on just a second! Alexandria suddenly sounds exactly like Rocky Lhotka’s CSLA.NET Framework—especially since Rocky is just finishing up a version of CSLA for Silverlight. With an entire team of developers, Microsoft has managed to develop a framework that Rocky created (mostly) all by himself.
I’m being a little facetious. I’m really curious what Rocky’s take is on Alexandria, since it seems to fulfill the same basic mission as CSLA.NET. I don’t know about many of the details of CSLA, but a couple of things occurred to me:
- CSLA.NET also supports Win Forms and Web Forms, whereas Alexandria appears to be targeted exclusively at Silverlight
- CSLA.NET supports a wide variety of transport protocols (anything in WCF, I think), where Alexandria seems to be REST-only
- CSLA.NET may not directly support binding to an ADO.NET Data Service, or maybe not as seamlessly as Alexandria
- CSLA.NET is open source, so benefit from many improvements that come from the community
Anyway, as I said I’m not very knowledgeable about CSLA, but it definitely seemed like Alexandria is targeting the exact same set of business requirements as CSLA. As with any framework comparison, however, each is certain to have its own strengths and weaknesses and appropriate for a particular category of applications.
Rocky, what is your take on this? Ditto current users of CSLA.