Scenarios and Benefits
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 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.
As the architect, you want to make sure that your smart client applications derive from a sound, proven practice-based foundation that meets the following requirements:
- It provides a standard approach to application development.
- It promotes reuse 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 includes a sample implementation of a set of features and mechanisms that are common to smart client composite applications. This implementation includes:
- Patterns, such as the Model-View-Presenter (MVP) pattern and the Asynchrononous Web Service Invocation with Timeout pattern
- How-to topics, such as How to: Create Smart Client Solutions and How to: Map Business Entities to User Interface Elements
- Guidance automation for smart client application development, such as the Guidance Automation Toolkit and Guidance Automation Extensions
You can extend and customize the sample implementation to fit your specific needs. You can add patterns and how-to topics, and extend the guidance automation to meet specific requirements of your organization.
As an application developer, you want to focus on the business logic and the user experience of your smart client application. You want to use a baseline that provides the necessary infrastructure and the architecture mechanisms that you need. That baseline is the Smart Client Software Factory, possibly modified and extended by the architect.
You can review the patterns, such as Model-View-Presenter and Action Catalog; the how-to topics, such as How to: Create a Business Module and How to: Create a Disconnected Service Agent; and the Bank Branch Client reference implementation to understand the proven practices for developing smart clients. When you are ready to build your smart client application, you can use the Smart Client Development Guidance Automation Toolkit package to generate the initial solution, the modules, the views and presenter, the service agent, 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
Businesses that use the Smart Client Software Factory to build applications experience increased user productivity largely due to consistent, simplified business tasks. This is achieved through the following:
- Common and consistent user interfaces, which reduce the need for end-user training.
- Easy deployment of new and updated functionality and tasks.
- Flexible user interfaces that allow end users to perform tasks in a free-form manner or in a manner that follows business workflows.
- 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
Architects who use the Smart Client Software Factory to design applications and systems experience improved quality and consistency. This is achieved because the software factory provides the following:
- The ability to create a partial implementation of a solution that includes the most critical mechanisms 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.
- The ability to create and distribute to developers the common development architecture for smart client applications.
- The ability to create a consistent and predictable way of developing, packaging, deploying, and updating business components to enforce architectural standards independent of business logic.
- The ability to scale enterprise-wide guidance (such as patterns and Microsoft proven practices) when building enterprise smart client solutions.
Value for Developer Teams
Developer teams that use the Smart Client Software Factory to build applications achieve increased productivity and incur less ramp-up time. This is achieved because the software factory provides the following:
- 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.
- Reusable assets, guidance, and examples that address common smart client scenarios and challenges.
- Automation of common tasks in Visual Studio. This allows developers to easily apply guidance in consistent and repeatable ways.
- A reusable application framework that hides complexity and boosts productivity.
- A layer of abstraction that hides complexity and separates concerns, which means that developers can focus on business logic, the UI, or the application services without requiring in-depth knowledge of the infrastructure and baseline services.
- Abstraction of common developer tasks, which results in increased productivity and maintainability.
- Increased reusability of infrastructure code.
Value for Operations Teams
Applications built from the Smart Client Software Factory result in a consolidation of operational efforts. This is achieved because the software factory provides the following:
- Consolidation of shell applications, which results in only one executable file shipped and reduces the number of potential common language runtime (CLR) versioning issues.
- Easier deployment of common business elements and modules, which results in consistent configuration management and instrumentation implementations across a suite of applications.
- 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.
- ClickOnce technology, which enables a common mechanism for updates and versioning across modules.