深入研究VB.Net远程调用对象的机制
http://tech.ddvip.com 2006年07月27日 社区交流
本文详细介绍深入研究VB.Net远程调用对象的机制
obj = CType(Activator.GetObject (GetType(NETserver.NETclass), _
"http://localhost:8085/NETclass"), NETclass)
这行语句很复杂,它调用GetObject方法从指定URI取得一个 NETserver.NETclass类型的对象。然后使用CType函数把得到的结果对象强制转换成 NETclass类型以便你可以在你的代码中使用它。
你的客户机代码剩余部分就可以保持不变了,如果你决定使用编程配置你的客户应用程序,我推荐在一个函数中封装对象的创建过程,如下:
Private Function NewNETclass() As NETclass
Return CType(Activator.GetObject( GetType(NETserver.NETclass),_
"http://ineroth:8085/NETclass") , NETclass)
End Function
然后,当你想得到这个对象的一个引用的话,你可以使用这个函数:
obj = NewNETclass()
虽然这还不象使用 New关键字那么简单,它还是封装代码来创建远程对象。
远程程序很难调试,这是因为你的客户应用程序有到你的远程程序直接的引用,当远程程序失败时而你的客户机看上去仍然在工作。这是因为如果远程调用过程失败的话,客户机就会试图调用对象的局部拷贝。
你可以证明在这个函数返回它的值之前,通过在NETclass中添加一行代码调用远程对象来打印一则信息到控制台窗口:
Console.WriteLine("Returning " & CStr(dr.Item("au_lname"))_
& ", " & CStr(dr.Item("au_fname")))
现在,在你的主应用程序运行的服务器控制台窗口中,当它被调用时这个功能显示一则信息。当你运行客户应用程序时转换到控制台窗口并保证它显示这则信息。事实上,这证明你正在与远程对象交互。
如果你在连接远程对象时遇到了麻烦,你可以通过使用浏览程序来测试这个主应用程序。在一个控制台窗口中运行这个主应用程序,然后打开 Internet Explorer并且定位到这个远程对象的 URI。在我的例子中,你将定位到这个 URI:
http://localhost:8085/NETclass
如果主机正确操作,你应该看作为显示为一个页面或 XML的远程对象的SOAP定义(参见图3)。如果你没有看,主机可能就没能正确配置。

你可以使用远程调用来创建 N层应用程序,只要通过调用 Active Server Pages ( ASP.NET )或者来自 VB.NET客户端应用程序中的 remote组件。 你也可以通过把 NEThost放进 Windows 2000 Service Application中,来增强这个例子的功能。因为那样的话,服务器在这台机器运行的任何时候都可用。你还可以使用它从一个数据库中返回数据,或者执行其他需要的服务器端处理过程。 你还可以使用 ASP.NET页面或者 VB.NET Windows应用程序来替换本文中的简单的例子,这样你就可以向你的用户显示你丰富的才华了。
作者:wayne 责编:豆豆技术应用