Web Service Software Factory: Modeling Edition

patterns & practices Developer Center

February 2008

Summary

The Web Service Software Factory: Modeling Edition (also known as the Service Factory) is an integrated collection of resources designed to help you quickly and consistently build Web services that adhere to well-known architecture and design patterns. These resources consist of patterns and architecture topics in the form of written guidance and models with code generation in the form of tools integrated with Visual Studio 2008.

Resources Location
Downloads For Visual Studio 2008:
Web Service Software Factory: Modeling Edition – February 2008 Refresh for Visual Studio 2008 (Binary Release)
Web Service Security Guidance Package – February 2008 for Visual Studio 2008
Optional:
Web Service Software Factory: Modeling Edition – February 2008 Refresh for Visual Studio 2008 (Source Code Release)

For Visual Studio 2005:
Web Service Software Factory: Modeling Edition – November 2007 for Visual Studio 2005 (Binary Release)
Web Service Security Guidance Package – November 2007 for Visual Studio 2005
Optional:
Web Service Software Factory: Modeling Edition – November 2007 for Visual Studio 2005 (Source Code Release) 
Hands-on Labs 15 Minute Walkthrough
Hands-on Lab - Building a Web Service
Hands-on Lab - Creating Your Version of the Service Factory
Community Web Service Software Factory Community Web Site
The Service Factory Blogs
License End User Licensing Agreement (EULA)

Contents

Overview
Getting Started
Documentation
Community
Future Plans
Feedback and Support
More Information
Authors and Contributors
Related Titles

Overview

Historical Context

This new refresh of the Service Factory for Visual Studio 2008 addresses some performance issues that were discovered after the initial release.

To help you appreciate the goals, motivations, and intended audience of this release, this topic provides a little historical context. The second major release of the Service Factory was released in December 2006 and used the Guidance Automation Extensions (GAX) to provide automation (wizards) within Visual Studio to help developers and architects build Web services using WCF and ASP.NET. The Service Factory team received a lot of valuable feedback about this release that can largely be summarized as follows:

  • The tooling should remember the information provided so it does not have to be provided each time the source code is generated.
  • The next version should focus less on the data access and business logic tiers and more on the service interface.
  • Help those who want to modify the Service Factory source code; doing this is not a straightforward process.
  • Wizards are okay some of the time, but a visualization of the services is a better experience.
  • Services should be designed in a technology-independent manner.

The patterns & practices team built the Service Factory: Modeling Edition as a direct response of this feedback. This information may help you understand who the intended audiences are and why the Service Factory contains what it does.

The previous release of the Service Factory: Modeling Edition was built on Visual Studio 2005. This release is targeted for Visual Studio 2008.

Intended Audiences

Based on the feedback about previous versions of the Service Factory, the Modeling Edition targets the following two different kinds of members of your development team:

  • Web service developers. These developers or architects are responsible for building Web services. They are most likely to have a binary installation of the Service Factory on their computers. This binary version may be the one provided by the patterns & practices team or provided by someone on their framework and tools team.
  • Framework and tools developers. These developers or architects have traditionally been responsible for building reusable libraries that other development teams in their organization will use. It is our experience that this development team in many organizations is now responsible for building tools other developers will use.

It is possible for a single developer to be in both of these audiences, but it is not likely, so there is no expectation that both of these areas of focus will be addressed by the same person. As a result of having two types of audiences, many components of the Service Factory: Modeling Edition may cater to only one of these audiences.

What Is in the Service Factory: Modeling Edition?

For the Web service developer, the Service Factory contains automation and guidance integrated into Visual Studio for building services. The core of the automation components is a Web services domain model. This domain model contains elements such as service contracts, operations, messages, and data contracts. This domain model manifests itself in the form of three integrated domain-specific languages (DSLs) that are used to model services: Service Contract Model, Data Contract Model, and the Host Model. Figure 1 illustrates an example of the Service Contract Model. For more information about working with this and the other models, see the “Designing with the Models” section in the documentation included with the Service Factory.

Figure 1
The Service Contract Model

In addition to the Visual Studio automation facilities, the Service Factory also contains the relevant written guidance about building Web services from the December 2006 release. Some of these topics include architecture, message design, versioning, exception handling, and other useful patterns. For a full list of topics that are included, see the “Web Service Architecture” section in the documentation included with the Service Factory. Web service developers interested in learning more about the Service Factory: Modeling Edition are encouraged to complete the Building a Web Service hands-on lab provided on the Service Factory Community Site on CodePlex.

