自定义代理技术示例

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

此示例演示 RealProxy 类的扩展性。通过扩展 RealProxy,用户代码可获得对将要传送到(或传送自)任何远程对象的消息的访问权。此示例将创建三个可执行文件。ProxyWithReturnMessage.exe 应用程序重写 Invoke 方法,以显示消息数据。ProxyWithCustomCasting.exe 应用程序使用名为 IFaq 和 IBaz 的两个接口来演示自定义强制转换功能。ProxyWiredToHttpChannel.exe 应用程序演示如何使用 Http 通道来截获和转发对 RemotingHello 服务的调用。

hzzt6yfe.Important(zh-cn,VS.100).gif 注意:
此示例要求您的计算机上安装了 Internet 信息服务 (IIS)。运行示例应用程序之前,必须在 IIS 中注册 RemotingHello 服务。

使用命令提示生成示例

  1. 打开命令提示窗口,定位到 CS 子目录。

  2. 在命令行中键入 msbuild CustomProxiesCS.sln

    hzzt6yfe.note(zh-cn,VS.100).gif注意:
    此示例生成三个控制台应用程序。必须使用命令提示来启动并运行这些应用程序,才能查看相应的输出。

使用 Visual Studio 生成示例

  1. 打开 Windows 资源管理器,定位到 CS 子目录。

  2. 双击 CustomProxiesCS.sln 的图标,在 Visual Studio 中打开该文件。

  3. 在**“生成”菜单上,选择“生成解决方案”**。

在 IIS 中注册服务

  1. 将服务编译为 DLL 并将此 DLL 复制到将从中加载该服务的 bin 目录。按照上述步骤使用命令提示或 Visual Studio 生成该示例时,将编译该服务,在 ProxyWiredToHttpChannel 下创建 bin 子目录并将 Hello.dll 复制到该子目录中。

  2. 启动 Internet 服务管理器,然后选择服务器节点下的**“默认网站”。在菜单上选择“操作”->“新建”->“虚拟目录”,然后单击“下一步”**继续。

  3. 输入 RemotingHello 作为别名,然后按**“下一步”**。

  4. 输入服务所在的目录。输入完整路径,但排除步骤 1 中的 DLL 复制到的 bin 目录。

  5. 按**“下一步”。接受提供的默认值并再次按“下一步”。按“完成”**。现在已注册了该服务,在“Internet 服务管理器”窗口中“默认网站”列表的下面将出现此服务。

  6. 确保注册服务的目录中存在 web.config 文件。此文件描述了您的服务,在客户端尝试通过浏览器或使用端口 80 上的 HTTP 通道的客户端访问您的服务时将自动加载此文件。

运行示例

  1. 定位到包含这三个可执行文件之一的目录:

    • ProxyWiredToHttpChannel.exe

    • ProxyWithCustomCasting.exe

    • ProxyWithReturnMessage.exe。

    每个可执行文件都位于与控制台应用程序名称相同的目录下的 \bin\Debug 子目录中。

  2. 在命令行中键入可执行文件的名称。运行 ProxyWiredToHttpChannel.exe 之前,确保按照上述步骤在 IIS 中注册了 RemotingHello 服务。

另请参见

参考

IChannel
IMessage
IRemotingTypeInfo
MarshalByRefObject
OneWayAttribute
RealProxy
System.Collections
System.Runtime.Remoting
System.Runtime.Remoting.Proxies
System.Runtime.Remoting.Messaging
UnmanagedType

概念

扩展 RealProxy

其他资源

高级远程处理
对象激活和生存期

生成日期:2010-02-13