委托和公开应用程序系统的行为

更新:2007 年 11 月

在系统设计器中,可以指定应用程序系统的行为由它的哪些成员提供或使用。此任务可以通过将该系统上终结点的行为委托给系统成员来执行。您还可以有选择地公开该系统的成员上终结点的行为。在完成这些任务之后,该系统的定义上将出现代理终结点。

有关如何向系统中添加成员的更多信息,请参见如何:向应用程序系统添加成员

通过代理终结点委托和公开行为

在您将终结点的行为从一个系统定义委托给某个成员时,Visual Studio 会将这个终结点从该系统定义复制到此成员,针对该系统定义创建一个代理终结点,并将该代理终结点连接到新的成员终结点。在公开成员上某个终结点的行为时,Visual Studio 会将该成员的新代理终结点添加到系统定义的边界中。

说明:

您必须最终在该系统定义上和包括在该系统定义中的所有系统上委托终结点行为,才能成功地验证特定系统定义的部署。

使用代理终结点,可以提供对系统内成员的访问权限,并在该系统的外部公开这些成员的行为。不通过代理终结点公开的成员在系统外部没有访问权限。位于该系统外部的系统和应用程序不能访问这些成员。

例如,假设您的系统包含一个具有 Web 服务提供方终结点的 ASP.NET 应用程序,还包含一个连接到 ASP.NET 应用程序的外部数据库。为此,可以限制从系统之外对该数据库的访问,方法是只将 Web 服务提供者终结点作为代理终结点公开。此时,该系统只能通过 Web 服务公开该数据库的一个访问点,以防从系统之外直接连接到该数据库。

在向某个系统的定义中添加代理终结点时,可以定义在将该系统添加到其他系统中并为包含该系统的系统评估部署时,分布式系统设计器应遵守的约束。

说明:

Visual Studio 在运行时不为了实施这些约束而执行任何检查。因此,为了安全访问系统成员,请确保在运行时实施了以代理终结点形式定义的约束。

但是,在最终部署系统时,系统及其代理终结点不作为有形实体存在。最终,所有的代理终结点都会将其行为委托给应用程序终结点。在部署时,系统会将其行为委托给其成员上的终结点。如果这些成员为系统,则这些系统会将其行为委托给自身的成员,依此类推。借助此过程,可以通过任意数目的系统层委托行为。部署过程将会解析系统的配置,而只保留具有重写后的任何应用程序设置的已连接应用程序终结点。

应用程序系统上的代理终结点

向系统定义中添加某个代理终结点时,该代理终结点会通过委托线连接到成员上的终结点。代理终结点始终与它将其行为委托或公开到的终结点具有相同的类型或角色。例如,用来公开提供方终结点行为的代理终结点也将是提供方终结点,它的委托线将从代理终结点指向提供方终结点。同样,用来公开使用方终结点行为的代理终结点也将是使用方终结点,它的委托线将从使用方终结点指向代理终结点。有关终结点的更多信息,请参见 应用程序终结点概述

说明:

成员上的使用方终结点通常要求连接到合适的提供方终结点或连接到以代理终结点为目标的委托,以便使该成员正常工作并使系统有效。但是,与使用方终结点的连接是可选的。有关更多信息,请参见应用程序系统中的通信

系统定义中的代理终结点只允许对该系统定义内的一个成员上的单个终结点进行一项委托。在该系统定义外部,代理终结点可以连接到其他终结点,其规则与连接该代理终结点所公开的终结点类型时相同,但是应注意以下附加事项:

  • 对于具有提供者类型的代理终结点,可以在定义该代理终结点的系统之外将其连接到一个或多个使用方终结点。同时,还可以将其作为外部系统定义中的其他代理终结点公开。

  • 对于具有使用者类型的代理终结点,可以将其连接至单个提供方终结点,或将其作为外部系统定义中的其他代理终结点公开。

请参见

任务

如何:将应用程序系统行为委托给成员

如何:公开应用程序系统中成员的行为

概念

应用程序系统概述

其他资源

委托和公开应用程序系统的行为