本文的发布号曾为 CHS307739
概要
本分步指南演示如何创建访问远程服务器的客户机。 此客户机可以位于同一台计算机、不同的计算机或者不同的网络上。 本文是在以下 Microsoft 知识库文章的基础上写成的:- 307445 Create a Remote Server Using Microsoft Visual C# .NET(使用 Microsoft Visual C# .NET 创建远程服务器)
要求
下表概括了推荐使用的硬件、软件、网络架构以及所需的 Service Pack:- Microsoft Visual Studio .NET
- Visual Studio .NET
- 网络
返回页首
如何创建访问远程服务器的客户机
- 在 Visual C# .NET 中新建控制台应用程序。Class1 是默认创建的。
- 将 Class1.cs 重命名为 ClientApp.cs。
- 给项目添加一个到 System.Runtime.Remoting 名称空间的引用。
- 添加对 ServerClass.dll 程序集(在307445中创建)的引用。
客户机可以使用三种不同的方法引用远程对象,并在编译时分别对每种引用进行解析。 本示例使用第一种方法 (a)。- 编译服务器对象,并在编译客户程序时将 .exe 或 .dll 文件指定为编译器引用。 当客户机和服务器组件是在同一站点开发时,这种方法非常有用。
- 从某个接口类派生服务器对象,并使用该接口编译客户机。 当客户机和服务器组件不在同一站点开发时,这种方法非常有用。 可以将该(这些)接口编译为动态链接库 (DLL),在必要时可将其发送到客户机站点。 尽可能不要更改已发布的接口。
- 使用 SoapSUDS 工具从运行的服务器对象提取所需的元数据。 当客户机和服务器组件在不同的站点开发时,可以使用这种方法,并且不能使用接口类。 将 SoapSUDS 工具指向某个远程的统一资源标识符 (URI),并生成所需的元数据作为源或 DLL。 切记,SoapSUDS 工具仅提取元数据;它并不为远程对象生成源。
- 对 Remoting、Remoting.Channels 和 Remoting.Channels.TCP 名称空间和 ServerClass 类名使用 using 语句,这样,在后面的代码中就不需要限定这些名称空间中的声明了。using 语句必须位于所有何其他声明之前。
using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using ServerClass;
- 声明一个变量以初始化客户机将用来连接到服务器应用程序的 TcpChannel 对象。使用 RegisterChannel 方法将该通道注册到通道服务。在 Class1 的 Main 过程中添加下面的声明代码:
TcpChannel chan = new TcpChannel(); ChannelServices.RegisterChannel(chan);
- 声明和实例化远程服务器。 在本示例中,使用 Activator 对象的 GetObject 方法实例化 myRemoteClass 对象,并指定下列参数:
- 正在注册的对象的完整类型名称(本例中是 ServerClass.myRemoteClass),后面跟着程序集名称 ServerClass。 此处同时指定了名称空间的名称和类名。因为在上一节中没有指定名称空间,所以使用默认的根名称空间。
- 激活对象的 URI。 URI 必须包含协议 (TCP)、计算机名称 (localhost)、端口 (8085) 以及服务器对象的终结点 (RemoteTest)。 若要访问位于本地服务器上的 ServerClass 远程服务器,请使用 URI“tcp://localhost:8085/RemoteTest”。
myRemoteClass obj = (myRemoteClass) Activator.GetObject(typeof(myRemoteClass), "tcp://localhost:8085/RemoteTest"); if (obj == null) System.Console.WriteLine("Could not locate server"); else if (obj.SetString("Sending String to Server")) System.Console.WriteLine("Success: Check the other console to verify."); else System.Console.WriteLine("Sending the test string has failed.");
- 使用 Console 对象的 ReadLine 方法保持客户机应用程序的运行。
System.Console.WriteLine("Hit <enter> to exit..."); System.Console.ReadLine();
- 生成您的项目。
- 确保服务器应用程序正在运行。 (这是在307445中创建的 EXE 文件。)
- 运行该项目,并测试客户机与服务器之间的通讯。
参考
有关 .NET 远程处理的概述,请参见 Microsoft .NET 框架开发人员指南。有关 TcpChannel 类的更多信息,请参见 .NET 框架类库文档。
有关 Microsoft .NET 远程处理的更多信息,请参见以下 Beta 1 .NET 开发(常规)技术文章:
“Introduction to the Microsoft .NET Remoting Framework”(Microsoft .NET 远程处理框架简介)
“Microsoft .NET Remoting: A Technical Overview”(Microsoft .NET 远程处理:技术概述)
返回页首
这篇文章中的信息适用于:
- Microsoft Visual C# .NET Beta 2
最近更新: | 2001-11-5 (1.0) |
关键字 | kbhowto kbHOWTOmaster KB307739 kbAudDeveloper |