| Introducing the Mobile Client Software Factory |
by Microsoft Corp. (Jun. 13, 2006)
Foreword -- Developers building line-of-business applications for Windows Mobile devices now have a new source of assistance. The Microsoft patterns and practices team has released a Community Technology Preview (CTP) of its new Mobile Client Software Factory (MCSF), formerly known as the Mobile Baseline Architecture Toolkit. Architects can use the offering to create a baseline architecture for their organization, according to Microsoft, and then, developers can use that baseline architecture to create mobile client applications in a predictable and agile way.
Basically, MSSF includes: - Prescriptive architecture documentation
- A reference implementation including sample application source code
- Application blocks that provide reusable self-contained components
- How-to topics containing step-by-step instructions
- A Guidance Automation Toolkit package that automates common mobile client development tasks in Visual Studio
The following Microsoft-authored article introduces the MCSF and provides information on how to take advantage of what it has to offer.
Introducing the Mobile Client Software Factory
by Microsoft Corp.
Summary
The Mobile Client Software Factory provides an integrated set of guidance to help architects and developers create line-of-business Windows Mobile applications that interact with back-end systems over various networks (WiFi, GPRS, etc.) that might be intermittently available. A mobile smart client line-of-business application has one or more of the following characteristics: - It has a rich user interface that takes advantage of the power of the Windows Mobile device.
- It connects to and exchanges data with multiple back-end systems through a gateway server through the most cost effective underlying network technology.
- It takes advantage of local caching and processing to enable operation during periods of no network connectivity or intermittent network connectivity.
- It is easily deployed and configured.
- It keeps local, potentially confidential information secure.
The guidance assets included in the Mobile Client Software Factory take different forms: patterns, step-by-step instructions (How-to topics), sample application source code (reference implementation), reusable self-contained components (application blocks), a Guidance Automation Toolkit package that automates common mobile client development tasks in Visual Studio, and architecture documentation.
This offering also leverages the following existing patterns & practices assets: - Composite UI Application Block ported into the .NET Compact Framework
- Specific application blocks for logging, data access, and so on
- Guidance Automation Toolkit
Architects can use the offering to create a baseline architecture for their organization. A baseline architecture is a starting point for implementing instances of similar applications -- in this case, a mobile application -- that includes the most critical mechanisms and shared elements common to those applications. Developers can use the baseline architecture to create mobile client applications in a predictable and agile way.
The Mobile Client Software Factory has been developed following an agile, community-connected process. This means that both frequent drops and milestone releases (Community Technology Previews, also known as CTPs) are made available to the community. A milestone release provides a high level of quality and consistency of the factory. The weekly drops are works-in-progress used to obtain early feedback from the community. The community feedback influences the contents and direction of the deliverable.
Overview
Architects and developers identify and discover proven practices and patterns through application development. This is an extensive process, especially when proven practices and patterns are discovered later in the application life cycle and force application refactoring. Alternatively, development teams can investigate and attempt to identify proven practices and patterns before starting the application development project. This also can be a time consuming and difficult activity because patterns and practices are most easily identified during actual application development.
With the Mobile Client Software Factory, architects and developers can quickly incorporate many of the proven patterns and practices of mobile client development. The offering provides you with a set of proven practices that are exposed through patterns, How-to topics, reference implementations, Visual Studio Guidance Automation Toolkit packages, reusable components, and documentation. The factory content guides you through the development of mobile applications based on the Compact Composite User Interface Application Block architecture. By using the factory, architects and developers can focus more of their efforts on implementing business requirements.
Scenarios
The growing capabilities of mobile devices such as the Pocket PC, and their increasingly widespread usage within the commercial world, provide an opportunity for business solutions to broaden their spread to include remote and mobile workers. This may be sales staff traveling away from the office, goods dispatch workers in a warehouse, or offsite engineers. All of these may require access to the corporate IT system in either a connected or a disconnected scenario.
For example, sales staff may need to check product specifications or delivery schedules while on a customer's premises. This scenario suits an offline (disconnected) model, where the central system updates the data stored on the mobile device at specific intervals - perhaps when the user is in the office each morning, or connected from home or a hotel room in the evening. At the same time, the device pushes updates, such as new orders, back to the central server.
Staff working within the corporation premises may also require a mobile solution, such as when checking stock in a warehouse or assembling orders for dispatch. A connected (online) model suits this scenario.
Offsite engineers may require live data for some or all of the time but be out of range of the corporate wireless network. In this case, a cellular telephone connection can provide an online experience for periods where this is required, while an offline model may be suitable for other tasks.
Add to these scenarios the fact that users will often require several applications to be available, perhaps dependent on roles defined within the main system, and all integrated with a back-end Enterprise Resource Planning (ERP) or Contact Relationship Management (CRM) platform. All these factors combine to require something more than simple individual applications. Instead, as demonstrated by the example application shown in Figure 1, the requirement is for comprehensive, extensible, and flexible mobile business solutions.
 Figure 1. An example of a mobile business solution (Click image to enlarge)
