Web Client Software Factory
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies.
Architects and developers can use the Web Client Software Factory to quickly incorporate many of the proven practices and patterns of building Web client applications. These practices and patterns have been identified during the development of many Web client applications and their components.
These applications have one or more of the following characteristics:
- They are developed by multiple collaborating development teams.
- They are composite applications that present information from multiple sources through an integrated user interface.
- They support XCopy deployment of independently developed modules.
- They support online business transaction processing Web sites.
- They deliver a responsive user experience.
Note The software factory is optimized to create online business transaction processing Web sites. It is not optimized for Web content sites or collaboration sites.
The software factory contains a collection of reusable components and libraries, Visual Studio 2008 solution templates, wizards and extensions, How-to topics, automated tests, extensive architecture documentation, patterns, and a reference implementation. The software factory uses ASP.NET and the Enterprise Library.
By using the software factory, architects and developers can focus their efforts on business opportunities and create Web client applications that effectively address the needs of their organizations.
This software factory provides proven solutions to common challenges found while building and operating large transaction processing enterprise Web sites. It helps architects and developers build modular systems. A module is a functionally complete and independent component. Modularity allows independent teams to work on different aspects of the application and also improves security and testability. Applications built with the software factory use proven practices for operations like centralized exception logging and can be XCopy deployed.
The software factory contains a collection of reusable components and libraries, Visual Studio 2008 solution templates, wizards and extensions, How-to topics, automated tests, extensive architecture documentation, patterns, and a reference implementation. The software factory uses ASP.NET, ASP.NET AJAX, the AJAX Control Toolkit, and the Enterprise Library–May 2007.
The February 2008 release of the Web Client Software Factory is an update to the June 2007 release. These are the major changes:
- Added new Guidance Assets. These allow a developer to quickly, conveniently and easily learn, evaluate, and implement different components of the factory without having to use it in its entirety. These assets also contain functionality you can use on your existing ASP.NET Web sites.
- 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 and AJAX Toolkit technologies in your Web applications to provide a richer user interface experience. A new recipe to enable Microsoft ASP.NET AJAX in an existing Web application has been incorporated into the guidance package.
- 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.
- User controls can be reused across modules. Developers can build Web pages made up of user controls from different modules.
- 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
- 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 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.
- Added support for Visual Studio 2008 to the guidance package.
- Added support for dependency injection on ASMX Web services. This allows developers to inject services and dependencies into traditional Web services and JSON services which are accessed through AJAX calls.
Architects should use the Web Client Software Factory to create their own client baseline architecture. They can distribute that baseline for developers to use as a starting point to build specific instances of Web applications. Figure 1 illustrates the process for using the Web Client Software Factory on the fictitious Global Bank project.
Figure 1. Web Client Software Factory scenarios
As the architect, you want to make sure that Web applications developed in your organization derive from a sound, high quality, proven practice-based foundation that meets the following guidelines:
- It provides a standard approach to application development.
- It promotes re-usability of common architectural patterns and components.
- It hides complexity.
- It allows developers to focus on business problems instead of infrastructure components.
The Web Client Software Factory is the starting point for creating that foundation. It provides out-of-the-box implementation of a set of features that are common to Web client composite applications and page flow applications.
You take this out-of-the-box baseline and customize and extend it to better fit your specific needs. As an architect, you might customize, extend, and deploy the following:
- Templates, recipes, and designers to include your own appearance and behavior and your own naming conventions
- Documentation, patterns, and How-to topics
- Application blocks, by using the provided extensibility points and adding new libraries
As an application developer, you may want to focus on the business logic and the user experience of your Web client application. A baseline architecture, such as the Web Client Software Factory, provides many of the common infrastructure services needed to build your business applications. This baseline may be modified and extended by the architecture team in your organization or on your project.
You can review the patterns, the How-to topics, and the reference implementation (Global Bank Commercial e-Banking) to understand the proven practices for developing Web applications using the provided guidance. You can use the Web Client Development guidance package to generate the initial solution, add modules, add views and presenters, and so on.
The Web Client Software Factory provides the following benefits for the business team, the architecture team, the developer team, and the operations team.
Value for Business
Applications built using the Web Client Software Factory result in increased user productivity and simplification of business tasks. This is achieved through the following features:
- It provides common and consistent user interfaces; this reduces end-user training needs.
- It provides easy rollout of new and updated functionality and tasks by the business owners faster and with improved quality.
Value for Architecture Teams
Applications built using the Web Client Software Factory result in improved quality and consistency. This is achieved through the following:
- It has the ability to create a partial implementation of a solution that includes the most critical subsystems and shared elements. This partial implementation, known as the baseline architecture, addresses non-trivial design and development challenges, exposes the architectural decisions, and mitigates risks early in the development cycle and hides complexity from developers.
- It has the ability to create and distribute to developers the common development architecture for Web applications that include logging, exception handling, authentication, authorization, and a common appearance and behavior.
- It applies a modular approach that allows teams and/or departments to independently develop and deploy modules that look as if they were developed by one individual.
Value for Developer Teams
Applications built using the Web Client Software Factory result in increased productivity and faster ramp-up times for developer teams. This is achieved through the following:
- It provides an effective way to create a high-quality starting point (baseline) for Web applications. The baseline includes code and patterns typically discovered in Iteration 0, or the elaboration phases, of a project. This means that projects begin with a greater level of maturity than traditionally developed applications.
- It provides automation of common tasks in Visual Studio, such as creating a Web solution, creating business and foundational modules, and creating views with presenters. With this automation, developers can easily apply guidance in consistent and repeatable ways. The automation with the architecture does the following:
- It integrates your Web pages with master pages and themes for consistent user interfaces across teams.
- It creates proven solution and project structure that you would otherwise have to manually complete.
- It creates a profile-based user interface by using an ASP.NET site map, an ASP.NET role manager, and the Enterprise Library Security Application Block, so you do not have to write custom code.
- It creates test projects for you.
- It provides an abstraction and separation of concerns; this means that developers can focus solely on business logic, the UI, or the application services without requiring in-depth knowledge of the infrastructure and baseline services.
- It provides functionality that you can use on your existing ASP.NET sites.
Value for Operations Teams
Applications built using Web Client Software Factory result in a consolidation of operational efforts. This is achieved through the following:
- It supports use of XCopy deployment; this enables a common mechanism for updates and versioning across modules; this minimizes downtime.
- It uses distributed, module-specific configuration files; this minimizes configuration contention.
- It consolidates common components; this results in fewer, simpler files and it reduces the number of potential common language runtime (CLR) versioning issues.
- It provides a pluggable architecture that allows operations teams to control the basic services (such as authentication and exception logging) from server-side infrastructures.
- It provides a common exception management system that makes troubleshooting easier.
This guidance is intended for software architects and software developers. To develop applications using this guidance, you should have an understanding of the following technologies:
- Microsoft Visual Basic or Microsoft Visual C#
- Microsoft .NET Framework 3.0 or 3.5, depending on your application
- ASP.NET 2.0
- ASP.NET AJAX extensions if you are including them in your application
This guidance offering was designed to run on the Windows XP Professional, Windows Vista, or Windows Server 2003 operating system. Applications built using this guidance require:
- Microsoft Visual Studio 2008
- Microsoft .NET Framework 3.5
- Guidance Automation Extensions - February 2008 Release
The following components are optional:
- AJAX Control Toolkit. Download the toolkit if you want to take improve the responsiveness of your Web applications. The factory was tested with this version of the AJAX Control Toolkit.
- Enterprise Library 3.1. Download this component if you want to make full use of Enterprise Library.
- Guidance Automation Toolkit - February 2008 Release for Visual Studio 2008. This is required in order to modify the guidance package.
- Web Application Testing In .NET (WatiN). This is required if you want to run the acceptance tests released with the factory.
Note The link to WatiN is an external Web site. Please note that Microsoft is not responsible for the content of external Web sites.
You can use the Web Client Software Factory to address common requirements for different areas of your Web client application architecture. Figure 2 illustrates the primary application areas targeted by this release of the software factory.
Figure 2. Application architecture requirements targeted by the software factory
The following table lists the capabilities that the Web Client Software Factory-February 2008 release offers.
|Web Client Software Factory Capabilities||Application Blocks and Web Controls||Visual Studio automation||How-to topics and QuickStarts||Documentation and patterns||Reference implementation|
|Composing applications from individually developed, tested, and deployed units (modules).||Yes||Yes||Yes||Yes||Yes|
|Supporting XCopy deployment through distributed Web.config files||Yes||Yes||Yes|
|Unit testing Web user interface application logic||Yes||Yes||Yes||Yes||Yes|
|Separating the responsibility of UI design from UI development||Yes||Yes||Yes||Yes||Yes|
|Building responsive user interfaces||Yes||Yes||Yes||Yes||Yes|
|Using ASP.NET master pages, themes, and skins||Yes||Yes|
|Dynamically interact with ASP.NET site map||Yes||Yes||Yes||Yes|
|Deployment and updates|
|XCopy deployment and updates of independent modules||Yes||Yes||Yes||Yes|
|Module versioning by separating interfaces from implementation||Yes||Yes||Yes||Yes||Yes|
|Authentication (using Forms Authentication)||Yes|
|Profile based user interface and authorization||Yes||Yes||Yes||Yes|
|Input validation and output validation||Yes||Yes||Yes||Yes|
|Web service communication|
|Communicating synchronously with external Web services||Yes|
Relationship with Existing patterns & practices Assets
The software factory uses the Enterprise Library for a variety of features, including exception management, logging, data access, and authorization. The Enterprise Library is a set of application blocks designed to assist developers with common enterprise development challenges. The application blocks are designed to encapsulate the Microsoft proven practices for .NET Framework applications. For more information, see Enterprise Library.
The software factory uses the Guidance Automation Toolkit to automate common development tasks that simplify the development of templates and recipes. The Guidance Automation Toolkit is a lightweight Visual Studio extensibility mechanism. For more information, see the Guidance Automation Extensions and Guidance Automation Toolkit.
Are you new to the Web Client Software Factory? After installing the Web Client Software Factory, the best way to get familiar with the Web Client Software Factory is to do the following:
- Build a Hello World application. For information about how to do this, see the Getting Started page on the community Web site.
- Run the QuickStarts included with the software factory. For information about the QuickStarts, see the QuickStarts topic in the documentation.
- Download and complete the Hands-On Labs.
- Review the Exploring the Web Client Software Factory topic in the documentation.
This section provides links directly to the main topics included in the documentation. This documentation is also included when you install the Web Client Software Factory.
- Introducing the Web Client Software Factory
- Inspecting the Software Factory Assets
- Technical Concepts
- Developing Web Client Applications
- Deploying Web Client Applications
- Customizing the Web Client Software Factory
This software factory, like many patterns & practices deliverables, is associated with a community site. On this community site, you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future offerings and download additional content such as extensions and training material.
At the time of publication, no new releases of the Web Client Software Factory are planned for the 2008 fiscal year. The patterns & practices team will start collecting customer feedback on the February 2008 release. This feedback will be incorporated into our product planning process and will be broadly communicated in our community site.
Questions? Comments? Suggestions? To provide feedback about this software factory, or to get help with any problems, visit the Web Client Software Factory Community site. The message board on the community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. The Web Client Software Factory is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff.
The Web Client Software Factory was produced by the following individuals:
patterns & practices Team:
Alan Ridlehoover, Blaine Wastell, Bob Brumfield, Carlos Farre, Chris Tavares, Dragos Manolescu, Edward Jezierski, Eugenio Pace, Glenn Block, Larry Brader, Michael Puleio, Miguel Angel Saez, Mohammad Al-Sabt, Nelly Delgado, and RoAnn Corbisier (Microsoft Corporation)
Kathleen Bystrom, (ChannelCatalyst, Inc.)
Brian J. Cardiff, Juan Elichirigoity (Clarius Consulting)
Anbu Selvam Venkitachalam, Gopalasrinivasan Kuppuswamy, Lalitha Sundaram, Lavanya Selvaraj, Manju Alagianambi,Menakai Murugesan, Prasad Paluri, Soumya Desai, Srividhya Mahalingam, Terrence Cyril Joseph Anthuvan, Gokul Janardhanan, Kannan Munuswamy Ramajayam, Kansana Hariharan, and VijayaLakxme Kumar (Infosys Technologies Ltd)
Roberta Leibovitz (Modeled Computation LLC)
Johnny Halife, Mariano Szklanny, Matias Woloski, Ezequiel Jadib, Julian Dominguez, Tim Osborn, and Juan Arguello (Southworks)
Tina Burden McGrayne (TinaTech, Inc.)
Many thanks to the following advisors who provided invaluable assistance:
Andres Sanabria (Microsoft), Anthony Lombardo (Infragistics), Boris Rivers-Moore (Microsoft), Brian Goldfarb (Microsoft), Christian Bækdorf (KMD A/S), Daren May (EMC), David Armijo (Microsoft), David Francis (HBOS plc), David Hayden, David Pugmire (Excell Data Corporation), David Yack (.NET MVP), Dean Jennings (Amphire), Denis Bauer (Microsoft Germany), Devi Kumar (Merrill Lynch), Devin Rader (Infragistics), Fritz Onion (Pluralsight), Gary Taylor (EMC), Hagberg Mats(Volvo), Jarod Ferguson (Amphire Solutions, Inc.), Jimmy T. Rasmussen (Microsoft Denmark), Joe Butler (Risk Management Solutions), John Luif (EMC), Jonathan Swift (Microsoft), Julian Brown, Kashif Alam (Microsoft), Keith Smith (Microsoft), Ken Bergmann (Avanade), Kumar Unnikrishnan (Thomson Tax & Accounting), Magnus Martensson (Dotway AB), Mark Baker (BNA Software), Marty Bell (HBOS plc), Mats Hagberg (Volvo Information Technology), Nate Albert (Microsoft), Nick VanMatre (EMC), Norman Headlam, Paulo Morgado, Phillipe Lovoie (Catcus), Sanjoy Sarkar (Microsoft), Sergio A. Borromei (Microsoft), Shanku Niyogi (Microsoft), Simon Ince (Microsoft), Simon Muzio (Microsoft), Stefan Schackow (Microsoft), Travis J. James (Butterfly Software Group), and Ward Bell (IdeaBlade, Inc.)