架构设计(Java).ppt_第1页
架构设计(Java).ppt_第2页
架构设计(Java).ppt_第3页
架构设计(Java).ppt_第4页
架构设计(Java).ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、架构设计-Workshop,议程,认识架构设计 案例分析1 案例分析2,认识架构设计 - 什么是架构设计?,从具体到抽象,认识架构设计 - 架构设计的目的,认识架构设计 我们已经做的,Workshop-议程,分析两个具体的业务系统并展开讨论 企业货物申报和审核系统 机构人员和授权系统 讨论的方面 需求的清晰化 如何划分系统的各个层次 各层次的实现方法,Workshop-案例分析1,企业货物申报和审核系统 某政府职能机构面向各企业的核心业务 企业向政府申报其待审批的货物,缴纳相应的税费 该政府职能机构规模简介 总部设在北京 全国下设几十个二级机构、数千个业务现场。二级机构的规模不等,沿海地区规模

2、较大 共有业务人员45万人,Workshop-案例分析1,业务介绍 企业必须将货物向政府部门申报并且缴纳税费 政府部门会对企业下发某些货物许可证或减免税条例。有些优惠政策同时也对货物的数量或金额进行了限制 有些政策是地方性的,而有些是全国性的 很多企业也是全国性的,因此企业信息也是全国一致的。同一企业,可能在同一时间段内申报货物,Workshop-案例分析1,业务流程 企业的代表在业务现场提供货物的纸面单据 政府机构的外聘的录入员将其录入到系统中 业务系统根据货物的类别将其分派到不同的工作人员进行审核 业务系统根据货物种类、数量和有关政策计算出税费金额 审核和计税通过后,企业缴费后领取回执,业

3、务办结,Workshop-案例分析1,业务规模 每个工作日,全国共产生5万票货物申请单(每年一千多万票) 业务量还在增长,估计35年内增长到每年二千多万票 每天上午和下午各有两个多小时是业务高峰,平均每秒需要有3票货物申请单入库 每票申请单关联了十几个代码表。审核时,相关的业务数据表也有十几个 总部和二级机构的网络带宽从512K到2M不等 二级机构和下属机构(现场)为高速局域网,Workshop-案例分析1,客户要求 核心业务数据存放在总部 申报单、全国性的政策数据、企业信息、各种许可证等审核相关的单证 项目是由总部集中开发和维护的 各分支机构以及各业务现场的硬件和软件可以统一购买,可以安装同

4、样的操作系统和应用软件,Workshop-案例分析1,讨论 数据如何分布和集中 系统中涉及到的数据有哪几种? 本系统划分的逻辑层次 请画出系统的逻辑架构图 是什么类型的客户端应用? 不同的逻辑层,在物理上如何部署? 列出一些主要的业务逻辑组件 如何保证事务完整性 许可证数据、申请单数据、企业数据可能部署在不同的数据库中 用户如何得到及时的响应 针对于审核过程数据检查 系统如何部署和更新,讨论,Workshop-实现案例1,数据如何分布和集中 系统中涉及到的数据 审核时用到的各种参数数据(很少改变) 全国一致的参数数据 各二级机构的参数数据 全国一致的许可证数据(审核时可以改变) 全国一致的企业

5、数据(审核时只读,但是各地方可能修改) 企业的申报单数据(实时改变) 审核时的流转数据和日志数据(实时改变),Workshop-实现案例1,本系统划分的逻辑层次 逻辑层次的划分可以参照分布式层次划分 物理上可以根据网络带宽,分层次部署数据库、应用服务器 从需求上看,该应用对用户界面的响应和数据的快速录入有比较高的要求,可以考虑智能客户端,Workshop-实现案例1,如何保证事务的完整性 某些数据访问不应该加入事务 数据必须批量提交,保证事务尽可能短 跨数据库的事务,可以考虑JTA二阶段提交,Workshop-实现案例1,用户如何得到及时的响应 避免UI的初始化出现延迟 仅提交必要的数据 限制

