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

原创 2003年08月27日 21:45:00

基于模型、模式的技术架构设计<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

前言

模型是整个架构设计的理论基础,模式是整个架构得以实现的方法论。以模型为基础,以模式为方法,以相关技术为手段去构建一个可行、可靠、可重用的平台架构。

模型是在一个更高的层次对现有的概念或实体进行抽象,它脱离了具体的基础平台,在这种概念的设计下,我们的平台架构会独立于任何基础平台。

模式是一个久经考验的、可行的、可靠的、可重用的针对某一类问题的解决方案。在架构设计中大量的采用相关模式进行设计,使我们的设计是经得起考验、已被证明是可行、可靠、可重用的。

在整个架构设计中我们必须考虑的模型如下:

?         远程、分布式组件模型

?         数据模型

?         业务模型

?         安全模型

这些模型的建立也就意味着我们的架构是多层、分布式的;我们的整个架构设计主要是针对中间层进行设计。


内容

在整个架构设计中我们不能不考虑到表示层与中间层之间的交互。在整个的交互设计中我们必须采用相关模式。在现有的模式中,MVC模式是这种问题域的最佳解决方案。通过MVC模式我们主要要达到如下目标:

?         降低藕合(表示层与中间层)

?         隐藏中间层实现细节

?         隐藏组件类型及位置

在中间层与数据层之间我们也必须提供存取接口,在现有的数据存取接口之上,我们可以自由选择(决定于您选择的基础平台),不过为了整个设计独立于基础平台的特性,我们可以在基础平台之上定义自己的数据存取接口。在整个接口的设计中我们应该做到以下目标:

?         数据源类型、位置无关性

?         接口健壮、友善

业务模型的建立和具体的业务紧密相关,当我们在导入现实世界的业务模型到计算机世界的过程中,我们应该采用相关的模式,以使我们的每个业务组件之间的层次更加合理、清晰;组件之间的交互更加有效。业务模型的建立必须与计算机模型一一对应,以使我们的导入更加流畅、无缝。关于业务模型与计算机模型对应关系如下:

?         功能组织结构图   ――――  软件结构

?         业务流程         ――――  业务组件逻辑流程

?         业务数据         ――――  系统数据

?         业务单据         ――――  系统界面、报表

在业务模型的建立过程中,我们会采用相关的组件模型去实现。对每种组件模型的充分理解会使我们在设计的过程中能够充分的利用这种组件模型的优势,从而更好的为我们的业务模型提供服务。通用的组件模型如下:

?         组件的注册机制

?         组件的发现机制

?         组件的创建方式

?         组件的调用信息的传输机制(协议、编码格式)

?         组件的调用约定

?         组件的生成期管理

?         组件与容器的交互

?         组件的特别规范

既然是一个多层、分布式架构,我们就不得不考虑我们的数据、信息在各层之间的传输机制。为了使我们的系统能够很容易的被其它后续系统集成,在我们的整个数据、信息传输过程中我们都采用了XML编码格式。在处理数据的传输的时候,我们可以采用值对象模式(value object)以减少在物理分布式的情况下多次远程调用带来的性能牺牲。在远程调用参数的处理上,我们又要考虑到本地调用的特点,尽量采用系统提供的序列化功能,由系统来确定什么情况下序列化而不是我们自己去做伪序列化操作(比如自己先将对象导出为字符串等)。在值对象模式的应用中,我们主要针对数据,通过对值对象模式的扩展,将其扩展到数据集合的级别,我们将整个数据处理过程分为两个阶段,一阶段是RDBMS阶段,一阶段是客户端阶段。在客户端阶段我们必须能够提供一个类DBMS的内存数据管理系统模型。

让系统可以把所需要的数据一次性抽取到客户端,然后在客户端进行操作而不是通过频繁的客户端、服务器端交互来完成数据的操作,在用户完成操作后,由用户一次性提交到服务器端以进行持久化处理。为了满足这种需求,我们必须在建立一个简单的客户端数据库管理系统模型。参考模型如下:

?         数据库结构、表结构、关系定义

?         数据保存

?         数据库常用操作(新增、删除、编辑、查询、计算、排序)

?         数据合法性保护

?         数据完整性保护

?         事务或伪事务支持

