協議緩衝器是「輕量級」的,因爲它們產生非常緊湊的線路表示,從而節省帶寬,內存,存儲等,同時保持非常通用的跨語言。當然,我們在Google上使用他們的批次,但是您是否關心這些性能特徵並不清楚 - 您似乎在與此不同的意義上使用「輕量級」,嚴格與(精神)負載相關在你身上,程序員,而不是所有在計算機和網絡上的(計算)負載;-)。
如果您不關心花費更多的帶寬/內存/等等,而且您也不關心以不同語言編寫參與子系統的能力,那麼協議緩衝區可能對您而言並不是最佳選擇。
既不是pickling
,如果我正確地讀了你的「有點安全」的要求:取消適當構造的惡意pickled-string可以在取出機器上執行任意代碼。事實上,HTTP在一定程度上並不「有些安全」:在該協議中沒有任何東西可以阻止入侵者「嗅探」您的流量(所以您絕對不應該使用HTTP發送機密有效負載,除非您可能使用強加密在發送它之前的有效載荷並在接收它之後撤消)。爲了安全(再次取決於你對這個詞的含義),你需要HTTPS或者(更簡單的設置,不需要你購買證書!)SSH隧道。
一旦確實在兩臺機器之間建立了SSH隧道(對於Python,paramiko
可以提供幫助,但即使通過shell腳本或通過其他方式直接控制ssh
命令行客戶端也不會太糟糕;-)您可以運行它上面的任何協議(例如HTTP都可以),因爲隧道端點可以作爲您可以打開套接字的給定編號的端口。我個人推薦使用JSON而不是XML來對有效載荷進行編碼 - 例如,對於基於XMLRPC的基於JSON的RPC服務器和客戶端,請參閱here - 但我猜想使用Python標準庫附帶的XMLRPC服務器和客戶端是甚至更簡單,因此可能更接近你正在尋找的東西。爲什麼你還想要cherrypy?現在性能突然變得簡單了,僅僅是整個架構的這個方面,而在其他任何情況下,性能都是簡單的?這似乎是一個非常矛盾的建築選擇! - )
@尼克你有什麼特別不喜歡protobuf?它如何不像XML-RPC那樣輕量級? – 2010-02-04 14:01:09
我更新了我的答案。 – 2010-02-04 14:56:00
通過https的JSON?當然有一個Python庫來處理JSON。 – 2010-02-04 16:00:08