8
技技技技技技 Tony Deng http://friendfeed.com/tonydeng http://twitter.com/wolfdeng http://delicious.com/wolf.deng http://wolfchina.blogbus.com

技术框架对比

Embed Size (px)

Citation preview

Page 1: 技术框架对比

技术框架对比

Tony Denghttp://friendfeed.com/tonydeng

http://twitter.com/wolfdenghttp://delicious.com/wolf.denghttp://wolfchina.blogbus.com

Page 2: 技术框架对比

概括

• 其实我现在使用的技术框架与现在公司大部分团队使用的技术框架没有什么实质上的区别。

• 关键的部分是在于在技术框架的使用程度和使用了模块化、面向服务的思想来进行项目的开发和管理

• 我使用Maven来进行项目模块的依赖管理及切分管理,使用 Spring来合并服务,使用 JUnit来保证模块和服务的可用性

Page 3: 技术框架对比

技术框架对比

• 其他团队现在使用的技术框架:– Spring– Restlet– iBatis/JDBC– Webwork/Servlet– Velocity/FreeMarker/JSP

• 我现在使用的技术框架– Maven– Jaxb/XML Schema– Spring– Jersey– IBaits– Spring MVC– JSTL

Page 4: 技术框架对比

什么是模块化

• 为什么要模块化,什么是模块化?– http://www.infoq.com/cn/articles/modular-java-

what-is-it– http://www.infoq.com/cn/articles/modular-java-

static-modularity

Page 5: 技术框架对比

我理解的模块化

• 如何定义一个模块– 模块的划分主要是针对业务单元。– 我认为一个独立的业务单元就应该是一个模块

• 比如在社区中积分是一个单独的模块,动态应该是一个单独的模块– 怎样来划分模块(业务单元),更多的是依靠我们开发对模块化的理解以及对业务的分解

• 模块的粒度应该是怎样的?– 模块的粒度(划分)应该满足以下约束:

• 应该是一个单纯的,不掺杂其他业务的业务单元。• 模块应该提供一个标准化的接口对外提供服务。• 模块应该是可以自主的演进的,服务模块的演进对其他的服务使用者应该是透明的,不可见,不需要知道的。

Page 6: 技术框架对比

例子

• 在最近的骰子游戏中,我将这个项目所要使用的业务逻辑都按照模块化和面向服务的思想分解开规划。

• 根据我之前的约束,我将这个项目规划为一些模块– Club-core:社区基本 /公用的模块,所有的模块都依赖这个模块– Club-integral:社区积分模块– Club-serurity:社区安全 /权限模块– Club-game-rest:游戏具体逻辑服务以及 REST服务– Club-game-wap:针对wap游戏的webapp模块

Page 7: 技术框架对比

例子

• Club-core– Club-commons-vo:社区公用的 domain model– Club-game-vo:社区游戏的 domain model– Club-shared:社区公用的服务或帮助类(如缓存)

• Club-integral– Club-integral-api:社区积分服务接口定义– Club-integral-impl:社区积分服务具体实现– Club-integral-dao:社区积分数据访问 /持久实现– Club-integral-agent:社区积分服务代理实现– Club-integral-rest-web:社区积分服务 rest服务配置

Page 8: 技术框架对比

谢谢