码迷,mamicode.com
首页 > 其他好文 > 详细

企业级

时间:2015-11-28 11:53:22      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

Part1 软件架构

“架构”是依据业务设计组件、模块、框架、类等不同粒度的单元将其组合的策略。没有理想上通用的架构,不同的软系统的着重点不同。(业务逻辑复杂、并发性能高、扩展性好)

架构五视图概念:物理架构(安装、部署需求)、逻辑架构(业务需求)、数据架构(数据需求)、开发架构(代码扩展、重用需求)、运行架构(运行性能安全需求)。

开发中需要挖掘、分析清需求,利用多视图设计出架构模型。最后转换成组件、模块  、接口、类进行验证。

RUP

需求分析建立用例图为用例添加规约。(用例描述)

制作原型界面确认需求。

编写SRS文档。

RUP在迭代中找出风险性最大架构问题,尽量减少风险,XP里由核心用户故事来驱动)

领域建模与需求分析同步进行。

模型建立与领域专家交流。

精化领域模型设计模块、接口、类。

 

概念架构分层,层次中加入鲁棒图分析。

 

 

 

Part2架构模式

三层架构:表现层、领域层、数据层,后两层绝对不要依赖表现层。

组织领域逻辑三种模式:事务脚本、表模块、领域模型,尽量使用领域。

领域模型粒度尽量小。

避免实体bean重进入。(一个对象改变了bean状态,不应再被另一个对象使用)

可在领域层加薄服务层提供接口与客户层连接。

 

数据访问建议:

控制粒度尽量减少数据库访问次数,使用join避免多次进入,利用ormaping框架,使用连接池。

合理设计数据表继承结构。

(三范式 1nf字段不可再分 2nf非关键字依赖自己关键字 3nf 不存在传递依赖 )

先领域模型设计而不是先设计数据库表

避免长事务,减少事务隔离提高灵活。

 

数据源架构:表数据入口(表对应记录集)、行输入入口(行对应类)、活动记录(同行输入入口将逻辑加入类)、数据映射器(数据对应领域对象)

反射编写数据映射器或使用开源mapping工具

使用mapping设计时注意对象的工作单元、标识域、继承、延时加载、缓存

备忘数据可对象序列化(类对象、jsonxml)保存BLOB

 

 

 

表现层之web

模型(对象)

页面控制器(跳转)、前端控制器(interpret filer、装饰)、应用控制(逻辑调用)

模板视图、转换视图

 

客户端会话cookie (可加密防篡改)

服务端会话 session (占内存可序列化保存)

数据库会话 建临时字段(状态保存与 客户端、服务端会话数据比较)

 

 

Part3轻量架构

发展:

EJB测试困难严格的单元测试和测试驱动开发TDD日益变流行。

开发人员不断寻找更简单的EJB代替品。J2eeservletjspjmsrmijdbc都是好的规范唯独ejb

架构满足业务需求的能力以经验评测,不是全凭主观臆断、一厢情愿。

Xp教我们怎么思考。

 

EJB服务:目录JNDI、事务JTSJTA、连接JCA、资源池、线程管理、entity bean

HibenateJDO代替entity bean

AOP(spring)声明式事务

业务对象线程池缓存:web应用时Web容器提供线程池无需再业务层在提供,只有用RMI才需要。

 

开发指导:

参考架构:开源框架中的模板,如果你的模板是基于一个应用(sun java PetStore)而不是一个框架结果多半失败。

工具:eclipseintellijsvngitjunitantmavenspringjdohibernatestruts

 

 

业务服务层:接口形式、oo、内部机制不应过复杂、独立表现层、不直接与数据层打交道、有事务管理、易测试、可伸缩性、尽量无状态(如把状态保存web层)、ioc达到接口现实分离

业务对象和表现组建运行在同一jvm,所以搭建集群部署到新jvm实现水平扩展。

活动记录在领域对象中包含数据访问逻辑,是entity bean和传统持久化框架使用的方法。

数据映射器包含所有持久化逻辑。TOPLINK通过共享缓存访问读取对象,如果不为对象克隆就不能修改对象否则会破坏共享缓存。

业务逻辑框架选用spring;支持远程客户端可用hessianbutlapweb servicesoap服务apache axisclue);

很多web应用没有清晰的业务服务层,往往依附web层框架(如struts);

OO编程模式很难处理一些与实际正交需求(如:安全性)而spring通过AOP能解决。  

AOPOOP的补充,横切方法拦截。

把精力集中在问题领域上而不是技术本身。

DTOVO都是伪对象尽少使用,OO原则很重要

 

 

表现层:业务逻辑独立于表现层。

Web应用web层:(expert one on one j2ee design and development 1213章)

技术strutswebworkmaverickjspvelocityjavascript

 

Servlet+jspmvc

 

 

 

数据层:使用o/r mapping工具使得领域对象可包含业务逻辑,领域模型就是有对象而不是哑数据容器构成了。

  

EJB 无状态会话Bean SLSB)的审视:

声明性事务管理:spring提供基于AOP的声明事务管理,支持多数据库的JTAJDBC,回滚规则配置,编程性事务。

远程调用:web应用中将web组件和业务组件方在同一JVM比较好,需要远程调用暴露web services接口可行。

集群:EJB有状态会话bean的集群能力差,通常集群可通过J2eeweb容器、web

服务器或者硬件设备处理。

线程管理:实现不读写实例变量的多线程服务对象这种方法在servletsturts action中工作的非常完美,使用命令模式为每个请求创建实例消除对象内部并发,使用java同步、并发库。

实例池:slsb缓冲池是节省内存,spring实例池commonsPoolTargeSourse,现在jvm垃圾收集效率高内存也便宜。

资源管理:将数据库连接放入资源池,dbcp等做得很好。

安全:用AOP实现声明性自定义安全性,自定义安全拦截器。

业务对象管理:Spring作为对象工厂,spring提供缓冲池,ioc功能代替jndi查找。

 

开源方案:

Ao--SpringNanning AspectesJboss4

Ioc--SpringPicoContainer(可与Nanning集成)、HiveMind

O/R--HibernateJDOiBatis

Web service--GLUE

 

性能:

响应时间:应用程序处理一个请求的时间(如http请求)

延时时间:从应用程序得到反馈所需最小时间。

吞吐量:一段时间内所能进行的工作总和,web应用常用每秒点击率衡量,事务处理程序则是每秒完事务数。

可伸缩性:指应用程序如何对应增长流量。可伸缩常等价于水平伸缩性(向上伸缩)集群是一种。垂直伸缩在每台服务器上运行多份服务,如添加cup、内存。

缓存(可以进行缓存的地方):数据库、O/R mapping、业务对象(业务层用aop缓存)、web层对象、过滤器与jsp标签缓存、HTTP头控制浏览器web缓存

优化:控制继承树深度、直接访问字段而非方法访问、用局部变量代替实例变量、去除不必要log

 

Spring

Spring是一个应用框架而不是webiocaop或者中间层框架什么的。

国人应用框架jdom

Bean工厂:依赖注入

应用上下文:在bean工厂基础上增加对信息

 

 

 

 

 

Part4敏捷

Part5领域驱动

企业级

标签:

原文地址:http://www.cnblogs.com/tintindeng/p/5002312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!