External Applications in Application Systems
In Distributed System Designers, you can describe external applications that you will not implement in your solution but are connected to applications in your solution. For example, you can visualize, reference, and connect external Web services to applications in your solution. For more information, see Defining Applications on Application Diagrams.
When you design an application system with applications that connect to external applications, you can include and connect those external applications in your system. On the other hand, you can exclude the external applications from your system and add a proxy endpoint to your system for each consumer endpoint in your system that connects to an external application. For more information, see Defining Communication Pathways on System Diagrams and Delegating and Exposing Behavior of Application Systems.
Note
Though this topic focuses on external Web services as the example, you can use the same concepts for BizTalk Web services, databases, generic applications, and custom application types created from the System Definition Model (SDM) Software Development Kit (SDK). For more information, see Application Types and Prototypes for Defining Applications.
The following sections discuss these approaches and guidelines for using them:
Including External Web Services in Systems
Excluding External Web Services from Systems
Choosing the Right Approach
Including External Web Services in Systems
If you connect an application to an external Web service on the application diagram, you can choose to include the external Web service in your system. By including an external Web service in your system, you do not indicate that you will deploy the Web service with your system. However, if you include the external Web service, you can accomplish the following:
Visualize a reference to the external Web service on the system diagram.
Connect multiple applications to the external Web service to indicate that those applications must connect to the same Web service URL. For more information, see Communication within Application Systems.
When you define deployment for your system, you can specify the logical server to which the external Web service must deploy. You can also validate that communication paths exist in the logical datacenter to support connections between the external Web service and the applications that connect to it. For more information, see Evaluating System Deployment with Deployment Designer.
With this approach, be aware of the following considerations:
You can connect a consumer endpoint to a provider endpoint or to a proxy endpoint but not to both.
If you connect a consumer endpoint to an external Web service in the system, you cannot create a proxy endpoint for that consumer endpoint on that system. If that consumer endpoint has no proxy endpoint, you cannot expose the behavior of that consumer endpoint outside the system. Also, you cannot connect that proxy endpoint to a Web service in another system to resolve the URL.
When you deploy the system, you must provide the URL of the external Web service provider endpoint. You need this URL to configure the connected consumer endpoints.
Representing ASP.NET Web Applications with External Web Services
If you have an application that connects to an implemented ASP.NET Web application (with a .NET Web Service provider endpoint) on the application diagram, and you want to design a system that excludes the ASP.NET Web application, you can replace the ASP.NET Web application with an external Web service. To use this strategy, you must either remove the ASP.NET Web application from the solution or create another solution without the ASP.NET Web application and define the system in that solution, before you create the external Web service.
Note
Do not replace the ASP.NET Web application on the application diagram by creating an external Web service from that application. You can reference the location of a .NET Web Service provider endpoint only once on the application diagram. For more information, see How to: Locate WSDL Files for Web Services.
Excluding External Web Services from Systems
If you connect an application to a Web service that you do not want to include in your system, you must create proxy endpoints for that application's consumer endpoints. Proxy endpoints make it possible for you to expose those consumer endpoints and connect them outside the system when you include that system in other systems. For more information, see Delegating and Exposing Behavior of Application Systems.
Note
The Web service can be an external Web service or an ASP.NET Web application with a .NET Web Service provider endpoint.
With this approach, be aware of the following considerations:
When you define deployment for the system, you cannot specify the logical server to which the referenced external Web service must deploy. You also cannot validate that communication paths exist in the logical datacenter to support connections between the external Web services and applications that reference it.
Tip
You can work around this scenario by including the system and/or the external Web service in another system.
You cannot indicate on the system diagram that applications in the system must connect to the same Web service URL.
Tip
If you use this approach, provide separate documentation for each scenario in which proxy endpoints on the system must connect to the same Web service URL. For example, you can add comments to the system diagram. This information will be important to anyone that reuses the system in another system. For more information, see How to: Add Comments to Distributed System Diagrams.
If you deploy a system with proxy (consumer) endpoints as a standalone system, that is, not within the context of another system, you must provide the Web service URL of each proxy endpoint as part of the deployment process. You need these URLs to configure the consumer endpoints that the proxy endpoints expose. If you deploy the system as part of another system, the provider endpoints in the containing system that connect to the consumer proxy endpoints will provide the source for the URLs.
Choosing the Right Approach
When you have a self-contained system that you will deploy as a standalone system (not included in another system), you can choose to include external applications, generic applications, or custom application types along with the applications that connect to them in the system. If you plan to include the system in other systems, you need proxy endpoints for the consumer endpoints in your system to expose their behavior and to connect them outside the system.
You can also combine these approaches. If you want to deploy a system as a standalone system and include it in other systems, you can create two systems with one inside the other. You can define one system that contains the consumer applications and exposes their behavior through proxy endpoints. You can define another system that includes the external applications and the system with the proxy endpoints. You can connect these external applications to those proxy endpoints. If you need to include the consumer applications in another system, you can use the inner system. If you want to deploy this functionality independently, you can use the outer system. However, this approach requires you to maintain two systems. For more information, see How to: Combine External Applications with Referencing Applications in Application Systems.