远程对象配置

本主题介绍一项传统技术,保留该技术是为了向后兼容现有的应用程序,不建议对新的开发使用该技术。现在应该使用 Windows Communication Foundation (WCF) 来开发分布式应用程序。

发布或使用可远程处理对象的开发人员负责 .NET 远程处理系统的配置,以便使用 .NET 远程处理的应用程序可以正确工作。您可采用编程方式来实现,也可以使用应用程序配置文件或计算机配置文件来实现。然后,管理员可以根据需要使用 .NET Framework 配置工具将远程客户端指向不同的终结点,或者修改客户端激活的 (<activated>) 对象或服务器激活的 (<wellknown>) 对象的生存期。

通过将可远程处理的类放置在 <application> 元素(该元素是 <system.runtime.remoting> 元素的子元素)内,注册您的可远程处理的类。应用程序访问的对象呗远程应用程序分组存放到 <application> 元素内的 <client> 节下。应用程序公开的对象在 <application> 节点内的 <service> 节中声明。如果没有在 Internet Information Services (IIS) 中承载远程类型,则可以为将成为激活 URL 的一部分的应用程序指定 name 特性,但这不是任何方案所必需的。有关在 IIS 中承载的详细信息,请参见在 Internet Information Services (IIS) 中承载远程对象

此外,.NET 远程处理不从应用程序配置文件中自动选取任何远程配置值。若要使用配置文件来配置远程处理,必须调用 RemotingConfiguration.Configure。仅当可远程处理的类型是 IIS 中承载的类型时,宿主应用程序域才会自动加载远程配置文件。在这种情况下,.NET 远程处理仅自动从 Web.config 文件中选取服务设置。客户端设置被忽略,直到直接调用 RemotingConfiguration.Configure 方法再次加载配置文件。

以下架构演示了可用于配置应用程序使用 .NET 远程处理的元素的结构。

<configuration>

<system.runtime.remoting>

<application>

<lifetime>

<channels>(实例)

<channel>(实例)

<serverProviders>(实例)

<provider>(实例)

<formatter>(实例)

<clientProviders>(实例)

<provider>(实例)

<formatter>(实例)

<client>

<wellknown>(客户端实例)

<activated>(客户端实例)

<service>

<wellknown>(服务实例)

<activated>(服务实例)

<soapInterop>

<interopXmlType>

<interopXmlElement>

<preLoad>

<channels>(模板)

<channel>(模板)

<serverProviders>(实例)

<provider>(实例)

<formatter>(实例)

<clientProviders>(实例)

<provider>(实例)

<formatter>(实例)

<channelSinkProviders>

<serverProviders>(模板)

<provider>(模板)

<formatter>(模板)

<clientProviders>(模板)

<provider>(模板)

<formatter>(模板)

<debug>

若要使用远程处理设置,必须对应用程序配置文件调用 RemotingConfiguration.Configure。请注意,公共语言运行库在加载应用程序配置文件前会自动加载计算机配置文件。不要对计算机配置文件调用 RemotingConfiguration.Configure。如果这样做,当再次加载已位于内存中的某些对象时可能会导致异常。

生存期配置

在应用程序中使用 <lifetime> 元素为所有客户端激活的对象和服务器激活的Singleton 对象指定默认生存期。

有关编程配置和生存期概念的详细信息,请参见生存期租约

实例元素和模板元素

有两种类型的元素与生成信道有关:模板元素和实例元素。模板元素用于声明信道、服务器或客户端信道接收器提供程序,或者通过引用模板元素的 ID 特性用于声明服务器或信道接收器格式化程序,以在同一应用程序的其他任何地方使用。

42d55ae3.note(zh-cn,VS.100).gif注意:
只要在模板元素中使用了 type 特性创建默认配置,而该配置使用了系统实现类型(例如 BinaryFormatterHttpChannel),就必须指定完整的类型信息(包括版本、区域性和强名称信息)。此信息可从 machine.config 文件中获得,或者通过使用全局程序集缓存工具 Gacutil.exe 获得。在下列情况下不需要此信息:包含类型定义的程序集不在全局程序集缓存中,但可以定位该类型;或者您引用的类型在某个实例元素中,而且在该元素中可以使用 ref 特性。

另请参见

任务

如何:配置客户端激活或服务器激活的远程对象的生存期
如何:配置信道

参考

System.Runtime.Remoting.RemotingConfiguration Class

概念

远程应用程序的配置
信道
信道注册
服务器端注册
客户端注册
信道注册

其他资源

使用配置文件注册远程对象
.NET Framework 远程处理概述