Page 1 of 23
————————————————————————————————————
应用基础架构平台—总体方案
2007-8-6
1. 引言
现在的企业日益认识到,通过从一些公共的功能组件中来构造相关的产品能够带来 显著的提高生产率、客户需求相应能力、产品质量和客户满意度。
在制造业中,波音公司,福特、戴尔等公司都通过各种方法来利用产品之间的公共 特性。比如波音公司,通过建立一条公共生产线陆续推出了757和767客机,而这两种差别很大的产品之间有60%的零部件是相同的,无论是生产效率上还是维护方面的考虑都有很高的价值。
在软件业中,通过类似搭积木的方式来构建需要的软件产品来满足特定用户的特殊要求,通过这种方式能很好的保证软件产品的适应能力。正因为在软件产品之间充分共享公共的特性,进而充分实现了软件生产的高效率,
应用基础架构平台( 软件生产线/业务基础架构平台) 正在迅速的发展成为一种可行的和非常重要的软件开发模式。
如:软件生产线 CodeGenerator :由北京尘狼软件开发的一种应用软件开发工具。软件建立在面向业务的构件基础上,实现了基于构件的可视化开发和自动组装。使得开发者在开发管理软件时,不用编写代码即可生成一套可以运行的系统。
如:北京软件公共技术支撑体系:是由国家863计划支持,北京市科委组织建设的北京软件产业的大型公共技术服务平台。公共技术支撑体系主要从软件工程思路来消除目前软件企业的发展瓶颈,形成了以“三库四平台”(综合服务管理平台、软件质量管理平台、软件开发试验平台、软件测试平台、软件工具库、开放源码库、软件构件库)为特征的北京软件产业的公共技术服务平台。
2. 概述
2.1 范围
领域:
J2EE B/S 数据库应用系统(IE+WEB SERVER); J2EE C/S 数据库应用系统(JAVA GUI+WEB SERVER); J2EE B/S 分布式应用系统(IE+WEB SERVER+JMX SERVER);
J2EE B/S 智能卡应用系统(IE APPLET+WEB SERVER+SOCKET SERVER);
功能范围: 整体功能 客户端(IE) 分页,用户权限,安全,参数信息,异常处理,会话管理 显示组件,键盘控制,窗口控制,定制交互模 板,JAVACARD,多行数据编辑„ 公共技术组件 通用业务组件 核心运行引擎 数据库访问,文件上载/下载,定时器服务 用户权限,菜单,功能点,树… 请求和响应处理,功能点自动调用,异常和日志,定时器服务,应用集成 2.2 目标 2.2.1 设计目标
零编码:尽量以零编码方式提供更多的功能接口 稳定性:保证系统稳定可靠
MVC:以文件分离的形式实现真正的MVC 可管理性:为需求/设计/编码提供自动工具支持 快速适应变化:支持快速,灵活而多变的功能扩充 技术和平台无关性:操作系统,数据库,应用服务器„„ 用户自定义:用户可以定制界面,信息等
2.2.2 技术目标
以J2EE标准实现
同时适用于B/S和C/S模型
支持socket/jmx/webservice/corba/EJB/ OSS/J 等多种应用连接方式 客户端支持AJAX/ VML/ IKEY/JAVACARD技术
2.2.3 管理目标
持续改进软件生产过程
改进软件加工工艺:采用新的工艺思想,如业务基础架构平台,软件开发自动化
生产线等
逐步建立全过程质量保证体系:依据新的软件加工工艺,建立可度量的标准和规
范
优化人力资源管理:依据新的软件加工工艺, 建立专项角色分工体系和相互协作
机制,培养和鼓励发挥角色专长
项目管理有四个要素,工作范围、时间、质量、成本。对一个项目来说当然最理想的情况就是“多、快、好、省”。“多”指工作范围大,“快”指时间短、“好”指质量高,“省”指成本低。但是,这4者之间是相互关联的,提高一个指标的同时会降低另一个指标。
提升软件产品的功能和品质
用户自定义:向用户提供方便的工具,使用户可以定制界面,信息等 快速适应变化:快速适应需求变更等
技术和平台无关性:采用新的技术优化产品性能,业务系统不受任何影响 基于平台的新一代管理软件具有三个重要特点:平台化、集成化和个性化。 平台化是指新一代管理软件将基于业务基础软件平台,它能大大提高软件开发和实施的效率; 集成化是指不同的管理软件将可以在业务基础软件平台上实现无缝的集成; 个性化是指用户可借助业务基础软件平台提供的工具,快速、深度地满足自己的个性化需求。
3. 指导思想和原则
平台分层:技术架构五层,客户层三层 软件开发自动化:采用零码设计思想 区分框架和组件:框架是一个运行引擎 区分业务组件和技术组件:关注业务导向和驱动 用例驱动:RUP 软件过程,根据需求用例设计系统架构 “面向目标” 的软件方法学:实现软件全过程的规约和描述 软件流程规范化:需求->设计->编码->测试, 迭代设计和开发 健全文档:建立和完善需求,设计,编码,测试各项文档 质量规范:建立需求,设计,编码,测试各项规范,指南 分工协作:需求,设计,开发,测试分别有专人负责,协同工作
3.1 平台分层
平台分层是应用软件发展趋势!软件平台化的本质是将复杂的软件系统分层,是分层理论在软件开发中的具体应用,并由此找到软件开发中标准化与个性化之间的恰当契合点。
优点:合理分工,降低开发难度,提高开发效率;提高系统柔性和可扩展性„„ 技术架构的五层 客户层控制层集成层业务逻辑层数据访问层客户层的三层 界面层控制层组件功能层 3.2 软件开发自动化
采用零码设计思想,通过参数化、配置文件的定制设计,使开发人员专注于业务逻辑而不是功能逻辑,远离计算机程序代码的内在的复杂性,开发人员因此上能够更加快速的实现需求的动态变化调整,从而高效的解决了应用开发过程中需求变化的问题,加快软件迭代开发周期。
例1:服务端业务接口的自动调用
请求XML 数据请求数据管理器请求对象:功能ID节点ID功能点对象:控制器功能点列表管理器获取参数数据配置文件获取参数类型JMX 访问接口类访问接口响应数据管理器响应XML 数据响应对象:功能IDObjectName方法参数名称参数类型 例2:客户端响应的自动处理
响应XML 数据响应数据管理器响应XML对象控制器表单数据自动绑定数据表格数据自动绑定分页控件自动处理配置文件自动界面自定义处理登陆用户权限对象自动按钮的权限控制处理
3.3 区分框架和组件
框架是一个运行引擎,集中处理客户端的请求,调用诸多组件的功能,并完成记录日志,异常处理,权限控制,数据转换,业务组件的自动调用等功能。
框架为用户提供的功能接口包括:XML数据,属性定义等。
组件是一些通用模块,为用户提供某一类功能,如安全,数据库访问,智能卡接口等。 组件为用户提供简单的API接口。
3.4 区分业务组件和技术组件
业务组件包括:用户及权限管理,菜单…
技术组件包括:数据库访问,文件访问,异常,日志……
努力建设业务导向和驱动的软件构架体系, 而非技术导向和驱动,提供更多的业务功能接口,是平台建设的重点。
3.5 用例驱动
RUP 软件过程:用例驱动、以基本架构为中心、迭代式和增量。
以具体的若干应用系统为案例,明确需求,根据需求用例设计系统架构。 3.6 “面向目标” 的软件方法学
采用“面向目标” 的软件方法学,建立了基于目标操作模型、域原子模型和全息数据结构模型建立了形式化规约与软件设计的无缝映射,实现了软件全过程的规约和描述,构建其一致的语义结构,以支持从需求分析到软件设计、软件设计到生产的平滑过渡,为用户提供高效、可靠的软件生产平台。 3.7 软件流程规范化
总体原则按需求->设计->编码->测试……的流程完成架构的开发。
迭代设计和开发:先设计和开发核心运行引擎,再逐步增加其他组件功能。
3.8 健全文档
建立和完善需求,设计,编码,测试各项文档。 3.9 质量规范
建立需求,设计,编码,测试各项规范,指南。 3.10 分工协作
需求,设计,开发,测试分别有专人负责,协同工作。
4. 应用系统对架构的需求规约
客户层—IE 浏览器:分页,多行数据编辑…动态菜单,批量数据操作,树,用户定义模
版…
控制层:权限,会话管理,异常和日志,菜单„.
集成层:jmx/ejb/corba/socket/webservice„ 业务逻辑层:异常处理
详见: 《应用系统对架构的需求规约》
5. 总体设计
应用基础架构平台的构成:
核心运行引擎—服务端(J2EE) 通用业务组件—服务端(J2EE) 公共技术组件—服务端(J2EE) 核心运行引擎—客户端(JS) 通用业务组件—客户端(JS) 公共技术组件—客户端(JS)
应用基础架构平台的逻辑结构:
核心运行引擎 通用业务组件 公共技术组件
5.1 架构总图
客户端:核心运行引擎服务端:本地业务服务客户端业务系统核心运行引擎远程应用:远程访问代理服务器远程业务服务
5.2 客户层—IE 浏览器
公共技术组件(JS)核心运行引擎(JS)XMLXML通用业务组件(JS)客户端业务系统CSS 样式文件(HTML,CSS,JS,XML)
公共技术组件:
数据绑定, 数据验证, 异常处理, XML 服务,数据传送...
高级表格,树,菜单,打印,AJAX… 通用业务组件:
动态菜单,动态树,用户权限,分页组件… 核心运行引擎:
事件服务,服务端交互…
方案:
开发接口:HTML 属性,JAVASCRIPT API
基本功能由控制器根据HTML属性完成。
复杂功能调用JAVASCRIPT API 完成。
界面和程序分离:文件彻底分离 不采用jsp, struts 标签。
服务端
用户界面CSS 样式文件控制层 ( 用户接口 ) :客户端交互服务服务端交互服务业务服务:权限控制通用平台:高级服务:高级表格树组件打印组件菜单组件DOJO 框架通用平台: 基础服务:数据绑定XML 服务异常处理键盘控制数字屏蔽数据验证窗口控制鼠标控制数据传送动态属性事件处理配置管理图形组件TAB 组件动态菜单业务数据XML XML服务端
5.3 服务端的组件结构:
公共技术组件(J2EE)数据库/文件通用业务组件(J2EE)本地业务服务(J2EE)XMLXML客户端核心运行引擎(J2EE)XML 配置文件 公共技术组件:
数据库访问,文件访问,日志,异常,XML 访问 通用业务组件:
权限,菜单,功能锁… 核心运行引擎:
请求和响应处理,功能点自动调用,会话管理,权限验证… 5.4 服务端的分层结构
核心运行引擎(J2EE): 控制层集成层本地业务服务(J2EE):业务逻辑层数据访问层数据库/文件
控制层:请求和响应处理,会话管理,权限验证… 集成层:业务集成发布,业务功能点调用 业务逻辑层:业务逻辑处理
数据访问层:数据库访问,文件访问…
5.5 控制和集成层
转发服务用户界面客户端数据接口服务端交互服务请求XML 数据响应XML 数据控制器( 跨页请求)对象转换数据转换请求对象请求处理( 权限,数据缓冲...)系统数据和配置信息系统启动初始化程序响应对象控制器( 页内请求)5.6 前后台数据交互 设计关联模块:
功能点定义XML 请求和响应XML 请求和响应数据对象 前台页面表单 设计目标:
采用统一数据标识,实现如上相关功能; 请求和响应数据格式统一; 通用的数据传输XML 格式;
采用基础平台实现,实现技术和业务的无关性; 设计方案: 请求和响应XML 格式: 说明: 采用一个简化的通用结构:树结构 支持任意深度 只有一个DATA节点对象:三个属性:name,value,type 功能点定义XML: 关于参数名和类型的描述:
6.1 工作流程
第一阶段 应用系统对架构的需求分析 原有框架的总体分析:补充和完善文档资料 第二阶段 架构总体设计: 总体架构模型:层次结构,功能模块… 技术架构方案:技术评估,确立范围… 业务架构方案:权限,功能菜单… 标准规范体系:编码规范,设计规范… 第三阶段 技术研发准备: 数据库访问:DTO/BEO->通用DAO… 文件上载,下载:…… …… 第四阶段 核心架构的详细设计和开发: 第五阶段 使用手册,应用案例 第六阶段 架构扩展功能的设计和开发: CS,JAVACARD. 通用权限…… 第七阶段 自动化工具 6.2 里程碑计划
6.3 第一阶段:核心运行引擎的主要功能 整体功能 客户层 控制层 集成层 数据访问层 数据交互XML规范 数据交互自动化(自动生成请求XML,响应XML数据自动绑定) 请求和响应处理 自动调用本地业务类方法 数据库访问基本功能通用化 应用系统的需求负责人 原有框架的设计和开发人员 架构设计人员 J2EE研发人员 架构设计人员 J2EE研发人员 JAVASCRIPT 研发人员 6.4 第二阶段:公共技术组件 整体功能 客户层 控制层 集成层 数据访问层 文件上载,下载 菜单,树 日期组件,数据验证,高级表格,多行编辑 定时器服务 数据库访问的其他复杂功能 6.5 第三阶段:通用业务组件 整体功能 6.6 第四阶段:架构标准化,业务开发规范化 整体功能 日志,异常 用户管理,权限管理,会话管理, 参数数据访问,分页, 界面信息定制 菜单,树 6.7 第五阶段:CS 支持
6.8 第六阶段:JAVACARD支持 (APPLET) 6.9 第七阶段:应用集成(EAI)支持 6.10 第八阶段:软件文档和开发自动化工具
7. 零码设计
7.1 数据库访问
核心运行引擎 :控制层: 数据库访问通用服务SERVLET集成层客户端标准XML 数据通用业务服务:标准数据传输对象 DTO 业务逻辑层: 数据库访问通用组件BPO标准数据传输对象 DTO 业务实体对象 BEO...数据库数据访问层:数据库访问通用组件DAO
7.2 客户端和服务端之间的数据交互
客户端业务系统(HTML表单数据) 请求XML 数据响应数据管理器核心运行引擎(JS)响应XML对象表单数据自动绑定服务端数据表格数据自动绑定响应XML 数据分页控件自动处理配置文件自动界面自定义处理登陆用户权限对象自动按钮的权限控制处理
8. 核心运行引擎设计—服务端
8.1 数据对象 8.1.1 概述
本部分功能包括如下内容:
请求和响应XML 数据格式的定义; 请求和响应数据对象的定义;
请求和响应数据对象和XML 之间的相互转换; 请求和响应数据对象的管理; 设计特点如下:
采用统一数据格式:易于构建,设计,开发和维护 请求和响应数据格式统一
使用CASTOR 技术,简化对象和XML之间的相互转换 数据格式统一:控制数据,参数数据,集合数据 每个字段属性:名字,值,类型
响应数据两次转换:
(1) 业务返回数据对象到标准响应对象之间的转换:非标准过程
(支持:String, int, long, HashMap, Hashtable, ArrayList( Hashtable),properties,String[]…)
(2) 响应对象到XML 的转换:自动过程
8.1.2 请求对象
8.1.2.1 XML 文件格式:
支持:String, int, long, HashMap, Hashtable, ArrayList( Hashtable)…
9. 功能组件设计—服务端--业务部分 10. 功能组件设计—服务端--技术部分
11. 核心运行引擎设计—客户端(JS) 12. 功能组件设计—客户端—业务部分 13. 功能组件设计—客户端—技术部分
14. 标准规范体系
14.1 客户端
14.1.1 网页文档模版 基本信息: 网页名称 中心配置维护 Config/center/center.jsp 目录文件名 客户端事件: 元素类型 元素名称 事件 表格 中心配置表onClick 格 onClick 单选纽 中心类型 服务端事件: 元素类型 元素名事件 称 onClick 按钮 保存 事件响应处理 当前行变色,自动选中复选框 使表格:中的全部表单元素不可用。 事件响应处理 调用功能点: 请求XML: 打开新页面:…… 14.1.2 界面设计规范 14.1.2.1 CSS 名字: 元素类型 1. 文字 2. 文字 3. 文字 4. 输入框 5. 6. 表格单元格 7. 8. 9. 按钮 10. CSS 位置提示栏 正文大标题 表格标题 普通输入框 只读输入框 文字单元格 输入单元格 反色单元格 CSS 名字 TxtPageWhere TxtTitle TxtTableHead Input InputReadOnly TDText TDInput TDReverse Btn 设计说明 15. 用户使用手册
应用基础架构平台--安装说明 应用基础架构平台--简介
应用基础架构平台—开发指南
应用基础架构平台—客户端组件API说明 应用基础架构平台—服务端组件API说明 应用基础架构平台—案例应用参考
16. 附录:对原来框架的分析
16.1 模块 16.1.1 服务段框架 模块 功能 配置 Conf 配置信息的加载 配置信息的数据访问: 对外接口 : 对内接口 16.1.2 服务端技术组件 模块 DAO组件 基础服务 定时器服务 文件下载 智能卡 功能 QuerySetting QuerySettingCache ArrayHelper ConsoleHelper ConvertHelper ReflectionSerializable ReflectedResponse DynaName TimerServer DirectoryMonitor FileDownloader 16.1.3 服务端业务组件 模块 功能 ActionTarget 权限 DataTarget FacadeTarget Privilege 16.1.4 客户端框架 16.1.5 客户端技术组件 模块 功能 行为权限 数据权限 Facade权限 授权接口 16.1.6 客户端业务组件 模块 分页 16.2 摘要
QueryRunner: 使用JDBC
* Facade的工厂。
* 用户可以在这里申请Facade服务的单例。
* Facade通过配置文件注册Facade服务的实现,其配置策略为:
使用命名策略。在接口名称后加个后缀,如远程实现的后缀为“_conn”,业
务实现的后缀为“_busi”。 例如,对配置“_busi”,则com.baustem.web.DAOFacade的实现为com.baustem.web.DAOFacade_busi。
直接配置。直接把实现类的名称配置到服务接口的名称上。此配置优先。
* 例如,facade.com.baustem.web.DAOFacade = com.baustem.web.DAOFacade_busi。
com.baustem.web.TimerServerPlugIn com.baustem.util.TimerServer
com.baustem.web.DynaAction
Code2Java
* SQL(OQL)的关系运算符处理器。
* 用处: SQL或OQL自动生成工具的参数设置类。
--------------------------------------------------------------------------- com.baustem.web.FacadeServlet ServletRequest <%@ page contentType=\"text/html; charset=GBK\" %> <%@ taglib uri=\"/tags/struts-html\" prefix=\"html\" %> <%@ taglib uri=\"/tags/struts-bean\" prefix=\"bean\" %> <%@ taglib uri=\"/tags/baustem\" prefix=\"baustem\" %>
功能
用户信息 onclick='selectRow(this, \"userid\/>")'>
17. 问题
1) com.baustem.taglib 多个TAGLIB 的功能
2) String privilegeImpl = Conf.config().getString(\"web.Privilege.impl\"); 动态构造权限对象类
3) ? org.apache.commons.beanutils.MethodUtils;
result = MethodUtils.invokeMethod(facade, data.getCommand(), args, types);
in = new ObjectInputStream(request.getInputStream()); data = (SerialProtocol) in.readObject();
GUI 应用的客户端使用。。。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务