2012-08-15 40 views
3

我想知道是否可以使用apache節點的序列化部分。使用你自己的通信協議與Apache節儉?

我基本上已經創建了一個自定義通信協議,並希望從我的服務器(PHP)向客戶端(C#)傳遞節儉對象。

我的本土通信協議基本上是JSON。我想用thrift在PHP端正確構建對象,然後通過JSON發送它,然後我的C#應用​​程序將使用thrift生成的類重構對象--gen csharp myfile.thrift

有沒有人知道這是可能的,或者我會從哪裏開始?我會以某種方式超載TProtocol嗎?

感謝先進! 〜Josh

回答

2

是的,你可以使用Thrift只是爲了對象定義。我們做類似的事情,雖然我們不使用JSON,而是使用二進制格式。

您可以擴展TProtocol,或者您可以讓自己的類查詢您創建的Thrift對象,並將其拖出並編碼您的字段。然後,當您收到JSON時,只需根據您收到的值創建一個新的Thrift對象。

取決於你如何實現它,以及客戶端庫對於C#和PHP(我還沒有使用過)有多好,你可能能夠以某種方式實現它,所以你不必更改代碼當您更改模式時,儘管您仍然必須生成Thrift對象並進行部署。基本上你會遍歷這些對象,並用JSON對每個項目進行編碼。我們在Java中做了這個。

0

對於C#的客戶端,您可以使用Thrift.Protocol.TJSONProtocol如下從您的輸入流中讀取:

TBase object; // replace TBase here with your thrift generated type 
TJSONProtocol jsonIn = new TJSONProtocol(new TStreamTransport(inputStream, null)); 
object.Read(jsonIn); 

你應該能夠產生在PHP端以類似的方式JSON。