最近在工作中遇到的问题
要实现linux和windows之间的远程调用(RPC)。
我在linux之间用sunrpc和在windows之间用RpcXXX系列的函数都可以进行远程调用。
但不知道如何在linux和windows之间实现调用啊。尝试了一下使用各自的本地API(也就是SunRpc和RpcXXX)写client和server
但是失败了。估计是互相不认识的原因吧。
不知道有没有达人有过这方面的经验
有同事推荐我使用ACE,最近研究了一下,太庞大了 理不清头绪。
XMLRPC不在考虑范围中,这个工作比较要效率,另外最好能不用corba啊
先谢了。

解决方案 »

  1.   

    当然用webservice/xmlrpc,非那么讲求效率,那就自己定义协议
      

  2.   

    微软提供了一个独立的“Windows Services for UNIX 3.5”服务包。这里下载(大约210M):
    http://technet.microsoft.com/en-us/interopmigration/bb380242.aspxNetwork ports and protocols that are used by services in Windows Services for UNIX 3.5
    http://support.microsoft.com/kb/891759
      

  3.   

    使用ICE吧..ICE相对还是简单的..
    http://www.zeroc.com/
    ICE(Internet Communications Engine)是ZeroC提 供的一款高性能的中间件,基于ICE可以实现电信级的解决方案。前面我们提到过在设计网站架构的时候可以使用ICE实现对网站应用的基础对象操作,将基础 对象操作和数据库操作封装在这一层,在业务逻辑层以及表现层(java,php,.net,python)进行更丰富的表现与操作,从而实现比较好的架 构。基于ICE的数据层可以在未来方便的进行扩展。ICE支持分布式的部署管理,消息中间件,以及网格计算等等。
    ICE的优点主要有:面向对象的语义,所有的操作调用都使用迟后绑定。 
    支持同步和异步的消息传递,提供了同步和异步的操作调用和分派,提供了发布——订阅消息传递机制。 
    与硬件架构无关,客户端及服务器与底层的硬件架构屏蔽开来。对于应用代码而言,像字节序和填充这样的问题都隐藏了起来。 
    与上层的编程语言无关,客户端和服务器可以分别部署,所用语言也可以不同,支持C++、Java语言,客户端支持PHP语言。  
    与采用的操作系统无关,ICE完全是可移植的,同样的源码能够在Windows、Linux、MacOS和UNIX上编译和运行。 
    完全是线程化的,其API是线程安全的。 
    采用TCP、IP 和UDP作为传输协议,客户端和服务器代码都不需要了解底层的传输机制。 
    服务器的位置是对用户透明的,ICE例程负责定位对象,并管理底层的传输机制,比如打开和关闭连接。客户与服务器之间的交互显得像是无连接的。服务器可以迁移到不同的物理地址,而不会使客户持有的代理失效,而客户完全不知道对象实现是怎样分布在多个服务器进程上的。 
    采用SSL强加密,可以使客户和服务器完全安全地进行通信。 
    采用内建的持久机制创建持久的对象。并且提供了对高性能数据库Berkeley DB的内建支持。