Overview of Application Designer 

In Visual Studio Team Edition for Architects, you can use Application Designer to define and visualize applications that can provide or use services within the scope of a Visual Studio solution. You can configure these applications as required by your development environment. For example, you can define ASP.NET applications that provide Web services and Windows or Office applications that call Web services.

Using Application Designer, you can accomplish the following high-level tasks:

  • Visualize and define applications using a diagram surface.

  • Reverse-engineer existing solutions.

  • Specify settings and constraints on applications.

  • Define Web service and database communication between applications.

  • Document other types of communication between applications.

  • Expand the set of application types and prototypes you can use to define applications.

After defining applications, you can perform the following tasks:

  • Evaluate applications for deployment using their development configurations.

  • Design reusable application systems as units of deployment using System Designer.

  • Implement applications that support implementation.

The following sections contain more information about performing these tasks in Application Designer:

  • Defining Applications on Application Diagrams

  • Configuring Settings and Constraints on Applications

  • Configuring Communication Pathways Between Applications

  • Creating Application Prototypes and Extending Application Types

  • Designing Application Systems for Deployment

  • Evaluating Applications for Deployment

  • Implementing Applications on Application Diagrams

Defining Applications on Application Diagrams

Before you can begin defining applications with Application Designer, you must either create a Visual Studio distributed system solution, which contains a blank application diagram, or add an application diagram to a blank or existing solution. When you add an application diagram to an existing solution, applications will reverse-engineer onto the diagram if appropriate projects exist in the solution. You can then define, visualize, or review applications on the diagram.

In conjunction with other diagrams in Distributed System Designers, the application diagram makes it possible for you to specify, configure, validate, and communicate application requirements and constraints as needed in your development environment. These diagrams also help facilitate communication between application and infrastructure architects. For more information, see Relationships Between System Definition Model (SDM) Documents.

The following illustrations show Application Designer and the application diagram.

Application Designer

Application Designer

Application diagram

Application diagram

For more information, see the following topics:

To begin defining applications using Application Designer, see the following topics:

Configuring Settings and Constraints on Applications

In Application Designer, you can the Settings and Constraints Editor to configure settings on an application definition as required for use in the development environment and define constraints on the run-time environment. You can also designate certain settings as overridable. When you use System Designer to compose systems from uses of those definitions and configure them for deployment, you can override those settings that are designated as overridable on each use if required. In contrast, constraints are static and apply to all uses of an application. For example, you can constrain the types of logical servers that can host an application. When you define and evaluate deployment for applications in the target datacenter, these settings and constraints are evaluated against those set on logical servers. These settings and constraints are set on a logical datacenter diagram by infrastructure architects to constrain the types of applications that those logical servers can host.

In the Settings and Constraints Editor, application settings are organized into logical groups and are known as "resources", which you can add to applications as needed. The default settings on an application correlate to sections in the application configuration (.config) file, which is generated when you implement an application that supports implementation. Application settings that you set explicitly also appear in application configuration file once applications are implemented.


Custom resources defined using the System Definition Model (SDM) Software Development Kit (SDK), custom settings, and IIS metabase settings do not correlate with any sections in the application configuration file.

For more information, see the following topics:

Configuring Communication Pathways Between Applications

You can configure communication pathways between applications on the application diagram by connecting their endpoints. On the application diagram, connections represent how applications connect to each other in the development environment, based on the configuration of their consumer endpoints. For more information, see Communication Between Applications.

Endpoints identify and provide connection points at which applications provide or use services. You can add or remove endpoints as needed. Provider endpoints appear as small solid shapes on applications, while consumer endpoints appear as small hollow shapes. A provider endpoint defines a location at which an application provides a service. A connection between a provider endpoint and a consumer endpoint indicates that the consumer endpoint is configured with the location of the provider endpoint. Connections appear as lines with arrows, indicating the direction of communication from a consumer endpoint to a provider endpoint. For more information, see Overview of Endpoints on Applications.

Creating Application Prototypes and Extending Application Types

The set of application types and the corresponding prototypes that you use to define applications can be extended in the following ways:

  • Create prototypes from single or sets of configured applications and endpoints on the application diagram. You can also share these prototypes with others.

  • Add custom settings, resources, and endpoints to existing applications and then create prototypes from those applications.

  • Install new prototypes based on other application types.

For more information, see Extending Distributed System Designers.

Designing Application Systems for Deployment

In Distributed System Designers, application systems describe specific configurations of applications for deployment. Systems define how applications should be connected and configured. You can also override settings on applications as required, if those settings are designated as overridable. Systems also help abstract application details and make it possible for you to build larger complex systems by nesting systems inside other systems. You can use System Designer to create system diagrams that define systems composed from applications on the application diagram and from systems defined by other system diagrams. You can then configure and connect the members of these systems as needed for deployment. After defining a system, you can define and evaluate its deployment by using Deployment Designer to create one or more deployment diagrams. For more information, see Overview of Distributed System Designers and Workflow Across Distributed System Designers.

Evaluating Applications for Deployment

Early in the design process, you can use Deployment Designer to evaluate deployment for applications exactly as they are configured for the development environment on the application diagram. By evaluating applications early, you can discover whether any configuration or connection issues might exist.


To configure and evaluate applications for actual deployment, you should use System Designer to create system diagrams that define systems composed from applications or other systems that you want to include and connect for deployment. However, to evaluate applications as they are configured on the application diagram, you do not need to create a system diagram as a hidden "default" system is created, used, and maintained automatically for you.

Evaluating applications for deployment requires a logical datacenter diagram, which is a logical representation of the application hosting capabilities of a target datacenter. This process then creates a deployment diagram so that you can define how applications will deploy to logical servers on the deployment diagram and validate the deployment diagram. The results from validating the deployment diagram can provide valuable feedback about issues that might not be discovered until deployment, and therefore might prevent costly changes at a later time. For more information, see Evaluating System Deployment with Deployment Designer.

Implementing Applications on Application Diagrams

Prior to implementation, you can design and define applications without committing your changes to code. At this time, Application Designer stores the System Definition Model (SDM) definitions for applications that support implementation as part of the application diagram. SDM definitions for applications that do not support implementation are added as .sdm files to the solution immediately. For more information, see Overview of the System Definition Model (SDM) and Application Types and Prototypes for Defining Applications.

When you are satisfied with your application design, you can implement those applications that support implementation so that development teams can start defining applications in code. When you implement applications, Visual Studio creates skeleton implementations by generating the appropriate projects in your solution. These projects include the appropriate code or class files, configuration files, and any other needed resources. After implementation, the code becomes the master definition and changes made between diagram and code files synchronize with each other. You can implement applications individually or as a group. There is no requirement for application design to be complete before you begin implementing and testing parts of yours solution.

For more information, see the following topics:

See Also


Walkthrough: Defining Applications


Overview of Distributed System Designers

Other Resources

Designing Applications with Application Designer