6、在业务高峰时,各种查询的复杂度和返回的记录数 复杂的数据提交和事务可以考虑异步模式 客户端充分运用各种缓存技术 能在客户端进行的校验,尽可能在客户端完成,Workshop-实现案例1,系统如何部署和更新 数据更新,可以直接使用数据库的数据分布功能 应用服务器的更新,由总部统一发放更新包 客户端更新,总部发放到二级机构。在二级机构上设置分发服务器 各更新模块批量打包更新,避免在高峰期占用大量带宽,Workshop-案例分析2,为其它办公应用设计一个机构人员管理系统和授权管理系统 两个系统都对外提供服务 两个系统都提供UI可以进行编辑 都提供基于浏览器的管理界面 由于在企业内部使用,可以统一浏览器

7、的版本 用户数目大约有6000人,部门有2000个左右,每个部门内最多有几十个人,部门的级别深度不超过5级,Workshop-案例分析2,机构人员 基本要求 能够体现出机构和人员的树型结构 能够体现人员的兼职情况 扩展要求 实现人员组功能 保存人员的认证数据 数据输出服务,将机构人员数据导出到其他系统 数据变更通知服务 UI要求 可以对机构、人员和组进行批量移动和删除 可以在将一个机构内的子对象进行排序 删除对象时,提供回收站功能 为其它应用提供人员选择查询的UI,Workshop-案例分析2,授权系统 基本要求 可以设置应用、角色和功能 可以将人员配置在角色中 对象封装和访问接口 扩展要求

8、可以将机构或组配置在角色中,形成动态角色。在动态角色中,角色中包含哪些人是根据用户信息和外界环境决定的 功能可以分层 数据变更通知服务 UI要求 用户可以通过Copy/Paste编辑角色中的人员、机构和组,Workshop-案例分析2,角色、功能和被授权对象,Workshop-案例分析2,认证要求 认证与应用的业务处理逻辑分开 如何尽可能地实现单点登录 如何设计一个具有扩展性的认证架构 认证的协议可能有要求 认证信息的存储可能变化 认证方式可能有变化(用户名/口令和IC卡),Workshop-案例分析2,机构人员系统的对外服务 需要提供的接口方法 获取对象(人员、组或机构) 获取子对象集合、获

9、取组成员 任何其他条件的用户和机构查询 对象的增加、修改、删除和移动 UI 提供机构人员的选择界面,Workshop-授权系统的对外服务,需要提供的接口方法 得到应用、角色和功能的基本信息 得到角色中的人员 得到某个人所有角色 得到某个人的所有功能 得到在某个角色中,属于某个部门的所有人(包括兼职),Workshop-讨论,需求方面 机构人员 机构包含人员、包含组 组包含人员,能否包含其它组和机构? 机构人员管理的授权要求是什么? 授权系统 授权系统自身的授权逻辑是什么?,Workshop-讨论,各逻辑层的划分 机构人员和授权系统之间相互依赖 机构人员的管理本身需要授权 授权系统自身也需要授权

10、 授权系统的角色中包含人员、机构和组 授权系统的UI中存在着人员选择的UI 业务逻辑层 业务组件的相互使用情况 业务实体的封装 业务实体的保存、加载和缓存 一些典型的设计实现 角色中包含的人员或者人员属于那些角色,Workshop-讨论,数据存储 使用哪一种数据存储方式 如果使用关系数据库 如何保存树型结构的机构人员数据 具有继承关系的对象如何保存在关系数据库中 服务接口 机构人员、授权系统之间的调用 其它系统和这两个系统之间的调用 以何种形式提供服务接口? Web Service、Java RMI、Socket,Workshop-讨论,服务代理 主要作用是什么? 缓存 机构人员和授权系统所使

