Web Client Software Factory February 2008 Ships!

I know that folks have been reading about the Web Client Software Factory on Blaine's blog and on Glenn's blog.  Blaine posted about what we planned to include, back in December with Next version of Web Client Software Factory (WCSF).  Glenn had the post at the end of January, Web Client 2.0 closer than you think, and Web Client 2.0, what's the hold up? 

So, what is in the latest version of the Web Client Software Factory?

Here is a quick blurb from the front page of our docs, with my comments in Blue:

The February 2008 release of the Web Client Software Factory is an update to the June 2007 release. The following are the major changes:

  • Added user interface responsiveness guidance. The guidance includes documentation, Web controls, QuickStarts, and a new reference implementation that demonstrate how to incorporate Microsoft ASP.NET AJAX technologies in your Web applications to provide a richer user interface experience.
  • Added support for the Model-View-Presenter pattern in user controls and master pages. The Composite Web Application Block includes a new Dependency Injection mechanism that facilitates the implementation of the Model-View-Presenter pattern in Web controls and master pages. The guidance package also includes new recipes that help developers create master pages and user controls that implement the Model-View-Presenter pattern. By using the Model-View-Presenter, developers can extend the testability surface to user controls and master pages.

Dependency Injection also works in ASMX Web Services hosted in a WCSF web application project

  • User controls can be reused across modules. Developers can build Web pages made up of user controls from different modules.

There is an example of this in the Order Management Reference Implementation

  • Updated the Composite Web Application Block. The main changes include the following:
    • Improved performance
    • Support for services registration through configuration
    • Support for type mapping for dependency injection

Type mapping was a no-brainer to add. We also needed it to show a few of the deeper concepts around MVP.

The performance improvements are the part of how the new Unity project works deep under the hood. Chris Tavares and worked with the WCSF team on the performance enhancements. Later, Chris went to start the Unity project, which has evolved into a great tool from what I have seen. I know the next question is "When will WCSF support Unity?" My answer is as soon as we can do a complete re-write. Out of the box, Unity provides a lot of functionality that CWAB provides. To properly use Unity, we would need to throw out a lot of the CWAB code, and re-do it. 

The ability to add a service via config was requested by the community, and is shown in the Order Management Reference Implementation.

  • Updates to the Add Business Module and Add Foundational Module recipes. These recipes now include a new option to create a separate project for the modules’ public interface.
  • Updated the patterns documentation topics. The main changes include two new pattern description topics, Inversion of Control and Module Interface Separation, and it updates to the Model-View-Presenter topic.
  • Included additional guidance for several technical concepts. The technical concepts covered are views testability, modularity, autocomplete, validation, and search. The guidance consists of documentation, QuickStarts, Web controls, and How-to topics.

These concepts were shipped previously as "Bundles" on our CodePlex community. We will be releasing new, updated VS2008 versions of these bundles on MSDN in the near future, but all the content is in the factory. The bundles are so folks can get a small taste and look at a single feature or concept in isolation.

  • Added support for Visual Studio 2008 to the guidance package.

VS2008 and and .NET 3.5 support was asked for very loudly by customers.

Testing Guidance

Something we do not talk about enough is the fact that we are releasing some guidance on how to test web applications.  First, since we do most development via TDD EDD (Example Driven Development), we have quite a bit in the way of unit tests.  There are a few exceptions, where we intentionally do not include unit tests as we do not want to clutter a QuickStart example with another concept that may hinder understanding of what the QuickStart is about.

We are also shipping acceptance tests.  In a few projects, these acceptance tests are manual test scripts in the form of a Visual Studio Manual Test.  In others, we have completely automated the acceptance tests using


Note: this is a link to an external Web site that provides software that can be used to write acceptance tests. Please note that Microsoft is not responsible for the content of external Internet sites.


                                                               the WatiN (Web Application Testing in .NET)

To compile the test projects and run the tests, you will need VS2008 Professional or Team System, and to download the WatiN binaries, and copy the DLLs to the Lib folder (which our help describes with more info).  The upside is that anyone can see how we are doing functional/acceptance testing  of our sample applications.  Of course, there is a lot more to testing than just acceptance testing, but it is a start.

Other resources

You will also want to check out what Blaine and Glenn say about the release: