最近一直在看关于thrift的相关文章,涉及到的内容的基本都是表层的。一旦具体要用到实际的项目中的时候就会遇到各类问题了!php
好比说:thrift 的服务器端载体的选择、中间代码的生成options(async asyncctp wcf 等等)、实现服务器端和客户端的基础框架的选择、和承载各层之间的组合的ioc架构。java
其实这些东西,内容仍是蛮多的。可能你们在看了这篇文章对不少必需要对 thrift 的基础作些普及才能看懂,还有就是windowsservices、wcf、spring.net!web
这里,我是用的C# 作服务器和客户,固然,服务器端公布出的接口客户端就不在意你是什么语言的了。只须要thrift的编译器生成对应中间代码而后相应编写代码就ok了。spring
下面是我选择的代码结构:windows
服务器端的载体我选择了windows services ,编译器确定是用官方最新的thrift0.9.2(在代码生成的时候options我选择了wcf), 至于Thrift 的基础框架,我选择的是.net的 Thrift 和Thrift.Server和Thrift.Client (客户端能够支持多个服务器端的配置这正式我要找的东西呀),Ioc框架,其实现成的注入框架比较多,什么autoface,unity,spring.net等等;其实最终咱们选择这些依赖注入的目的必定要清楚:(我的观点) 让咱们的架构更松散、代码更美观、代码量更少、高可复用性、更容易维护。其实不管的的选择是什么,目的清楚了你的选择就一目了然了。这里个人选择确定就是spring.net了,由于它有对Wcf,webservice,windowsservice,remoting等 的专门支持Spring.Services。另外的缘由就太多了,让我省去了很多代码,让本来臃肿Wcf的代码变得结构清晰,另外它也统一了全部项目的依赖注入。服务器
其中thrift 的代码生成命令是:thrift -gen csharp:wcf *.thrift架构
如今还看不到spring 的内容,应该它的做用是将松散的代码最后组合成一个成品。因此会涉及不少的spring配置。并且最终只会在ServerHost 项目的app.config 中能够看到。app
固然里面的代码至关的少,由于spring.services里面作了整合,且一次封装,ServerHost 里面的代码就不用改了,你 惟一要作的就是如何将各个模块用配置整合在一块儿了。框架
从如今的结构视乎看上去很简单,其实否则,要真正将它们整合在一块儿要作不少配置和调试工做async
下面看看生成的dll文件就知道了:
这还只是dll文件,相信用过spring的都知道。spring在代码和结构上带来了福音,可是配置文件的编写和整个框架的调试和融通倒是一件头痛的事情。
不过,随着.net 的开源,对项目架构和可扩展性,分布式,可维护性要求也在慢慢体现出来。
因此作.net 的同窗们,不要只看到.net的敏捷开发,要看到它有更宏伟的目标(分布式,云层存储,搜索引擎等等);而要达成这样的目标,咱们必须重视各类第三方开发的中间件,无论它的原型是java开发的,php开发的,仍是其余语言开发的。最重要的是它能带来咱们想要的,它能让咱们程序不在难以维护,让系统像一个婴儿同样能够逐步成长,而不是其余语言所取代,或是各类重复开发。