被调用的远程对象要被客户端知道结构有一种办法就是编译后的DLL分别添加到服务器端和客户端程序的引用中。也就是说,这个服务器对象Dll要拷贝两份,一份放在服务器端,一份放在客户端。
如此一来,会有个问题存在。那就是代码的安全性。如果客户端必须要保持这个对象的Dll,则该对象的实现方式对于客户而言就近乎透明了。另外,这样对于部署也不好。两份同样的dll,如果传递的对象大,也会影响性能的。网上很多这样的讨论,说解决的办法就是写个接口类,但是如果只把这个接口类给客户端,客户端又怎样知道具体是哪个类实现的这个接口,不是还是要在客户端把继承的类的方法写出吗??

解决方案 »

  1.   

    不能只写空类啊,在客户端调用这个远程对象方法时怎么办?这和通不通过防火墙没关系吧,我的程序要在局域网里使用,配置的是TCP+Binary.
      

  2.   

    我的问题其实就是想知道如何在客户端使用远程调用需要的元数据,客户端应该不是使用远程对象的完全拷贝吧?所以我想知道如何在客户端引用所需要的对象?如果只是个接口类那在客户端不是不能new,和使用它的方法吗?
      

  3.   

    // 另外,这样对于部署也不好。两份同样的dll,如果传递的对象大,也会影响性能的。
    绝对不会有任何性能上的损失,部署整个dll到客户端不代表客户端激活
    你可能对remoting工作机制的理解上有错误嗯// 如果只把这个接口类给客户端,客户端又怎样知道具体是哪个类实现的这个接口
    客户端怎么会不知道
    Activator.GetObject得到的对象,你肯定会先转换为接口再使用,你自己总是清楚哪个类实现哪个接口的吧http://www.google.com/search?hl=zh-CN&newwindow=1&q=remoting+interface
      

  4.   

    使用 .NET 远程处理访问其他应用程序域中的对象
    http://msdn.microsoft.com/library/CHS/cpguide/html/cpconAccessingObjectsInOtherApplicationDomainsUsingNETRemoting.asp?frame=true
      

  5.   

    那如果把远程对象的DLL引用到客户端,客户端不是可以通过反编译看其中的实现方法?
      

  6.   

    搞清楚了Sunmast(速马, C++/CLI)谢了