Figure 2 shows the common elements of a mobile business solution based on the Microsoft operating system and a range of applications and services. The Microsoft platform provides the core features required for all applications, including the tools and code libraries required to build mobile applications, and the services to provide data and integration facilities to these applications. In most cases, complex mobile solutions will integrate with a back-end ERP or CRM system or other corporate application.
 Figure 2. The base platform, layers, and components of a mobile business solution (Click image to enlarge)
The upper section of Figure 2 shows the approach to mobile business solution development that the Mobile Client project enables. The proven techniques and code blocks developed by the patterns & practices group, together with code blocks developed by Microsoft partners, implement the services and components for applications running on the mobile client device.
Meanwhile, Figure 3 shows the actual architecture of a simple mobile application. The common elements include: - User interface layers that consist of:
- Views -- These are controls on the screen that the user can interact with.
- Presenters -- These are classes that drive the views.
- Business logic layers, consisting of:
- Business entities -- These are classes that represent business concepts such as "Customer", "Bank Account," or "Address."
- Business logic components -- These are classes that implement the majority of the business logic within the application.
- Business workflows -- These drive the overall flow of control within the application.
- Resource and data layers consisting of:
- Data access components -- These can fetch data from a local store such as Microsoft SQL Server Mobile Edition, and they may use infrastructure components to manage data subscriptions and expirations.
- Service agents -- These act as proxies to external Web services and meet the additional challenge of working in occasionally connected environments.
 Figure 3. Common components and layers of a mobile line of business application (Click image to enlarge)