For the framework or tools developer, the Service Factory team has intentionally architected the Service Factory to be extensible. Because of this, the Service Factory uses many capabilities provided by GAX/GAT, the DSL Toolkit, and other resources when performing tasks such as model validation and code generation. In areas where certain capabilities were not available, they were built by the Service Factory team and are being provided to you as source code. Figure 2 illustrates many parts of the Service Factory and their relationships to each other. To understand the parts of the Service Factory, see the “Service Factory Architecture” section in the documentation included with the Service Factory.

Figure 2
Dependency relationships of Service Factory components

In addition to the topics about the Service Factory itself, the Service Factory team has built a set of hands-on exercises that illustrate the most common types of changes they expect teams to apply to the Service Factory. These exercises also provide a comprehensive opportunity to learn about almost all parts of the Service Factory. In other words, even if there is not an exercise that illustrates the exact change you want to apply, by performing all the exercises, you should be able to figure out how to make the change based on what you learn from completing all of the exercises. The hands-on lab is named Creating Your Version of the Service Factory and is also on the Service Factory Community Site on CodePlex.

System Requirements

To view and run the Service Factory assets in your development environment, you need the following software installed on your computer:

In addition to the preceding requirements, if you want to install the Service Factory source code, you also need the following software installed on your computer:

Design Goals

The Service Factory team applied the following goals and principles while building the Service Factory:

  • The Service Factory will provide higher productivity because it raises the abstraction level for building services.
  • Applications built using the Service Factory will have a higher quality because the generated code encapsulates best practices.
  • The Service Factory will be designed to be extensible so it can adapt to the needs of a particular team’s development processes and organizational environment.
  • When using the Service Factory, implementation technology related decisions should be delayed until as late as possible. These decisions include the messaging platform (WCF and ASMX) to use and which Visual Studio projects to use in making up the solution for the service.
  • Changes to the service and its design should require as little rework as possible.

Getting Started

The Service Factory team has put a considerable amount of effort in helping you familiarize yourself with the Service Factory. The Web Service Software Factory: Modeling Edition includes written documentation and hands-on lab exercises. In addition, short videos are provided on the Service Factory Community Site.

To get started with the Service Factory: Modeling Edition, you should do the following:

  1. Download the Service Factory: Modeling Edition. Follow the installation instructions included with the download.
  2. Read the Building Services Using the Service Factory: Modeling Edition section in the documentation included with the Service Factory to learn about the activities that can be performed with it and about the models, elements, and other Service Factory capabilities.
  3. Do the 15 Minute Walkthrough. This is a shortened version of the “Building a Service” hands-on lab for those who quickly want to see some of the Service Factory capabilities.
  4. Do the Building a Service Hands-on Lab. This hands-on lab is intended for anyone who wants to learn about the Service Factory: Modeling Edition. It will introduce you to all three models in the Service Factory and allow you to build an ASMX or WCF service using the Service Factory.

After you familiarize yourself with the Service Factory, and if you want to learn about modifying the Service Factory to meet the needs of your development team, you should complete the exercises in the “Creating Your Version of the Service Factory” hands-on lab.

Documentation

This section provides links directly to the main topics included in the documentation. This documentation is also included when you install the Web Service Software Factory.

Community

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 software factories, and download additional content such as extensions and training material.

Future Plans

A software factory is the most advanced and integrated form of guidance from patterns & practices. However, it is certainly not the final form, so the guidance captured in the Service Factory will evolve over time. Specifically, it will evolve to address the following:

  • Additional aspects and challenges of service development
  • Changes and improvements in the services platform

This version of the Service Factory is built for Visual Studio 2008. For more detail about the roadmap, monitor the Roadmap page on the Service Factory Community Site.

Feedback and Support

Questions? Comments? Suggestions? To provide feedback about this software factory, or to get help with any problems, visit the Web Service Software Factory Community site. You can also find a list of the known issues on this community site, although the message board is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. The Web Service 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.

More Information

For more information about the Service Factory, see the following resources:

  • Service Factory Q & A. This is similar to a FAQ. It is a dynamic document on the Service Factory Community Site and contains a lot more information about the Service Factory: Modeling Edition that is not included in the documentation. Over time, this document will serve as a FAQ.
  • Service Factory Known Issues. This is another dynamic document on the Service Factory Community Site that categorizes all issues the Service Factory team and the community has identified. Some of these issues will be fixed over time by the Service Factory team; it is hoped that community members will fix other issues.

