Smart 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 quickly incorporate many of the proven practices and patterns of building composite smart client applications. These practices and patterns have been identified during the development of many smart client applications and their components.
By using the software factory, architects and developers can focus their efforts on business opportunities and create smart client applications that effectively address the needs of their organizations.
The Smart Client Software Factory provides an integrated set of guidance that assists architects and developers create composite smart client applications. These applications have one or more of the following characteristics:
- They have a rich user interface that takes advantage of the power of the Microsoft Windows desktop.
- They connect to multiple back-end systems to exchange data with them.
- They present information coming from multiple and diverse sources through an integrated user interface, so the data looks like it came from one back-end system.
- They take advantage of local storage and processing resources to enable operation during periods of no network connectivity or intermittent network connectivity.
- They are easily deployed and configured.
For Visual Studio 2008:
For Visual Studio 2005:
New in This Release
Relationship with Existing patterns & practices Assets
Roadmap, Feedback, and Support
Authors and Contributors
This software factory provides proven solutions to common challenges found while building and operating composite smart client applications. It helps architects and developers build modular systems that can be built and deployed by independent teams. Applications built with the software factory use proven practices for operations, such as centralized exception logging.
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 Windows Forms, Windows Presentation Foundation, Windows Communication Foundation, and the Enterprise Library 3.1 May 2007 release. With this release, the Composite UI Application Block is included in the software factory.
The April 2008 release of the Smart Client Software Factory includes support for Visual Studio 2008 and Guidance Automation Extensions — February 2008 release and Guidance Automation Toolkit — February 2008 release. This release does not support Visual Studio 2005. The Smart Client Software Factory - May 2007 release supports Visual Studio 2005.
Support for Occasionally Connected Clients
This release includes enhancements to support occasionally connected clients. An application is occasionally connected if it sometimes cannot interact with services or data over a network in a timely manner. The software factory includes the following applications blocks to support occasionally connected clients:
- Endpoint Catalog Application Block
- Connection Monitor Application Block
- Disconnected Service Agent Application Block
Support for Windows Presentation Foundation Integration
This release contains extensions to the Composite UI Application Block that you can use to integrate Windows Presentation Foundation SmartParts into your Windows Forms applications. (For a description of these extensions, see "Composite UI Application Block Extensions for WPF" in the documentation.)
Composite UI Application Block
This release includes the source code and signed assemblies for the Composite UI Application Block. This means that you do not have to download, install, and compile the Composite UI Application Block. (The source code is unchanged from the December 2005 release.)
This release includes several QuickStarts. QuickStarts are brief, easy-to-understand illustrations of key software factory activities.
Enterprise Library Assemblies
This release includes the signed assemblies for Enterprise Library 3.1 May 2007. This means that you do not have to download, install, and compile the Enterprise Library.
Guidance Package Enhancements
The guidance package includes new recipes and templates to support the new capabilities. In addition, this release includes and uses the Guidance Automation Extensions (GAX) Library.
ClickOnce Deployment Guidance
ClickOnce is a smart client deployment mechanism that is part of the .NET Framework 2.0. The ClickOnce deployment guidance in this release can be used to deploy smart client applications to different groups of users. Additionally, the guidance describes strategies to handle large scale deployments.
Architects should use the software factory to create their own client baseline architecture. They can distribute that baseline for developers to use as a starting point for smart client applications. Developers can use the software factory to quickly create smart client applications that follow the proven practices and apply their company baseline architecture. Figure 1 illustrates the process for using the Smart Client Software Factory on the fictitious Global Bank project.
Figure 1. Smart Client Software Factory scenarios
As the architect, you want to make sure that your smart client applications derive from a sound, proven practice-based foundation that has the following characteristics:
- 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 Smart 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 smart client composite applications.
You take this out-of-the-box baseline and customize and extend it to 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, your own naming conventions, and custom actions
- 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 smart client application. A baseline architecture, such as the Smart 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, QuickStarts, and the reference implementation (Bank Branch Client) to understand the proven practices for developing smart client applications using the provided guidance. You can use the Smart Client Development guidance package to generate the initial solution, add modules, add views and presenters, and so on.
The Smart 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 Smart Client Software Factory result in increased user productivity and simplification of business tasks. Applications created with the software factory can be characterized by the following attributes:
- The applications provide common and consistent user interfaces; this reduces end-user training needs.
- The applications provide easy rollout of new and updated functionality and tasks by the business owners.
- The applications provide user interfaces that allow end users to perform tasks in a free-form manner or that prescriptively follow business workflows.
- The applications provide data quality improvements that remove the need for data exchange between application parts through the "ALT+TAB" and "copy and paste" techniques.
Value for Architecture Teams
Applications built using the Smart 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.
- It has the ability to create and distribute to developers the common development architecture for smart client applications.
- It has the ability to create a consistent and predictable way of developing, packaging, rolling out, and updating business components to enforce architectural standards independent of business logic.
- It has the ability to scale enterprise-wide guidance (such as patterns and Microsoft proven practices) when building enterprise smart client solutions.
Value for Developer Teams
Applications built using the Smart 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 smart client 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 reuse of assets, guidance, and examples that address common smart client scenarios and challenges.
- It provides automation of common tasks in Visual Studio; with this, developers can easily apply guidance in consistent and repeatable ways.
- It provides reuse of an application framework that hides complexity and boosts productivity.
- 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 increased reusability of infrastructure code.
Value for Operations Teams
Applications built using Smart Client Software Factory result in a consolidation of operational efforts. This is achieved through the following:
- It consolidates shell applications, which results in only one executable file shipped and reduces the number of potential common language runtime (CLR) versioning issues.
- It provides a way for easier rollout of common business elements and modules, which results in consistent configuration management and instrumentation implementations across a suite of applications.
- It provides a pluggable architecture that allows operations teams to control the basic services (such as authentication and catalog provisioning) from server-side infrastructures; this enables smart client applications to be centrally managed, many at a time.
- It uses ClickOnce, which enables a common mechanism for updates and versioning across modules.
The Smart Client Software Factory is an integrated collection of tailored software assets that support composite client application development. The collection includes the following:
- Application blocks and libraries. The Composite User Interface Application Block, the Disconnected Service Agent, the End Point Catalog, and the Connection Monitor are included in the software factory. The software factory also uses Enterprise Library application blocks for security, exception management, logging, and data access.
- Recipes. The software factory includes the Add View (with presenter) recipe, Add WPF-View (with presenter) recipe, Add Disconnected Service Agent recipe, Add Event Publication recipe, and Add Event Subscription recipe. Recipes automate procedures in How-to topics, either entirely or selected steps. They help developers complete routine tasks with minimal input.
- Template. The software factory includes the Solution template, Business Module template, and Foundational Module template. Templates are prefabricated application elements with placeholders for concrete arguments. They can be used for many purposes, including creating initial solution structures to creating individual solution artifacts, such as project items.
- Patterns. The software factory includes patterns architects and developers frequently use when creating composite smart client applications.
- QuickStarts. The software factory includes the following QuickStarts: EventBroker, ModuleLoader, SmartPart, Commands, BankTeller, Windows Presentation Foundation Integration, Connection Monitor, Endpoint Catalog, and Disconnected Service Agent. QuickStarts are brief, easy-to-understand illustrations of key software factory activities. QuickStarts are an ideal starting point if you want to gain an understanding of a software factory activity and are comfortable learning new techniques by examining source code.
- How-to topics. The software factory includes How-to topics; these are documented step-by-step instructions that describe how to implement recommended practices in a specific domain.
- Reference implementation. The software factory includes the Bank Branch Client reference implementation. A reference implementation provides an example of a realistic, finished product that the software factory helps developers build. The Bank Branch Client illustrates a multi-module, complex, and always connected client.
Figure 2 illustrates the Smart Client Software Factory assets.
Figure 2. Smart Client Software Factory assets
The software factory also uses the following existing patterns & practices assets:
- Enterprise Library Exception Handling Application Block, Logging Application Block, Caching Application Block, Security and Data Access Application Blocks
- Guidance Automation Extensions
- Guidance Automation Toolkit
The assets included in the Smart Client Software Factory help architects and developers solve the common challenging aspects of building smart client applications. Smart Client Software Factory assets, such as automated code generation, provide proven solutions for common challenges. The software factory assets can also be customized and extended for your specific requirements.
Figure 3 illustrates the Smart Client Software Factory demonstrated guidance.
Figure 3. Smart Client Software Factory guidance demonstrated
Table 1 lists the capabilities the Smart Client Software Factory offers.
Table 1: Smart Client Software Factory Capabilities
|Smart Client Software Factory capabilities||Application blocks||Visual Studio automation||How-to topics and QuickStarts||Documentation and patterns||Reference implementation|
|Building composite UIs that are based on integration of multiple back-end systems||Yes||Yes||Yes||Yes||Yes|
|Composing applications from individually developed, tested, and deployed modules (parts). You can control the module loading sequence.||Yes||Yes||Yes||Yes||Yes|
|Obtaining the configuration of the application (list and loading sequence of modules) from a central location||Yes|
|Separating responsibilities of visual display from business logic handling behavior||Yes||Yes||Yes||Yes|
|Providing multiple layouts for the same application||Yes||Yes|
|Supporting navigation panes (area where modules can register themselves)||Yes|
|Supporting task panes (areas where modules can add entries to their logic)||Yes|
|Loosely coupling components by allowing them to communicate through events||Yes||Yes||Yes||Yes||Yes|
|Deployment and updates|
|ClickOnce deployment and updates||Yes||Yes|
|Supporting module versioning by separating module implementation from module interfaces||Yes||Yes|
|Supporting deploying modules independently||Yes|
|Supporting deploying by group||Yes||Yes|
|Supporting deploying for high server load||Yes||Yes|
|Implementing a Custom ClickOnce Server File Repository||Yes||Yes|
|Web service communication|
|Communicating with Web services and working offline||Yes||Yes||Yes||Yes|
|Caching frequently accessed data for fast retrieval||Yes|
|Changing the UI behavior based on user role (authorization)||Yes||Yes|
The software factory uses the Enterprise Library for a variety of features, including exception management and logging. 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 3.1 May 2007 (for .NET Framework 2.0 and 3.0).
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.
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#
- Windows Forms
- Microsoft .NET Framework 3.5
This guidance offering was designed to run on the Microsoft Windows Vista, Windows XP Professional, or Windows Server 2003 operating system. Applications built using this guidance will require the .NET Framework 3.5 to run. Before you can use the Smart Client Software Factory, the following must be installed:
- Microsoft Visual Studio 2008
- Microsoft .NET Framework 3.5
- Guidance Automation Extensions (February 2008 or later) Note: if you do not install the Guidance Automation Extensions, you will not be able to use the guidance package, but you can still install the factory.
- SQL Server 2005 Compact Edition
Optional components are the following:
- Enterprise Library 3.1. Download this component if you want to make full use of Enterprise Library.
- Guidance Automation Toolkit for Visual Studio 2008 (February 2008 or later). This is required to modify the guidance package.
- Microsoft Visual Studio 2008 SDK. This is required to modify the guidance package.
For recommendations about how to quickly use the guidance available in this software factory based on your goals, see Getting Started with the Smart Client Software Factory on the community Web site.
This section provides links directly to the main topics included in the documentation. This documentation is also included when you install the Smart Client Software Factory.
- Introducing the Smart Client Software Factory
- Inspecting the Software Factory Assets
- Development Activities
- Deploying Smart Client Applications with ClickOnce
- Customizing the Smart Client Software Factory
This section outlines the future plans, how to become involved in the community, and the support for the Smart Client Software Factory.
At the time of publication, no new releases of the Smart Client Software Factory are planned for 2008. The patterns & practices team will start collecting customer feedback on the April 2008 release. This feedback will be incorporated into our product planning process and will be broadly communicated in our community site.
The Smart Client Software Factory, like other 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.
Feedback and Support
Questions? Comments? Suggestions? To provide feedback about this software factory, or to get help with any problems, visit the Smart Client Guidance Community site. The message board on the community Web site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community.
The Smart 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 Smart Client Software Factory was produced by the following individuals:
- Program and product management: Blaine Wastell, Eugenio Pace and Glenn Block (Microsoft Corporation)
- Architect: Edward Jezierski and Wojtek Kozaczynski (Microsoft Corporation)
- Development: Brad Wilson, Chris Tavares, Michael Puleio, Miguel Angel Saez, and Peter Provost (Microsoft Corporation); Brian J. Cardiff, Hernan De Lahitte and Juan Elichirigoity (Clarius Consulting); Oscar Calvo (Artinsoft); Ezequiel Jadib, Ignacio Baumann Fonay, Jonathan Cisneros, Juan Arguello, Julián Dominguez, Mariano Converti, Mariano Szklanny, Matias Woloski, and Sebastian Iacomuzzi (Southworks S.R.L)
- Test: Carlos Farre and Mohammad Al-Sabt (Microsoft Corporation); Ajit V. Mhaiskar, Aruppukotai Periyasamy, Deepa Javeri, Deiva Shankar UthayaSankaralingam, Gokul Janardhanan, Harish Peranamallur Natarajan, Kannan Munuswamy Ramajayam, Lavanya Selvaraj, Manivasagam Sundaravelayutham, Meenakshi Krishnamoorthi, Min Zhou, Pallavi Venugopal, Prasad Paluri, Rohit Sharma, Sandesh P. Ambekar, Saravanan Marappan, Sudhan Subramaniam Arunachalam Kanchana, Terrence Cyril Joseph Anthuvan, and Venkata Padmalatha Pappala (Infosys Technologies Ltd)
- Documentation: Nelly Delgado and RoAnn Corbisier (Microsoft Corporation); Tim Osborn (Ascentium Corporation); and Tina Burden McGrayne (TinaTech Inc.)
- Release management: Kathleen Bystrom (ChannelCatalyst.com, Inc.)
Many thanks to the following advisors who provided invaluable assistance:
- Arvindra Sehmi, Brad Abrams, Christian Thilmany, David Armijo, David Hill, Edward Jezierski, Guillermo Villanueva, J.D. Meier, Keith Pijanowski, Matt Smith, Philip Reilly, Simon Guest, Simon Muzio, Srinath Vassireddy, Steve Lasker, and William Loeffler (Microsoft Corporation); Alejandro G. Jack (Southworks S.R.L., PD Officer, Southworks S.R.L.); Andres Aguiar (DeKlarit); Andrew M. Flick (Product Manager, Infragistics); Attila Hajdrik; Bartek Pampuch; David Francis (HBOS Plc); Jason Beres (Chief Technical Evangelist, Infragistics); Javier Martínez Álvarez (Architect, Telefonica I+D (www.tid.es)); Kai Makipera (Software Architect, Volvo Information Technology); Kevin Herrmann (Henry Schein PMTS Medical Division); Mark M. Baker (Chief Research & Development, BNA Software); Michael Sparks; Norman Headlam (Fidelity Investments); Rene Hautle (Senior Architect, Mphasis Corporation); Teddy Cineas (.NET Solutions Architect, Wells Fargo Bank, OXIONE); and Thomas Wyatt (Senior Software Engineer, Mphasis Corporation).
- Enterprise Library
- Guidance Automation Extensions and Guidance Automation Toolkit
- Composite UI Application Block