科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件深入研究VB.Net远程调用对象的机制

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

NET结构提供一种与之不同的机制--远程调用,用于客户应用程序和远程对象之间的内部处理和LAN通讯。

作者:wayne 来源:yesky 2007年11月11日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
第三节 创建并使用一个类

  在你能够通过网络调用一个对象之前,你必须有一个类库。所有的COM对象在你首次创建它们的过程中或者在机器中继续运行,在 VB.NET中,你可以使用<Serializable()>属性标记一个类,这样你的对象就是以字的方式发送,意思是说它是物理上被复制进入正在调用的应用程序过程中的。

  显然,如果你想要激活一个在另外一个过程或另外一台机器中的对象的方法,你想要那个对象支持远程调用。要想这样的话,你可以从.NET系统类库中的MarshalByRefClass类或MarshalByRefComponent类中取得你的对象,与使用值传递的标准System.Object基本类不同,你是通过引用传递这些基本类。你也应该避免使用<Serializable>属性标记这个对象,因为你有可能并不希望这个对象连续,而是在服务器中运行它。

  你可以创建一个简单的类库来检测外部远程调用,在 VS.NET集成环境中,创建一个新类库项目,取名为NETserver并把默认的 Class1.vb文件重命名为NETclass.vb。默认的情况下,这个类是从Component基本类中派生出来的,它是通过值传递的。你可以把 Inherits行改为通过引用传递你的类,把你的类改为MarshalByRefComponent的子类:

Public Class NETclass
Inherits System.ComponentModel.MarshalByRefComponent

  你可以添加方法到包含远程运行的代码的类上。例如,你可以编写一个方法从Pubs数据库中以一个作者ID来检索作者姓名,使用Imports语句添加一个引用到 System.Data.dll中。

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方法接收文件名并把它当成一个参数。这个文本文件包含配置远程调用所必需的信息,你需要创建这个文件,我过一会将介绍如何创建。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章