随着信息化进程的深入,客户对关键业务数据的安全要求越来越迫切。在这种形式下,如果一个平台架构缺少了安全的解决方案,将是致命的,无论对客户还是对整个平台。在整个平台架构中我们可以从安全模型入手去建立自己的安全方案。整个安全模型如下,我们可以基于基础平台的安全框架去实现它。

?         身份验证:                 你是否可以进入系统

?         访问控制:                     你是否可以访问当前资源

?         日志功能:                     你做了什么

?         数据合法性:              数据是否符合业务规则

?         数据完整性:              是否会出现不完整数据

?         关键数据的保密性:       关键数据是否可以被轻易盗取


后记

以抽象模型和模式为背景去设计平台架构,可以使我们的架构在设计上独立于各种基础平台(J2EE、。NET等),也使我们在切换平台时只是在开发语言上有所差别。

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

基于模型、模式的技术架构设计             前言 模型是整个架构设计的理论基础,模式是整个架构得以实现的方法论。 正在装载数据…… 以模型为基础,以模式为方法,以相关技术为手段去构建一个可行...
  • redundo
  • redundo
  • 2007年11月01日 16:51
  • 332

JSP的Model1和Model2架构模式的分析比较

JSP的Model1和Model2是sun公司为了更好地指导Web开发人员进行JavaWeb开发提出的两种架构模式,用专业术语表达就是JSP Model 1和JSP Model 2,它们的本质区别...
  • CHS2065
  • CHS2065
  • 2016年07月17日 22:16
  • 1501

软件架构设计原则和模式(上):分层架构设计

绪论本文打算探讨一下软件架构设计的一些设计原则与经过实践验证的设计模式。 前端(MVC模式)和后端(接口层-业务层-助手层)的分层设计经过了几十年大量软件的证明。分层的思想,就是每一个层次专注做一件事...
  • shendl
  • shendl
  • 2016年05月23日 04:29
  • 6313

架构设计:系统间通信(3)——IO通信模型和JAVA实践 上篇

系统间通信本来是一个很大的概念,我们首先重通信模型开始讲解。在理解了四种通信模型的工作特点和区别后,对于我们后文介绍搭建在其上的各种通信框架,集成思想都是有益的。 目前常用的IO通信模型包括四种(这...
  • yinwenjie
  • yinwenjie
  • 2015年09月19日 08:53
  • 13947

基于VMM的Rootkit检测技术及模型分析

Linux通过其特有的虚拟文件系统(Virtual Filesystem)实现对多种文件系统的兼容。虚拟文件系统又称虚拟文件系统转换(Virtual Filesystem Switch vFs),是一...
  • sdulibh
  • sdulibh
  • 2014年06月09日 11:26
  • 1239

基于微服务的企业应用架构设计范式

这个话题曾经分别在PWorld大会和QCon2016大会上做过分享,得到不错的反响,今天终于有时间整理到博客上了。 微服务好像是这两年突然火起来的,其实和很多其他架构风格一样,微服务架构也是我们在用...
  • frank_zhu_bj
  • frank_zhu_bj
  • 2016年11月16日 13:37
  • 2405

SOA之路:基于Microsoft.net 平台的SOA 架构设计与开发

  • moon66sun
  • moon66sun
  • 2012年03月28日 11:11
  • 888

设计模式学习之架构设计中的架构模式

设计模式是一套被反复使用、多数人直销的、经过分类编目的、代码设计经验的总结。shiy9og设计模式主要目的是为了额更好的获得可重用性,包括体系结构和实习那代码等的重用,能保证系统体系结构的正确性和代码...
  • lufeng20
  • lufeng20
  • 2012年03月11日 15:40
  • 2868

架构风格与基于网络的软件架构设计

如今许多服务都采用了 RESTful API, 而 REST 这一架构风格,最早即来源于 Roy Thomas Fielding 的博士论文 Architectural Styles and the ...
  • on_1y
  • on_1y
  • 2017年03月04日 22:30
  • 1832

redis 中的 reactor 模型

在学习 redis 源码时,发现redis使用的是 reactor 模式的事件驱动方式,为了进一步学习 redis 和 reactor 模式,又不想重复造轮子,干脆动手将 redis 中的 react...
  • honglicu123
  • honglicu123
  • 2016年12月12日 15:07
  • 406
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于模型、模式的技术架构设计
举报原因:
原因补充:

(最多只允许输入30个字)