最近一直在看关于thrift的相关文章,涉及到的内容的基本都是表层的。一旦具体要用到实际的项目中的时候就会遇到各种问题了!

比如说:thrift 的服务器端载体的选择、中间代码的生成options(async asyncctp wcf 等等)、实现服务器端和客户端的基础框架的选择、和承载各层之间的组合的ioc架构。

其实这些东西,内容还是蛮多的。可能大家在看了这篇文章对很多必须要对 thrift 的基础做些普及才能看懂,还有就是windowsservices、wcf、spring.net!

  这里,我是用的C# 做服务器和客户,当然,服务器端公布出的接口客户端就不在乎你是什么语言的了。只需要thrift的编译器生成对应中间代码然后相应编写代码就ok了。

下面是我选择的代码结构:

服务器端的载体我选择了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 中可以看到。

当然里面的代码相当的少,因为spring.services里面做了整合,且一次封装,ServerHost 里面的代码就不用改了,你 唯一要做的就是如何将各个模块用配置整合在一起了。

  从现在的结构视乎看上去很简单,其实不然,要真正将它们整合在一起要做很多配置和调试工作

下面看看生成的dll文件就知道了:

这还只是dll文件,相信用过spring的都知道。spring在代码和结构上带来了福音,但是配置文件的编写和整个框架的调试和融通却是一件头痛的事情。

不过,随着.net 的开源,对项目架构和可扩展性,分布式,可维护性要求也在慢慢体现出来。

所以做.net 的同学们,不要只看到.net的敏捷开发,要看到它有更宏伟的目标(分布式,云层存储,搜索引擎等等);而要达成这样的目标,我们必须重视各种第三方开发的中间件,不管它的原型是java开发的,php开发的,还是其他语言开发的。最重要的是它能带来我们想要的,它能让我们程序不在难以维护,让系统像一个婴儿一样可以逐步成长,而不是其他语言所取代,或是各种重复开发。

用Spring.Services整合 thrift0.9.2生成的wcf中间代码-复杂的架构带来简单的代码和高可维护性的更多相关文章

  1. 3.springMVC+spring+Mybatis整合Demo(单表的增删该查,这里主要是贴代码,不多解释了)

    前面给大家讲了整合的思路和整合的过程,在这里就不在提了,直接把springMVC+spring+Mybatis整合的实例代码(单表的增删改查)贴给大家: 首先是目录结构: 仔细看看这个目录结构:我不详 ...

  2. SSM 即所谓的 Spring MVC + Spring + MyBatis 整合开发。

    SSM 即所谓的 Spring MVC + Spring + MyBatis 整合开发.是目前企业开发比较流行的架构.代替了之前的SSH(Struts + Spring + Hibernate) 计划 ...

  3. Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档

    0 引言 在做服务端开发的时候,难免会涉及到API 接口文档的编写,可以经历过手写API 文档的过程,就会发现,一个自动生成API文档可以提高多少的效率. 以下列举几个手写API 文档的痛点: 文档需 ...

  4. WebService--CXF与Spring的整合(jaxws:endpoint形式配置)以及客户端调用(spring配置文件形式,不需要生成客户端代码)

    一.CXF与Spring整合(jaxws:endpoint形式配置) 工具要点:idea.maven 1.新建一个maven项目 <?xml version="1.0" en ...

  5. 关于RabbitMQ以及RabbitMQ和Spring的整合

    转自:https://www.cnblogs.com/s648667069/p/6401463.html 基本概念 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是 ...

  6. struts2+hibernate-jpa+Spring+maven 整合(1)

    1.0.0 struts2 与 spring 的整合. 1.1.0 新建maven工程 , 编写pom.xml ,这里只需要简单的添加 一个组件就够了: 在myeclipse 生成的pom.xml 添 ...

  7. Spring Boot整合Elasticsearch

    Spring Boot整合Elasticsearch   Elasticsearch是一个全文搜索引擎,专门用于处理大型数据集.根据描述,自然而然使用它来存储和搜索应用程序日志.与Logstash和K ...

  8. SpringMVC+Spring+Hibernate整合开发

    最近突然想认真研究下java web常用框架,虽然现在一直在用,但实现的整体流程不是很了解,就在网上搜索资料,尝试自己搭建,以下是自己的搭建及测试过程. 一.准备工作: 1/安装并配置java运行环境 ...

  9. cxf与spring的整合

    cxf与spring的整合: 一:服务端相关配置(配置好后启动tomocat就自动发布了接口,浏览器打开验证下) 1:导入cxf以及spring的相关jar包; 2:在web.xml中增加配置: 代码 ...

随机推荐

  1. 七牛云A账号数据迁移到B账号下

    1,七牛云A账号下开启空间授权,可以让B账号可以访问A账号下的空间,,授予权限只读即可. 2,下载七牛云命令行工具.(通过命令完成数据迁移) https://dn-devtools.qbox.me/2 ...

  2. 一个能够编写、运行SQL查询并可视化结果的Web应用:SqlPad

    SqlPad 是一个能够用于编写.运行 SQL 查询并可视化结果的 Web 应用.支持 PostgreSQL.MySQL 和 SQL Server.SqlPad 目前仅适合单个团队在内网中使用,它直接 ...

  3. mysql的“The user specified as a definer (”@’%') does not exist”问题 解决

    2017-12-27,MYSQL的存储调用时出现了“The user specified as a definer (”test@’%') does not exist”的问题. 网上查过后,都是提示 ...

  4. maven 错误列表

    1.编译错误 qcadoo-maven-plugin>mvn clean install No compiler is provided in this environment. Perhaps ...

  5. [技术] OIer的C++标准库 : STL入门

    注: 本文主要摘取STL在OI中的常用技巧应用, 所以可能会重点说明容器部分和算法部分, 且不会讨论所有支持的函数/操作并主要讨论 C++11 前支持的特性. 如果需要详细完整的介绍请自行查阅标准文档 ...

  6. .Net Core Api 跨域配置

    .Net Core 和Asp.Net 不同,不需要再去引用其他的跨域组件.创建项目时,就有了. 让接口实现跨域,需要配置两个地方. 一.Startup.cs 这里需要配置两个地方 public voi ...

  7. [国家集训队]Tree II

    嘟嘟嘟 这道题其实还是挺基础的,只不过操作有点多. 区间乘和区间加按线段树的方式想. 那么就先要下放乘标记,再下放加标记.但这两个和反转标记是没有先后顺序的. 对于区间加,sum加的是区间长度\(*\ ...

  8. Zookeeper入门(三)之工作流

    一旦ZooKeeper集合启动,它将等待客户端连接.客户端将连接到ZooKeeper集合中的一个节点.它可以是leader或follower节点.一旦客户端被连接,节点将向特定客户端分配会话ID并向该 ...

  9. shiro实战系列(一)之入门实战

    一.什么是shiro? Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密.   Apache Shiro 的首要目标是易于使用和理解.安全有 ...

  10. JavaScript模块化思想之入门篇

    在写正文之前先写一点废话,从我大三下学期正式接触前端到现在,已经六个月了.自己从HTML,CSS,简单的JS验证开始,一点点开始走入前端的世界.越发的感觉前端这一领域散发着无穷的魅力,也许这和我真心喜 ...