发布网友 发布时间:2022-05-06 04:31
共1个回答
热心网友 时间:2022-06-28 17:49
生成基本远程处理客户端 执行完如何:生成宿主应用程序中的步骤后,请在 remoting 下新建一个名为 client 的目录。如下面的代码所示,为客户端应用程序创建一个配置文件,并将该文件保存在 remoting\client 目录中。文件名应遵从 app-name.exe.config 模式。在此例中,它称为 client.exe.config。下面的配置文件通知远程处理系统,RemotableType 远程对象的类型信息位于 RemotableType 程序集中,而该对象位于 http://localhost:8989/RemotableType.rem 上。 複製<configuration> <system.runtime.remoting> <application> <client> <wellknown type="RemotableType, RemotableType" url="http://localhost:8989/RemotableType.rem" /> </client> </application> </system.runtime.remoting> </configuration> 有关此配置文件中的 URL 属性的详细信息,请参见激活 URL。如果要在网络上运行此应用程序,必须用远程计算机的名称替换客户端配置中的 localhost。 注意: 虽然上述配置文件中只有很少的设置,但使用 .NET 远程处理出现的大多数问题都是由于其中的部分设置有误或与客户端应用程序的配置设置不匹配造成的。人们很容易键错名称、忘记某个端口或忽略某个属性。如果远程处理应用程序出现问题,请先检查配置设置。 用所选语言创建新的源文件。在 Main 方法中,调用 RemotingConfiguration.Configure,并向其传递客户端配置文件的名称 (client.exe.config)。接着,实例化 RemotableType 的实例,并调用它的 SayHello 方法。在 remoting\client 目录中,将客户端应用程序另存为 Client.cs 或 Client.vb。 注意: 不应该将客户端应用程序与 Listener.exe 应用程序保存在同一个目录中。如果这样,您就无法确保您正在接收和使用远程引用,因为如果这两个应用程序位于同一个目录中,则可能会发生程序集和类型解析。 VB C# C++ F# JScript 複製 Public Shared Sub Main() RemotingConfiguration.Configure("Client.exe.config") Dim remoteObject As New RemotableType() Console.WriteLine(remoteObject.SayHello()) End Sub 'Main public static void Main(){ RemotingConfiguration.Configure("Client.exe.config"); RemotableType remoteObject = new RemotableType(); Console.WriteLine(remoteObject.SayHello()); } 将RemotableType.dll 程序集从 remoting\Type 复制到 remoting\client 中。 注意: 此时的一个常见问题是“如果我正在将程序集复制到客户端,那么该如何确定调用了远程对象”?这正是我们将调用添加到 RemotableType.SayHello() 方法中的 Console.WriteLine 的原因。如果正在调用远程对象,Listener 进程中就会发生 WriteLine,否则将在客户端进程中发生 WriteLine。 通过在 remoting\client 目录中键入以下命令来编译客户端应用程序: VB C# C++ F# JScript 複製 vbc /r:RemotableType.dll Client.vb csc /noconfig /r:RemotableType.dll Client.cs 打开两个命令提示符。.在一个命令提示符处,转到 remoting\listener 目录并运行 listener.exe。在另一个命令提示符处,转到 remoting\client 目录并运行 client.exe。客户端命令提示符应类似于: 複製C:\tmp\Remoting\client>client Hello, world 侦听器命令提示符应类似于: 複製C:\tmp\Remoting\listener>listener Listening for requests. Press Enter to exit... RemotableType.SayHello() was called! 您可以通过接收对 RemotableType.SayHello() 的调用的侦听器的输出看到它们。 示例VB C# C++ F# JScript 複製 ' 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.SayHello()) 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.SayHello()); } }