企业级

Part1 软件架构

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

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

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

RUP:

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

制作原型界面确认需求。

编写SRS文档。

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

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

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

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

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

Part2架构模式

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

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

领域模型粒度尽量小。

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

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

数据访问建议:

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

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

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

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

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

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

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

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

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

表现层之web

模型(对象)

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

模板视图、转换视图

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

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

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

Part3轻量架构

发展:

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

开发人员不断寻找更简单的EJB代替品。J2ee中servlet、jsp、jms、rmi、jdbc都是好的规范唯独ejb。

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

Xp教我们怎么思考。

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

Hibenate和JDO代替entity bean

AOP(如spring)声明式事务

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

开发指导:

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

工具:eclipse、intellij、svn、git、junit、ant、maven、spring、jdo、hibernate、struts

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

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

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

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

业务逻辑框架选用spring;支持远程客户端可用hessian、butlap、web service(soap服务apache axis、clue);

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

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

AOP是OOP的补充,横切方法拦截。

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

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

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

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

技术struts、webwork、maverick、jsp、velocity、javascript

Servlet+jsp的mvc

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

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

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

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

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

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

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

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

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

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

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

开源方案:

Ao--Spring、Nanning Aspectes、Jboss4

Ioc--Spring、PicoContainer(可与Nanning集成)、HiveMind

O/R--Hibernate、JDO、iBatis

Web service--GLUE

性能:

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

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

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

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

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

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

Spring

Spring是一个应用框架而不是web、ioc、aop或者中间层框架什么的。

国人应用框架jdom。

Bean工厂:依赖注入

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

Part4敏捷

Part5领域驱动

时间: 2024-12-20 23:06:25

企业级的相关文章

Android高级控件(五)——如何打造一个企业级应用对话列表,以QQ,微信为例

Android高级控件(五)--如何打造一个企业级应用对话列表,以QQ,微信为例 看标题这么高大上,实际上,还是运用我么拿到listview去扩展,我们讲什么呢,就是研究一下QQ,微信的这种对话列表,我们先看一个传统的ListView是怎么样的,我们做一个通讯录吧,通讯录的组成就是一个头像,一个名字,一个电话号码,一个点击拨打的按钮,既然这样,那我们的item就出来了 call_list_item.xml <?xml version="1.0" encoding="ut

【CentOS】部署开源企业级Linux备份工具—BackupPC

BackupPC安装所需的主要的安装包下载地址:http://pan.baidu.com/s/1bnCGCY7 (BackupPC的版本为3.2.1) (该版本的BackupPC是支持中文的,BackupPC配置好后,可以在其Web页面设置其显示语言即可) 1.添加backuppc组及用户 groupadd   backuppc useradd   -g   backuppc   backuppc 2.安装httpd.mod_perl及BackupPC yum   install   httpd

关于企业级ECIF系统的构建设计(未完工)

一:概念: 企业级客户信息系统.作为银行的一 个基础设施项目,承担整合银行各系统中 的客户信息,为其他应用系统提供客户信 息的任务.是银行的统一的客户数据源和 客户信息的数据交换中枢. 二:所需概念 ①:ETL入库加工 ②:ecif数据模型 ③:数据分析 三:目标 ①  建立整合的单一客户视图集群,在这里对客户的 全面信息进行取得. 记录. 修改等操作, 包括基本信 息. 各类帐户. 关系信息等, 构建企业统一的客 户单一视图. 归并和拆分客户信息. 并且处理原有业务系 统保留自身客户信息, 客

企业级docker私有仓库harbor在Ubuntu14.04上的部署与使用

一.harbor简介: 简单的说,Harbor 是一个企业级的 Docker Registry,可以实现 images 的私有存储和日志统计权限控制等功能,并支持创建多项目(Harbor 提出的概念),基于官方 Registry V2 实现的. 二.部署方法: 操作系统:Ubuntu14.04 1.安装docker: #安装插件 sudo apt-get install apt-transport-https ca-certificates #添加GPG key sudo apt-key adv

下载基于JavaEE&&移动平台的企业级房地产ERP采购系统全程开发实录

201课全,下载地址:http://pan.baidu.com/s/1pLxVAHX课程非常牛,不多说.本课程基于众多技术如:Spring IOC,Spring MVC,MyBatis,BeifengFlow,FushionChart,Flexigrid,jackrabbit,课程总共分为4季,第一季是采购系统,第二季是客户关系销售系统,第三季是成本管理系统,第四季是Android版本的手机应该开发.每一季的知识点和业务都不一样,对学员的要求也有所不同.课程需求绝对来源于真实项目,并且主要的业务

数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> 数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例 实验所用数据表 子查询,解决一步不能求解 查询工资比scott高的员工信息: 子查询知识体系搭建: 解释3,查询部门是sales的员工信息: 方法1:子查询 [方法2]:多表: 优化考虑: 解释4[select],只能放单行子查询 解释4[from] 考题:显示员工姓名,薪水 解释

[转载]企业级应用架构(NHibernater+Spring.Net+MVC3)

本人已经从事公司两套这类架构系统的开发工作啦!对于这套架构,我惊叹不已!BPS和CMS系统都是采用这套架构.但本人也同时渐渐发现了这套架构有诸多 不足之处,于是本人利用闲暇时光进一步改进了这套架构.新架构是基于“领域模型”的企业级应用架构模式,使用了 NHibernater+Spring.Net+MVC3的框架技术搭建.即便的是1.0版本,我也惊叹其几乎趋于完美了!这套架构是马丁.福勒关于“企 业级应用架构模式”理论的.Net实践. 架构基于三层模型,使用了接口技术.工厂模式.MVC模式.适配器

从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第七讲 WPF 系统UI结构说明与AvalonDock的使用

说到WPF UI, 现在网上到处都有现成的UI, 我觉得还是AvalonDock算是比较适合企业级系统点,一般向ModernUI之类的只能做做小的App还凑合这用. 这边我分享一个DLL, AvalonDock.dll 访问密码 2f90 , 你们可以去下载,后面我们的demo中就是用这样一种UI结构. 其实对于一个系统的设计,我们要考虑到整体的业务逻辑,数据结构,业务需求与拓展等各方面,我这主要还是分模块一步步慢慢介绍下去,没有具体的项目,我就分模块去慢慢介绍. 这里就说Avalondock的

ios 企业级开发者账号app网页分发流程

准备: *一台运行着OSX的苹果电脑,最新版的XCODE,用于导出ipa和plist 一个HTML网页文件(告知iphone如何找到itms-services,已附上) 一个HTTP服务器(存放APP的服务器,就是提供ipa流量的服务器) 一款云存储(以七牛云存储为例,用于推送plist),建议升级到标准版用户,操作非常简单 备选: 一张二维码,一份自动分辨IOS设备的JS脚本 PS: 从2014年6月开始,网上的教程都变得不太好用了,原因有两个: 从IOS7.1开始,http推送plist已经

企业级应用WebLogic11g集群配置与项目实施_WebLogic部署培训教程

企业级应用WebLogic11g集群配置与实项目施_风哥版WebLogic部署培训教程3 能完成企业级的WebLogic11g集群实施和维护工作,如下:1.了解企业级应用系统项目实施流程2.虚拟机配置与4台Linux主机系统的克隆安装3.熟悉Linux操作系统平台上的WebLogic集群安装4.熟悉WebLogic集群域的配置5.熟悉WebLogic集群JDBC连接池的配置6.熟悉WebLogic集群应用的布署与测试7.熟悉WebLogic的日常维护与性能优化8.熟悉JDK的安装与参数调整 视频