如何:生成客户端应用程序
在如何:生成可远程处理的类型中我们定义了一个远程类型,在生成宿主应用程序中我们创建了一个应用程序,现在我们要生成该远程类型的客户端,并且要由该应用程序来承载;为此,您的应用程序必须将其自身注册为该远程对象的客户端,然后就像该对象位于客户端的应用程序域中一样调用它。.NET 远程处理系统将截获客户端调用,将其转发到远程对象,并将结果返回到客户端。以下代码过程介绍如何生成简单的远程处理客户端。
生成简单的远程处理客户端
导入 System.Runtime.Remoting 命名空间
创建一个客户端配置文件,以便客户端应用程序可以找到远程对象,并将该文件保存到客户端应用程序所在的那个文件夹中。例如,以下配置文件使远程处理系统知道可以在
RemotableType
程序集中找到RemotableType
远程对象的类型信息,而且此客户端应该尝试创建并使用位于 https://localhost:8989/RemotableType.rem 的RemotableType
对象。<configuration> <system.runtime.remoting> <application> <client> <wellknown type="RemotableType, RemotableType" url="https://localhost:8989/RemotableType.rem" /> </client> </application> </system.runtime.remoting> </configuration>
有关该配置文件中的 URL 属性的详细信息,请参见激活 URL。如果要在网络上运行该应用程序,必须用远程计算机的名称替换客户端配置中的“localhost”。
备注
虽然前面的配置文件中只有几项设置,但在使用 .NET 远程处理时遇到的大多数问题都与这几项配置有关,原因或者是其中的某些设置不正确,或者是与客户端应用程序的配置设置不匹配。很容易输入错误的名称、忘记端口或者忽略属性。如果您的远程处理应用程序有问题,请首先检查配置设置。
将客户端应用程序另存为
Client.
language-extension(或者使用您选择的其他文件名,其中的 language-extension 是您要编译的语言)。将该文件保存在保存如何:生成可远程处理的类型主题中生成的RemotableType.dll
副本的同一个目录中。备注
客户端应用程序不应保存在 Listener.exe 应用程序所在的那个目录中。如果保存到同一目录,您将无法确定是否在接收和利用远程引用,因为当应用程序位于同一个目录时,可能会进行程序集和类型解析。
使用 .NET Framework SDK 附带的命令行工具编译客户端应用程序或调用可执行文件。例如,要编译客户端应用程序
Client.
language-extension,请在命令提示符处将目录更改为保存该客户端应用程序的文件夹,然后键入以下命令:vbc /r:RemotableType.dll Client.vb
csc /noconfig /r:RemotableType.dll Client.cs
示例
' Client.vb
Imports System
Imports System.Runtime.Remoting
Public Class Client
Public Shared Sub Main()
RemotingConfiguration.Configure("Client.exe.config")
Dim remoteObject As New RemotableType()
Console.WriteLine(remoteObject.StringMethod())
End Sub 'Main
End Class 'Client
// Client.cs
using System;
using System.Runtime.Remoting;
public class Client{
public static void Main(){
RemotingConfiguration.Configure("Client.exe.config");
RemotableType remoteObject = new RemotableType();
Console.WriteLine(remoteObject.StringMethod());
}
}