xmlrpc的标准是xml+http的实现,但是在应用过程中发现基于http的协议必然造成客户机每次rpc调用都要进行连接服务器,导致的开销增大;还有一个问题在于服务端实现method的注册回掉,而不像RMI那样两端都能注册服务方法,如果客户机也要增加回调method的话,也必须起xmlrpc的服务
xmlrpc-c-1.03.06
http://xmlrpc-c.sourceforge.net 一种xmlrpc的c语言的实现,通过观看其代码,发现他选择abyss 作为自己的通信接口来提供http服务,由于是基于http的,如果作为服务通信接口的话就不太理想了,比如两个系统要经常进行双向通信,交互的频率很高的话,会导致这种通信的开销非常大,而且都是单向通信(一般服务端不能主动调用客户端的rcp方法)。由于是单向通信,造成了比如 外部网络无法穿透防火墙连接到内部主机的问题,更谈不上进一步的xmlrpc调用。
所以我想基于xmlrpc-c的改造,替换掉abyss这个web服务器的通信接口,提供一种基于tcp的常连接的通信方法,使客户机和服务器都能同时注册自己的回调函数,然后通过两者之间的tcp连接进行传送xmlrp数据包。