手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

深入研究VB.Net远程调用对象的机制

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


Imports System.Data
Imports System.Data.SQL

  然后,添加一个方法到你的类上,用来检索相应的数据行并把作者姓名作为结果返回。参见下面列出的程序代码:

Public Function GetName(ByVal au_id As String) As String
 Const dbConn As String = "server=ineroth;uid=sa;pwd=;database=pubs"
 Dim cm As SQLCommand
 Dim dr As SQLDataReader
 Dim SQL As String
 SQL = "SELECT au_lname, au_fname " & "FROM authors WHERE
     au_id='" & au_id & "'"
 cm = New SQLCommand(SQL, dbConn)
 cm.ActiveConnection.Open()
 cm.Execute(dr)
 dr.Read()
 Return CStr(dr.Item("au_lname")) & ", " & CStr(dr.Item("au_fname"))
End Function

  你现在就有了一个可被远程调用的类了。

  你的远程调用对象需要在它运行的地方有一个过程,并且这个主机过程需要使用远程系统来监听传到你的对象上的请求。 幸运的是,代码使得这过程很简单的。添加一个新的Console Application项目到 VS.NET中,在Solution Explorer中,添加新的项目。 你可能需要向下滚动卷轴找到Console Application图标, 改名为 NEThost。添加一个引用到System.Runtime.Remoting.dll并添加一个 Imports语句,然后使用远程系统 :

 Imports System.Runtime.Remoting
  在控制台应用程序中,当应用程序启动时, Sub Main方法自动运行。 你可以在这个方法中添加几行代码来设置远程系统:

Sub Main()
  RemotingServices.ConfigureRemoting("...cfg")
  Console.WriteLine("Press to exit")
  Console.ReadLine()
End Sub

  ConfigureRemoting方法接收文件名并把它当成一个参数。这个文本文件包含配置远程调用所必需的信息,你需要创建这个文件,我过一会将介绍如何创建。

  第四节 保持这个应用程序运行

  你还需要确定这个主应用程序直到你准备好时才退出,这个主应用程序一终止,你的远程对象对任何客户就变得不可用。在本例中,你保持这个应用程序运行直到用户按下回车键,但在一个实际的应用程序中,你应该选择为主应用程序生成一个 Windows 2000或 Windows NT服务应用程序,以便它始终能够运行。

  首先,你需要通过点击 Project菜单引用NETserver项目,然后添加引用和项目标签(参见图 2),选择 NETServer并单击 OK,在模块 1的顶部添加一条导入语句:

  导入 NETserver

 

  这样你的类对这个主应用程序就可用了,对于那些能够创建这个对象的实例的远程系统就很关键。

  主配置文件描述了你的对象以及如何到达。使用这个文件来设置主应用程序,以便它能够在适当的通道里监听适当的信息。在Solution Explorer中,右击你的主应用程序并从菜单中选择Add New Item(添加新的项目)。命名这个文件为 host.cfg。这个文件是一个简单的文本文件,使用井号(#)作为分隔符,并且它有三行代码能为你的远程对象服务。

  第一行指出主应用程序的名称。名称可以是任何东西,但是客户机可以使用它来找到主机:

Name#NEThost
  接下来的这行定义调用的对象,它描述了这个类的类型名称,这个类所处的集合,应该监听消息的主机的统一资源标识号(URI)以及对象运行的方式:

WellKnownObject#NETserver.NETclass#NETserver#NETserver/NETclass.soap#Singleton 
  你需要在一个行中输入前面所有的代码,在项目之间不留空格。这是 beta 1中隐含的唯一的文件格式;将来,你将能使用 XML来格式化这个文件。

  远程调用支持两种方式: Singleton和 SingleCall。

  第三行配置当与对象通信时使用的通道。本例中使用的HTTP通道, 8085端口:

Channel#System.Runtime.Remoting#System.Runtime._
    Remoting.Channels.HTTP.HTTPChannel#ports=8085

  在一行中输入所有的代码,项目中间不留空格。

  一旦你构建了解决方案,你就可以打开一个控制台窗口并运行主应用程序。以命令行形式进入 NEThost\u30446目录并执行 NEThost.exe。应用程序指出这个网络类已经被初始化了。它现在监听来自客户机的请求。

  你还可以以编程方式配置主机,而不使用配置文件。配置文件很好用,因为你可以使用它来改变主应用程序使用的通道或端口而不必重编译和重新部署。然而,如果你喜欢的话,你也可以跳过配置文件而直接地从代码中配置远程服务。它的功能上与使用配置文件相当;你可以选择任一种方法。

  修改Sub Main方法来配置主机:

Sub Main()
 Dim c As New Channels.HTTP.HTTPChannel(8085)
 ChannelServices.RegisterChannel(c)
 RemotingServices.RegisterWellKnownType("NETserver",
   "NETserver.NETclass","NETclass", WellKnownObjectMode.Singleton)
 Console.WriteLine("Press to exit")
 Console.Read()
End Sub

  首先,你要创建一个 HTTPChannel对象,初始化它来使用 8085端口,然后使用 ChannelServices注册这个通道。接下来,你可以注册远程对象,只要提供集合名称、完整的类名、客户机使用的 URI以及对象的存取方式。

  当你使用 DCOM调用一个远程对象时,你的客户机代码与你的项目中直接调用的对象的代码不同。VB.NET并不保留这个特性,你的 VB.NET客户应用程序需要包含配置远程系统的代码以使远程对象可用的。不管对象是本地的还是远程的,调用这个对象上方法的实际代码都是相同的,但是你需要添加几行额外代码来配置这个远程系统。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS