最近项目要涉及到和第三方数据交换,简单地说就是他们的系统需要从我们的系统的取一些数据。当时领导安排任务的时候,我想起了4种方案:
1)假如他们的数据库是sql server的话,那么可以直接用链接服务器的技术,给他准备一张视图即可。
2)最常用的当然是webservice了。也最简单的了。(面向消息)
3)RPC,远程过程调用。这个时候想到了Thrift。(面向方法)
4)restful api,这种面向资源的接口。(面向资源)
然后网上查了一下,他们的比较,大家可以看看下面这篇帖子:
http://kyfxbl.iteye.com/blog/1745550
当然最后的方案选择的是webservice了。毕竟可以直接发布在IIS上了,相对于.net平台,发布一个webservice太方便了。
Thriftd 介绍网上好多,我就把几个关键的写下来:
支持的数据传输格式、数据传输方式和服务模型
(a)支持的传输格式
TBinaryProtocol – 二进制格式.
TCompactProtocol – 压缩格式
TJSONProtocol – JSON格式
TSimpleJSONProtocol –提供JSON只写协议, 生成的文件很容易通过脚本语言解析。
TDebugProtocol – 使用易懂的可读的文本格式,以便于debug
(b) 支持的数据传输方式
TSocket -阻塞式socker
TFramedTransport – 以frame为单位进行传输,非阻塞式服务中使用。
TFileTransport – 以文件形式进行传输。
TMemoryTransport – 将内存用于I/O. java实现时内部实际使用了简单的ByteArrayOutputStream。
TZlibTransport – 使用zlib进行压缩, 与其他传输方式联合使用。当前无java实现。
(c)支持的服务模型
TSimpleServer – 简单的单线程服务模型,常用于测试
TThreadPoolServer – 多线程服务模型,使用标准的阻塞式IO。
TNonblockingServer – 多线程服务模型,使用非阻塞式IO(需使用TFramedTransport数据传输方式)
因为客户端和服务器所选择传输方式要一样,所以需要好好看看。