2012-08-15 59 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。