Authors and Contributors

The Service Factory: Modeling Edition was produced by the following individuals:

  • Program and Product Management: Dmitri Ossipov and Don Smith (Microsoft Corporation)
  • Architect: Wojtek Kozaczynski (Microsoft Corporation)
  • Development: Ade Miller and Bob Brumfield (Microsoft Corporation); Hernan de Lahitte, Nicolás Botto, and Julio C. Panderi (Digit Factory S.R.L.); Pablo Galiano (Clarius Consulting); Oscar Calvo (ArtinSoft)
  • Test: Rohit Sharma and Hanz Zhang (Microsoft Corporation); Mani Krishnaswami, Tarang Gupta, Kannan Raja Kandasamy, Anand Venkatesan, Latha Murugan, Pramod Mehta, Nalini S, Manickavasagam Shanmugasundaram, and Tushar More (Infosys Technologies Ltd) 
  • Documentation: Nelly Delgado (Microsoft Corporation); Olaf Conijn (Olaf Conijn BV); Tina Burden McGrayne (TinaTech, Inc.); Alex Homer (Content Master Ltd.)

Previous versions of the Service Factory were produced by the following individuals:

  • Program and Product Management: Don Smith, Dmitri Ossipov, Jason Hogg, Sanjeev Garg, and Tom Hollander (Microsoft Corporation)
  • Architect: Wojtek Kozaczynski, Edward Jezierski, and Dragos Manolescu (Microsoft Corporation)
  • Development: Chris Tavares (Microsoft Corporation); Hernan de Lahitte (Digit Factory); Pablo Galiano, Juan Wajnerman, José Escrich (Clarius Consulting); and Brian Button (Asynchrony Solutions, Inc.)
  • Test: Larry Brader and Carlos Farre (Microsoft Corporation); Tushar More, Mani Krishnaswami, Manickavasagam Shanmugasundaram, Arunkumar Sundararajan, Sajjad Nasir Imran, Meenakshi Krishnamoorthi, Muralidharan C Narayanan, Manu Agarwal, Bhavin Raichura, Vinod Kumar S, Venkata Reddy Donthireddy, and Lalitha Sundaram (Infosys Technologies Ltd)
  • Documentation: Nelly Delgado and RoAnn Corbisier (Microsoft Corporation); Lonnie Wall (RDA Corporation); William French (Linda Werner & Associates, Inc.); Paul Slater (Wadeware LLC); Tim Osborn (Ascentium Corporation); Tina Burden McGrayne (TinaTech, Inc.); and Claudette Siroky (CI Design Studio)

Many thanks to the following advisors who provided invaluable assistance:

  • Service Factory: Modeling Edition: Edward Bakker (Logica CMG), Dennis Doomen (Aviva Solutions), Clemens Rijnen (Sogeti Netherlands), Gerben van Loon (Avanade), Gerardo de Geest (Avanade), Ludwik Wallin (Volvo Information Technology), Alain De Preter (Unisys), Jos Warmer (Ordina), René Schrieken (LogicaCMG), Antoine Savelkoul (Avanade Netherlands B.V.), Christian Weyer (thinktecture), Attila Hajdrik (Microsoft Corporation), Jezz Santos (Microsoft Corporation), Dennis Mulder (Microsoft Consultancy Services Netherlands), Lenny Fenster (Microsoft Corporation), Karl Schulmeisters (Unisys), Simon Ince (Microsoft Corporation)
  • Previous versions of the Service Factory: Edward Bakker and René Schrieken (LogicaCMG); Aaron Skonnard (Pluralsight); Gabriel Gilabert and Patrick Johnston (Thomson Financial); Norman Headlam (Fidelity Investments); Brandon Bohling (Intel Corporation); Alejandro G. Jack (Southworks); Christian Weyer (Thinktecture); Daniel Cazzulino (Clarius Consulting); Steve Millet, Jan Alexander, Andy Gordon, Mark Fussell, Ford McKinstry, Steve Maine, Eugene Osovetsky, Daniel Roth, Jezz Santos, Beat Schwegler, Shy Cohen, Serena Yeoh, Vajira Weerasekera, Sam Keall, Jason McConnell, Pablo Castro, Sanjay Mishra, and Umachandar Jayachandran (Microsoft Corporation)