Thrift在windows下的使用

        在我的业务中,一直有局域网内的rpc要求,之前是基于webservice来做,通过gsoap来生成C++的客户端代码。使用webservice的时候,有两个地方很不爽:

        1) 当接口发生变化的时候,我需要先修改服务器端的接口,然后通过浏览器来访问,然后保存接口描述文件,最后再通过gsoap来生成c++代码,十分的麻烦(当然也可以直接修改接口描述文件,但那玩意太复杂,没有修改服务器端代码来的直接明了)。

        2) Webservice是基于http传输的,数据都是文本,传输效率有限,所以当时需要传输文件的时候都是先通过ftp传到服务器上,然后再调用webservice接口,通知服务器。


      所以一直在寻找一个直接基于tcp的同时支持多种语言的rpc技术,也曾试过xmlrpcjsonrpc但效率也不是非常高。后来一次偶然的机会,看到某人的blog上介绍了thrift的技术,说是效率非常不错,有直接的tcp传输方式,数据支持二进制方式,而且参数直接支持二进制流,还支持n多个语言,描述文件类似与C,哈哈,我的需求全中啊,所以就是它了。


     不过在使用thriftwindows c++版本的时候,还是有点小问题的,当启动服务的时候,会出现WSAStartup的错误,网上找到了老外的解决方法,需要在添加一段代码,就是在TSocket::local_open()的一开始调用isOpen()之前,调用下TWinsockSingleton::create(),我进去看了下,就是调用了WSAStartup,不明白为啥这个thrift里会有这个低级bug呢,是Facebook的那帮大神从来不用windows么?但他们又是如何在不用windows的情况下写出windows的版本并保证没有其他bug的呢?

你可能感兴趣的:(Thrift在windows下的使用)