Building applications that follow the design and structure shown in Figure 3 requires infrastructure components that implement common tasks, including: - Management:
- Logging -- This includes storing data about instrumentation events that can be collected on the server when connected.
- Deployment -- This makes it easier to deploy applications to the device and update them as you add new functionality.
- Configuration -- This includes supporting rich storage mechanisms and allowing the server to push complex data such as specific configurations per user or per device
- Security:
- Credential management -- This includes storing user credentials so that calls to occasionally connected Web Services can be authenticated.
- Connectivity:
- Connection and network management -- This includes providing features for assessing the current connectivity of the device and reacting to changes in connectivity.
You can also simplify the application architecture and development of its internal logic by use of the container model. The Mobile Client Software Factory uses the Compact Composite UI Application Block as the basis for this container. The Composite Application Block included in the mobile project is an almost exact replica of the Composite Application Block that is available for desktop .NET applications, which means that you can take advantage of existing skills and code across both environments.
Architect Scenarios
As the architect, you want to make sure that your mobile smart client applications derive from a sound, proven practice-based foundation that: - Provides a standard approach to application development.
- Promotes re-usability of common architectural components.
- Hides complexity.
- Allows developers to focus on business problems instead of infrastructure components.
The Mobile Client Software Factory provides a starting point for creating that foundation. It provides out-of-the-box implementation of a set of features and mechanisms that are common to mobile applications. Additionally, you can customize and extended it to better fit your specific needs. You can add your patterns, How-to topics, and extend the Guidance Automation Toolkit packages to meet specific requirements for your organization.
Developer Scenarios
As an application developer, you want to focus on the business logic and the user experience of your application. You want to use a baseline that provides you with the necessary infrastructure and the architecture mechanisms that you need. That baseline is the Mobile Client Software Factory modified and extended by the architect.
You will review the patterns, the How-to topics, and the reference implementation to understand the proven practices for developing smart clients. After you are ready to build your application, you will use the Guidance Automation Toolkit packages to generate items such as your initial solution, modules, and service agent.
Benefits
The Mobile Client Software Factory provides the following benefits: - Accelerated start -- It provides an effective way for architects and developers to create a high-quality starting point (baseline) for their solutions. The baseline includes code and patterns that are typically discovered in Iteration 0, or the inception and elaboration phases, of a project. This means that projects begin with a greater level of maturity than applications developed without source code or guidance.
- Reduced risk -- It provides you with a proven baseline architecture. The baseline addresses the architecturally significant use cases by exposing design decisions and risks early in the development cycle.
- Increased quality -- It provides reusable assets, guidance, and examples that address common smart client scenarios and challenges. The code and guidance have been tested for the target scenarios. Tests are supplied as part of the package and they can be extended and used to automatically verify changes and identify problems.
- Increased productivity -- It includes automation for Visual Studio 2005. With this automation, developers can easily apply guidance in consistent and repeatable ways.
- Ease of adoption -- It is open and customizable. Architects and development leads can customize the factory to meet specific needs. The factory is fully documented.
Factory Contents
The Mobile Client Software Factory contains the following:
Documentation: - Introduction to the Mobile Client Software Factory -- This provides a vocabulary and framework that the remaining documentation uses to describe the mobile client architecture.
- Mobile Client SF Application Blocks -- This provides a thorough description of common, reusable building blocks inspired in popular desktop application blocks like the Composite UI Application Block and Enterprise Library; and other more specific ones like the Orientation Aware Control Application Block.
- Patterns -- This introduces patterns that provide solutions to common mobile client design, implementation, and deployment challenges.
- Quick Starts Examples -- Simple, introductory, step-by-step instructions to build a mobile application using the Compact Composite UI Application Block.
- Reference Implementation -- This describes the requirements, architecture, and implementation of the AdventureWorks2Go reference implementation.
- Reference implementation -- The reference implementation is an executable sample application that demonstrates the mobile client guidance in action. You can use the reference implementation to learn how the factory's deliverables are applied, or you can use it to copy code or concepts into your applications.
- Guidance package -- The Mobile Client Development Package automates development activities that developers would usually have to manually perform frequently by following a series of instructions. It helps developers build smart client solutions in a way consistent with the architecture guidance.
Existing patterns and practices Assets
The factory uses a ported version of the Composite UI Application Block to address the core Client UI patterns -- such as composite, provider, event broker, and layout management. The Composite pattern combines simple user interface parts to create a complex user interface while allowing the parts to be independently developed, tested, and deployed. For more information, see the Composite UI Application Block.
The factory also uses modified versions of Enterprise Library to address common challenges such as data access.
The toolkit 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 Visual Studio Team System Developer Center.
Many patterns implemented in the Mobile Client Software Factory are also available for desktop Smart Clients in the Smart Client Software Factory.
Intended Audience
This guidance is intended for software architects and software developers. To develop using this guidance, you should have an understanding of the following technologies: - Microsoft Visual C# or Microsoft Visual Basic 2005
- Microsoft .NET Framework 2.0 and .NET Compact Framework 2.0
- Windows Forms
- Windows Mobile 5.0
Applications built using this guidance will require the .NET Framework 2.0 to run.
System Requirements and Installation
The minimum requirements for satisfactory performance when developing Mobile Client applications are: - Using an external device:
- Windows XP or Windows Server 2003
- 1.5 GHz processor
- 512 MB memory (1 GB preferable for best performance)
- 20 MB free disk space
- Pocket PC device with 512 MB memory available
- Using the Visual Studio Mobile Device Emulator:
- Windows XP or Windows Server 2003
- 1.5 GHz processor
- 1 GB memory (2 GB preferable for best performance)
- 20 MB free disk space
Before using the Mobile Client Software Factory, you must install some tools and utilities. The requirements for developing with and using the Mobile Client Software Factory are: - Visual Studio 2005, available from here
- .NET Compact Framework 2.0, installed with Visual Studio 2005 or available separately from here and here
- SQL Server 2005 Mobile Edition, available with some versions of Visual Studio 2005 and SQL Server 2005, or from here and here
- Windows ActiveSync 4.1, available here
- Windows Mobile 5.0 Pocket PC SDK from here and here
- Localized emulator images are available from here and here
Alternatively, you can download the Windows Mobile 5.0 Developer Resource Kit from here. This contains: - A 90-day trial version of Visual Studio 2005 Professional Edition
- Windows Mobile 5.0 SDKs for Pocket PC and Smartphone
- ActiveSync 4.1
- .NET Compact Framework 2.0
- Localized emulator images and other useful developer tools
- SQL Server 2005 Mobile Edition
The mobile devices tested against the Mobile Client Software Factory, based on their capabilities. - Windows Mobile 5 phone devices:
- The Cingular 8125 PocketPC phone is a GSM-capable device that has a quarter VGA screen and a slide-out keyboard. It is useful for testing screen orientation changes, and keyboard support. This phone has features that are hard to test with the emulator.
- The T-Mobile MDA is a GSM-capable device.
- The Verizon XV6700 (the same as the Sprint PPC-6700) is a CDMA-capable device.
- Mobile devices with a square display:
- The Palm Treo700w is a Windows Mobile 5.0 phone with a square screen, useful for testing with a square screen and keyboard support. You can also use the equivalent emulator for this type of testing.
- The HP iPAQ hw6515 phone has a square screen with a keyboard below, but is a Windows Mobile 2003 device.
- Mobile devices with a VGA screen:
- The Dell Axim x51v has a VGA screen.
Mobile Client Software Factory Features
Table 1 lists the features the Mobile Client Software Factory provides guidance for.
Table 1: Guidance for Mobile Client Software Factory Features
| Smart client feature | Guidance | Automation | | Asynchronous communication to Web services, queuing messages, and working offline | Patterns Reference Implementation Connection Monitor Application Block Service Agent Application Block | X | | Building complex UIs based on independently developed, tested, and deployed parts (smart parts) | Compact Composite UI Application Block QuickStarts Reference Implementation | X | | Building UIs that are independent of screen sizes, screen resolutions, and screen orientations. | Orientation Aware Control Application Block Reference Implementation | | | Loosely coupled components communicating by way of events | Compact Composite UI Application Block Reference Implementation | | | Configuration | Configuration Application Block Reference Implementation | X | | Synchronizing reference data | Reference Implementation | | | Unit testing components on the device | Reference Implementation TestRunner for Compact Framework | |
Getting Started
The following recommendations provide a way to quickly use the guidance in this toolkit according to your needs.
To learn about proven practices of mobile client development: - Install the software factory.
- Read the documentation for common patterns that you can use.
- Review the reference implementation.
- Read and follow the procedures in the QuickStarts.
To create a mobile client application using the assets and prescriptions of the package: - Install the software factory.
- Use the templates and recipes in the guidance package.
- Read and follow the procedures in the QuickStarts example.
- Review the Reference Implementation. Use it as a starting point for your own application
Note:
To download the Windows Installer for the toolkit, you have to register with the Mobile Client Software Factory Community. The download and installation process installs a Getting Started page on your Start menu. For more information about Getting Started, click Start on the taskbar, click All Programs, click Microsoft patterns & practices, click Mobile Client Software Factory, and then click Getting Started.
Other Topics
Community
The Mobile 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.
Future Plans
The Mobile Client Software Factory will continue to evolve through June 2006. During this period, the team will continue to publish weekly drops. The team uses the community, partners, customers, and product groups to prioritize the exact capabilities to build into the toolkit.
Feedback and Support
Questions? Comments? Suggestions? To provide feedback about this toolkit, or to get help with any problems, visit the Mobile Client Software Factory Community. 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. Alternatively, you can send e-mail directly to the Microsoft patterns & practices team at devfdbck@microsoft.com, although we are unable to respond to every message.
The Mobile Client Software Factory is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. For more information, see Table 2.
Table 2: Mobile Client Software Factory Attributes
| Attribute | Description | | Support | 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 patterns & practices team works with product support and will assist them with escalations as needed. Customers are encouraged to support one another through online communities. | | Functionality | This guidance provides a flexible and architecturally sound solution to a common enterprise development challenge. The guidance addresses the challenges by using base platform features and adhering to proven practices. The guidance is designed to be extended and customized by users. | | Release | Guidance releases are typically developed in a 3 -- 6 month life cycle. Assets are released as they become ready on the currently available platform. New versions of existing assets (possibly revised to run on later versions of the platform) are released if there is sufficient customer demand. | | Compatibility | Code-based guidance is designed to help solve problems on specific versions of Microsoft products. As the products change, the guidance issued may change or become obsolete. When possible, the patterns & practices team Microsoft develops guidance with future releases in mind. There are no guarantees about compatibility with earlier releases of guidance or with past or future platform releases. A phased migration strategy is recommended, and coexistence of multiple versions of the guidance is given high priority by the patterns & practices team. | | Form factor | This guidance is released as source code. Variability is provided through configuration and defined extensibility points, as well as through direct modification of the source code. Documentation focuses on how to use the asset, how to extend it, and the goals, patterns, and tradeoffs that drive its design. |
Authors and Contributors
The Mobile Client Software Factory was produced by the following individuals: - Program and product management: Per Vonge Nielsen and Eugenio Pace (Microsoft Corporation)
- Architect: Edward Jezierski (Microsoft Corporation)
- Development: Francis Cheung (Microsoft Corporation); John Socha-Leialoha; Daniel Cazzulino (Clarius Consulting), Santiago Blason and Jose Salazar (Clarius Consulting / Q4 Tech)
- Test team: Carlos Farre and Mohammad Al-Sabt (Microsoft Corporation); Rohit Sharma and Terrence Cyril Joseph Anthuvan (Infosys Technologies Ltd)
- Documentation: Alex Homer (Content Master Ltd.)
- Release management: Sanjeev Garg (Microsoft Corporation)
The Mobile Client Software Factory was developed in collaboration with Microsoft Mobile Application Group: - Erik Dibbern Roser, Ricky Kaare Rasmussen, Laurent Lopez, and Bjarne Schon
And the Mobile and Embedded Devices Group in Microsoft Corporation: - Eric Engineer, John Dietz, and Loke Uei Tan
Patterns & Practices also thanks the following expert advisors, who provided invaluable assistance throughout the development of the project: - Alex Yakhnin (Infusion Development), Andy Wigley (Andy Wigley Computing Ltd), Dan Fergus (Forest Software Group), Daniel Moth (Microsoft UK), Keni Barwick (Conchango), Leandro Olivestro (Q4Tech S.A.), Maarten Struys (PTS Software bv), Nickolas Landry (Infusion Development), and Peter Nowak (T-Systems Enterprise Services GmbH, Germany)
Related resources
- Downloads:
- Community:
- License:
- Related titles:
For more information on this and related software development topics, visit Microsoft's Patterns & Practices Developer Center
Copyright (c) 2006 Microsoft Corp. All rights reserved. Reproduced by WindowsForDevices.com with permission.
Related stories:
(Click here for further information)
|
|
|
|
|
|
|