基于模型、模式的技术架构设计

来源:百度文库 编辑:神马文学网 时间:2024/04/27 17:30:03
前言
模型是整个架构设计的理论基础,模式是整个架构得以实现的方法论。以模型为基础,以模式为方法,以相关技术为手段去构建一个可行、可靠、可重用的平台架构。
▓模型是在一个更高的层次对现有的概念或实体进行抽象,它脱离了具体的基础平台,在这种概念的设计下,我们的平台架构会独立于任何基础平台。
▓模式是一个久经考验的、可行的、可靠的、可重用的针对某一类问题的解决方案。在架构设计中大量的采用相关模式进行设计,使我们的设计是经得起考验、已被证明是可行、可靠、可重用的。
▓在整个架构设计中我们必须考虑的模型如下:
远程、分布式组件模型
数据模型
业务模型
安全模型
这些模型的建立也就意味着我们的架构是多层、分布式的;我们的整个架构设计主要是针对中间层进行设计。
内容
◆在整个架构设计中我们不能不考虑到表示层与中间层之间的交互。在整个的交互设计中我们必须采用相关模式。在现有的模式中,MVC模式是这种问题域的最佳解决方案。通过MVC模式我们主要要达到如下目标:
降低藕合(表示层与中间层)
隐藏中间层实现细节
隐藏组件类型及位置
◆在中间层与数据层之间我们也必须提供存取接口,在现有的数据存取接口之上,我们可以自由选择(决定于您选择的基础平台),不过为了整个设计独立于基础平台的特性,我们可以在基础平台之上定义自己的数据存取接口。在整个接口的设计中我们应该做到以下目标:
数据源类型、位置无关性
接口健壮、友善
◆业务模型的建立和具体的业务紧密相关,当我们在导入现实世界的业务模型到计算机世界的过程中,我们应该采用相关的模式,以使我们的每个业务组件之间的层次更加合理、清晰;组件之间的交互更加有效。业务模型的建立必须与计算机模型一一对应,以使我们的导入更加流畅、无缝。关于业务模型与计算机模型对应关系如下:
功能组织结构图   ――――  软件结构
业务流程         ――――  业务组件逻辑流程
业务数据         ――――  系统数据
业务单据         ――――  系统界面、报表
在业务模型的建立过程中,我们会采用相关的组件模型去实现。对每种组件模型的充分理解会使我们在设计的过程中能够充分的利用这种组件模型的优势,从而更好的为我们的业务模型提供服务。通用的组件模型如下:
组件的注册机制
组件的发现机制
组件的创建方式
组件的调用信息的传输机制(协议、编码格式)
组件的调用约定
组件的生成期管理
组件与容器的交互
组件的特别规范
◆既然是一个多层、分布式架构,我们就不得不考虑我们的数据、信息在各层之间的传输机制。为了使我们的系统能够很容易的被其它后续系统集成,在我们的整个数据、信息传输过程中我们都采用了XML编码格式。在处理数据的传输的时候,我们可以采用值对象模式(value object)以减少在物理分布式的情况下多次远程调用带来的性能牺牲。在远程调用参数的处理上,我们又要考虑到本地调用的特点,尽量采用系统提供的序列化功能,由系统来确定什么情况下序列化而不是我们自己去做伪序列化操作(比如自己先将对象导出为字符串等)。在值对象模式的应用中,我们主要针对数据,通过对值对象模式的扩展,将其扩展到数据集合的级别,我们将整个数据处理过程分为两个阶段,一阶段是RDBMS阶段,一阶段是客户端阶段。在客户端阶段我们必须能够提供一个类DBMS的内存数据管理系统模型。
让系统可以把所需要的数据一次性抽取到客户端,然后在客户端进行操作而不是通过频繁的客户端、服务器端交互来完成数据的操作,在用户完成操作后,由用户一次性提交到服务器端以进行持久化处理。为了满足这种需求,我们必须在建立一个简单的客户端数据库管理系统模型。参考模型如下:
数据库结构、表结构、关系定义
数据保存
数据库常用操作(新增、删除、编辑、查询、计算、排序)
数据合法性保护
数据完整性保护
事务或伪事务支持
◆随着信息化进程的深入,客户对关键业务数据的安全要求越来越迫切。在这种形式下,如果一个平台架构缺少了安全的解决方案,将是致命的,无论对客户还是对整个平台。在整个平台架构中我们可以从安全模型入手去建立自己的安全方案。整个安全模型如下,我们可以基于基础平台的安全框架去实现它。
身份验证:                 你是否可以进入系统
访问控制:                     你是否可以访问当前资源
日志功能:                     你做了什么
数据合法性:              数据是否符合业务规则
数据完整性:              是否会出现不完整数据
关键数据的保密性:       关键数据是否可以被轻易盗取
后记
【以抽象模型和模式为背景去设计平台架构,可以使我们的架构在设计上独立于各种基础平台(J2EE、。NET等),也使我们在切换平台时只是在开发语言上有所差别。】