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

参考页面:

http://www.yuanjiaocheng.net/CSharp/csharp-class.html

http://www.yuanjiaocheng.net/CSharp/csharp-variable.html

http://www.yuanjiaocheng.net/CSharp/Csharp-data-types.html

http://www.yuanjiaocheng.net/CSharp/cshart-value-reference-type.html

http://www.yuanjiaocheng.net/CSharp/Csharp-keys.html

  最近一直在看关于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开发的,还是其他语言开发的。最重要的是它能带来我们想要的,它能让我们程序不在难以维护,让系统像一个婴儿一样可以逐步成长,而不是其他语言所取代,或是各种重复开发。

时间: 2024-10-25 20:39:27

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

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

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

spring boot整合cxf发布和调用webservice

一.前言 说起web service最近几年restful大行其道,大有取代传统soap web service的趋势,但是一些特有或相对老旧的系统依然使用了传统的soap web service,例如银行.航空公司的机票查询接口等.本博客主要讲解得是spring boot整合cxf发布webservice服务和spring boot整合cxf客户端调用webservice服务本案例使用maven方式二.编码核心文件清单1.pom.xml <?xml version="1.0"

Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】

Spring mvc整合mybatis例子, 基于mysql数据库实现对用户的增.删.改.查,及分页显示的完整例子. 查询显示用户 添加用户 更新用户 官方验证: 项目截图 必须修改applicationContext.xml中mysql的配置为本地的,否则启动失败. 另外jar包多一个ehcache.jar无关紧要,删除即可. 1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库

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

1.0.0 struts2 与 spring 的整合. 1.1.0 新建maven工程 , 编写pom.xml ,这里只需要简单的添加 一个组件就够了: 在myeclipse 生成的pom.xml 添加如下代码: <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.16

Struts、Hibernate和Spring的整合

Spring整合Hibernate Spring以其开放性,能与大部分ORM框架良好的整合.这样Spring就能轻松地使用ORM. Spring提供了DAO支持,DA0组件是应用的持久层访问的重要组件,我们把主要精力集中在数据的管理口上. 此外,Spring还提供了一致的异常抽象,不需要在编码时显示的捕获各种特定的异常. 通过Bibernate进行数据持久层操作时,Hibernate的Session接口提供了基本的数据访问方法,获得Hibernate Session对象方法是要实现Hiberna

【Spring】Spring&amp;WEB整合原理及源码分析

表现层和业务层整合: 1. Jsp/Servlet整合Spring: 2. Spring MVC整合SPring: 3. Struts2整合Spring: 本文主要介绍Jsp/Servlet整合Spring原理及源码分析. 一.整合过程 Spring&WEB整合,主要介绍的是Jsp/Servlet容器和Spring整合的过程,当然,这个过程是Spring MVC或Strugs2整合Spring的基础. Spring和Jsp/Servlet整合操作很简单,使用也很简单,按部就班花不到2分钟就搞定了

Spring+Hibernate整合

因为整合spring和hibernate所以,需要用到spring里面复写Hibernate的类以有DI和IOC特性 db.sql hibernate_basic数据库 表 person 字段 pid pname psex Person.java 1 package cn.edu.spring_hibernate; 2 3 public class Person { 4 private Long pid; 5 private String pname; 6 private String psex

Mybatis运用mapper代码实现和Spring的整合(一)

引言 先前做的java项目中一直使用的EclipseLink和Hibernate,两种ORM框架,现在用Mybatis实现,当然它们之间各有各的优点,同样也有缺点,有时候,一个项目中是可以存在两种框架一起使用的,在项目中,技术选型很重要.Mybatis是一个持久层的框架,是apache下的顶级项目,mybatis让程序将主要的精力放在sql上,通过mybatis提供的映射方式,自由灵活生成. Mybatis的主要是靠sql语句来进行实现对数据库持久化的,这就是mybatis的硬伤,当然,它也因为

Mybatis框架学习(四)—查询缓存与spring的整合开发

1       项目整体目录 2       查询缓存 2.1     缓存的意义 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题. 2.1    mybatis持久层缓存 mybatis提供一级缓存和二级缓存 mybatis一级缓存是一个SqlSession级别,sqlsession只能访问自己的一级缓存的数据,二级缓存是跨sqlSession,是mapper级别的缓存,对于mappe