HOW TO:使用 Visual C# .NET 创建访问远程服务器的客户机 (From MSDN)

本文的发布号曾为 CHS307739
有关本文的 Microsoft Visual Basic .NET 版本,请参见 300943

本任务的内容

概要

本分步指南演示如何创建访问远程服务器的客户机。 此客户机可以位于同一台计算机、不同的计算机或者不同的网络上。 本文是在以下 Microsoft 知识库文章的基础上写成的:
  • 307445 Create a Remote Server Using Microsoft Visual C# .NET(使用 Microsoft Visual C# .NET 创建远程服务器)
返回页首

要求

下表概括了推荐使用的硬件、软件、网络架构以及所需的 Service Pack:

  • Microsoft Visual Studio .NET
本文假定您熟悉下列主题:
  • Visual Studio .NET
  • 网络
在开始执行本文中的步骤之前,还必须先生成应用程序(详见 307445中的介绍)。

返回页首

如何创建访问远程服务器的客户机

  1. 在 Visual C# .NET 中新建控制台应用程序。Class1 是默认创建的。
  2. 将 Class1.cs 重命名为 ClientApp.cs。
  3. 给项目添加一个到 System.Runtime.Remoting 名称空间的引用。
  4. 添加对 ServerClass.dll 程序集(在307445中创建)的引用。

    客户机可以使用三种不同的方法引用远程对象,并在编译时分别对每种引用进行解析。 本示例使用第一种方法 (a)。
    1. 编译服务器对象,并在编译客户程序时将 .exe 或 .dll 文件指定为编译器引用。 当客户机和服务器组件是在同一站点开发时,这种方法非常有用。
    2. 从某个接口类派生服务器对象,并使用该接口编译客户机。 当客户机和服务器组件不在同一站点开发时,这种方法非常有用。 可以将该(这些)接口编译为动态链接库 (DLL),在必要时可将其发送到客户机站点。 尽可能不要更改已发布的接口。
    3. 使用 SoapSUDS 工具从运行的服务器对象提取所需的元数据。 当客户机和服务器组件在不同的站点开发时,可以使用这种方法,并且不能使用接口类。 将 SoapSUDS 工具指向某个远程的统一资源标识符 (URI),并生成所需的元数据作为源或 DLL。 切记,SoapSUDS 工具仅提取元数据;它并不为远程对象生成源。
  5. RemotingRemoting.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;
  6. 声明一个变量以初始化客户机将用来连接到服务器应用程序的 TcpChannel 对象。使用 RegisterChannel 方法将该通道注册到通道服务。在 Class1 的 Main 过程中添加下面的声明代码:
    TcpChannel chan = new TcpChannel();
    ChannelServices.RegisterChannel(chan);
  7. 声明和实例化远程服务器。 在本示例中,使用 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.");
  8. 使用 Console 对象的 ReadLine 方法保持客户机应用程序的运行。
    System.Console.WriteLine("Hit <enter> to exit...");
    System.Console.ReadLine();
  9. 生成您的项目。
  10. 确保服务器应用程序正在运行。 (这是在307445中创建的 EXE 文件。)
  11. 运行该项目,并测试客户机与服务器之间的通讯。
返回页首

参考

有关 .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 远程处理:技术概述)

有关 Activator.GetObject Type.GetType 方法的更多信息,请参见 .NET 框架类库文档。

返回页首






这篇文章中的信息适用于:

  • Microsoft Visual C# .NET Beta 2
最近更新:2001-11-5 (1.0)
关键字kbhowto kbHOWTOmaster KB307739 kbAudDeveloper
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值