xmlrpc的標(biāo)準(zhǔn)是xml+http的實(shí)現(xiàn),但是在應(yīng)用過(guò)程中發(fā)現(xiàn)基于http的協(xié)議必然造成客戶機(jī)每次rpc調(diào)用都要進(jìn)行連接服務(wù)器,導(dǎo)致的開銷增大;還有一個(gè)問(wèn)題在于服務(wù)端實(shí)現(xiàn)method的注冊(cè)回掉,而不像RMI那樣兩端都能注冊(cè)服務(wù)方法,如果客戶機(jī)也要增加回調(diào)method的話,也必須起xmlrpc的服務(wù)
xmlrpc-c-1.03.06
http://xmlrpc-c.sourceforge.net 一種xmlrpc的c語(yǔ)言的實(shí)現(xiàn),通過(guò)觀看其代碼,發(fā)現(xiàn)他選擇abyss 作為自己的通信接口來(lái)提供http服務(wù),由于是基于http的,如果作為服務(wù)通信接口的話就不太理想了,比如兩個(gè)系統(tǒng)要經(jīng)常進(jìn)行雙向通信,交互的頻率很高的話,會(huì)導(dǎo)致這種通信的開銷非常大,而且都是單向通信(一般服務(wù)端不能主動(dòng)調(diào)用客戶端的rcp方法)。由于是單向通信,造成了比如 外部網(wǎng)絡(luò)無(wú)法穿透防火墻連接到內(nèi)部主機(jī)的問(wèn)題,更談不上進(jìn)一步的xmlrpc調(diào)用。
所以我想基于xmlrpc-c的改造,替換掉abyss這個(gè)web服務(wù)器的通信接口,提供一種基于tcp的常連接的通信方法,使客戶機(jī)和服務(wù)器都能同時(shí)注冊(cè)自己的回調(diào)函數(shù),然后通過(guò)兩者之間的tcp連接進(jìn)行傳送xmlrp數(shù)據(jù)包。