11、用的缓存 在哪些地方会使用缓存 如何使缓存失效 消息通知 如何设计一个消息总线 机构人员和授权信息的变更如何通知到其它系统 如何进行订阅,Workshop-讨论,用户界面 如何为其它Web应用提供一个机构人员选择界面 日志审计 划分哪些日志类型 日志的保存和查询 日志中需要保存哪些信息 测试 存在着哪几种类型的测试 测试数据的准备和参数化 部署和可用性,讨论,Workshop-实现案例2,关于需求 机构人员 机构包含组,组不包含机构,防止嵌套 组不再包含组,也是为了简化处理。在LDAP中,组可以包含组 在我们的应用中,通常需要象LDAP一样,权限控制在每个对象上,权限可继承。通常用户将部门分为

12、几级,不同级别的管理员管不同部门。,Workshop-实现案例2,授权系统 授权系统自身的管理,也存在权限判断。 一旦创建一个新的应用,那么就会产生一组新的功能和角色,专门用于对此应用的授权操作 实际上,应用内的角色和功能分成两类,自授权和应用授权 通过这种自授权机制,可以实现分级授权 系统初始阶段,任何人都可以操作,Workshop-实现案例2,各逻辑层的划分,Workshop-实现案例2,业务实体的封装 基于接口的设计,定义各个对象的基本属性 通过工厂模式创建对象 接口和实现都要体现出对象之间继承关系 最好能够序列化为xml,可以供客户端脚本处理,Workshop-实现案例2,业务实体与O

13、-R Mapping 定义业务实体和数据库表的对应 定义业务实体属性和表字段的对应 根据对应关系,生成CRUD的SQL语句 采用Lazy Loading加载子对象 通过UnitofWork来反映对象属性的变化,Workshop-实现案例2,业务实体和缓存 在授权系统中,为了提高判断效率,所有用到的机构人员对象,都会被保存到缓存中 运行一段时间后,缓存中将包含大多数机构人员对象 缓存中对象的实效,依赖于机构人员数据变更的消息通知,Workshop-实现案例2,数据存储 LDAP和关系数据库的比较 关系数据库中保存树型结构 在机构人员中,每一个对象包含一个Path,使用Path来判断父子关系,Pa

14、th可以用来表示深度有限的树 总公司办公室秘书科张三,Workshop-实现案例2,服务接口 服务接口也包含认证,但是仅仅对服务帐号进行认证,而不是应用帐号 以何种形式提供服务接口? 必须在服务接口的调用前后能够插入扩展功能 日志、缓存 Socket 和Web Service具有一定的扩展性,Workshop-实现案例2,服务代理 服务代理不一定封装服务接口暴露出来的所有方法 服务代理的入口参数类型、返回参数的类型、调用方式都是为了方便调用者 服务代理这一层可以设置缓存,缓存和调用者可以在一个AppDomain中 授权系统在判断权限时所用到机构人员对象,都是通过服务代理得到的并且进行缓存的,W

15、orkshop-实现案例2,缓存的使用 服务接口中的缓存 缓存失效可能跟时间有关(有效期) 服务代理中的缓存 缓存的失效可能和时间有关,也可以和外界的消息通知有关 管理界面中用户认证信息的缓存 缓存的失效可能和Cookie有关。,Workshop-实现案例2,认证 我们参照Passport机制编写了统一的Web认证服务 认证方式可以动态地配置(LDAP、数据库) 认证界面也可以定制(IC卡认证) 为很多应用编写了Filter,帮助应用通过认证服务来生成Principal,Workshop-实现案例2,UI 为其它Web应用提供一个机构人员选择查询界面 调用者和人员选择界面不在一个站点上 只能通过标准的Get/Post/Frame(IFrame)来交换数据 调用者和人员选择界面在一个站点上 可以使用Web Dialog来传递复杂数据,Workshop-实现案例2,日志审计 日志类型 调试信息、程序的异常、应用日志、安全审计日志、测试的状态数据 产生日志的源 某一段代码、某一个应用 、某

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论