一个体系结构定义一个词汇表和一组约束。
词汇表包含构件和连接件。
约束定义构件和连接件的组合方式。
一、数据流风格
1、管道-过滤器风格
工作原理
读取并消费数据流,过滤器在处理数据的时候不是先收集再处理,而是输入被完全消费之前,输出就产生了。
例子
编译器
![在这里插入图片描述](https://img-blog.csdnimg.cn/f3a88e2a3dba404d8a8ed072d5bf8f53.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2o5p2o5Y2h5LiN562U,size_20,color_FFFFFF,t_70,g_se,x_16)
Unix管道
![在这里插入图片描述](https://img-blog.csdnimg.cn/e3cc047eaaef4d6480ec1e69a4d3818e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2o5p2o5Y2h5LiN562U,size_20,color_FFFFFF,t_70,g_se,x_16)
特点
数据是增量式传递,构件的粒度较小,高并发,实时性好。
2、批处理风格
工作原理
每一步处理都是独立的并且每一步都是顺序执行,只有在前一步结束后才能开始下一步的处理并且数据必须是完整的,以整体的方式来传递。
例子
基于Eclipse的代码重复检测工具
![在这里插入图片描述](https://img-blog.csdnimg.cn/c7f5daed858b4713bb38c7729425c18b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2o5p2o5Y2h5LiN562U,size_20,color_FFFFFF,t_70,g_se,x_16)
特点
采用整体传递数据的方式,构建力度较大,但并发性差,延迟高。
二、过程调用风格
1、主程序-子过程风格
工作原理
将系统分解成若干模块,主程序调用这些模块实现完整的系统功能。
特点
可以将复杂的程序分解为简单的、易于控制的子任务,适用于较大程序。
但可重用性较差,测试困难。
2、面向对象风格
工作原理
对象之间通过功能与函数调用实现交互。对象是通过函数和过程的调用-返回机制来交互的,而类是通过定义对象,再采用调用-返回机制进行交互。
特点
对象将数据与操作封装在一起,对外隐藏了自己的信息。
但需要管理大量的对象,随着继承引起的复杂度增大,会产生连锁反应。
三、独立构件风格
1、进程通信体系结构风格
工作原理
将不同的功能,划分为独立进程,进程之前通过消息传递进行连接。
例子
客户-服务器架构,其中服务器通常用来为一个或多个客户端提供数据服务,客户端则用来向服务器发出请求,针对这些请求服务器通过同步或异步方式进行请求响应。
2、基于事件的隐式调用风格
工作原理
构件不直接调用一个过程,而是触发或广播一个或多个事件。
![在这里插入图片描述](https://img-blog.csdnimg.cn/ae9bc4d8bebf4b2ba6e9957efc1984b5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2o5p2o5Y2h5LiN562U,size_20,color_FFFFFF,t_70,g_se,x_16)
例子
MVC、RSS、调试器
![在这里插入图片描述](https://img-blog.csdnimg.cn/17f256aa28174b22b012429fd05d7fb2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2o5p2o5Y2h5LiN562U,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2448ef3b1f02416db557acd9880b59d1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2o5p2o5Y2h5LiN562U,size_20,color_FFFFFF,t_70,g_se,x_16)
特点
事件并不知道那些构件会被这些事件影响到,相互保持独立,这样就不能假定构件的处理顺序,甚至不知道哪些过程会被调用,并且各个构件彼此之间没有连接关系,各自独立存在,通过对事件的发布和注册实现关联。
四、层次风格
1、分层模式
工作原理
每一层为上层服务,并作为下层的接口,仅相邻层间具有层接口,不能跨层交互。
特点
抽象:层次风格把系统当作一个抽象整体来看的同时,提供了足够的细节来理解每一层的角色和职责以及层之间的关系。分层使设计者可以把一个复杂系统按自上而下抽象程度递增的步骤进行分解。
隔离:不需要在设计阶段作有关数据类型、方法、属性和实现的假设,因为这些特性不会跨越层边界暴露。可以对单独的层进行技术升级,通过封装可以减少风险并且使得对整个系统的影响减少到最低程度。
可扩展性: 层次系统每一层最多和上下两层交互,对任一层功能的改变,最多只影响其他两层。
可管理性:核心关注点的分离有助于找到依赖,并将代码组织得更加易于管理。
性能。通过把逻辑层分布到多个物理层中,可以提高可伸缩性、容错性(fault tolerance)和性能。
可重用性:每一层提供的功能都是独立的和定义良好的。不同层之间有明确的接口,在解决一个新的问题时,使开发人员更容易地重用一个已有的层。
可测试性。由于有了明确定义的接口,以及可以在层接口的不同实现之间实现按需切换,可测试性明显增强了。
标准化:清晰定义并且广泛接受的抽象层次能够促进实现标准化的任务和接口开发,同样接口的不同实现能够互换使用。
但并不是每个系统都可以很容易的划分层次,且分层之后对调用链边长,系统运行效率将会降低。
五、虚拟机风格
1、解释器风格
工作原理
解释器是一种运行程序的程序,软件中含有一个虚拟机,通常用来建立一种虚拟机用以拟合程序语义与硬件语义之间的差异
例子
Java的VM,手机软件开发模拟器,一些高级语言解释执行器。
特点
可以用来仿真硬件的执行过程,但执行效率较低。
2、规则系统
工作原理
规则系统将业务逻辑中可能频繁发生变化的代码从源代码中分离出来,建立知识库。
![在这里插入图片描述](https://img-blog.csdnimg.cn/b9568e1bddad486daa921ffa8e808e6e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2o5p2o5Y2h5LiN562U,size_20,color_FFFFFF,t_70,g_se,x_16)
例子
专家系统
特点
降低了修改业务逻辑的成本,缩短了开发时间,将规则外部化,可在多个应用之间共享,对规则的改变将非常迅速并且具有较低的风险。
六、客户机\服务器风格
1、二层CS架构
工作原理
只分为客户端和服务端。
![在这里插入图片描述](https://img-blog.csdnimg.cn/3dc1c9400dcd4a4193634afbf515b92e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2o5p2o5Y2h5LiN562U,size_20,color_FFFFFF,t_70,g_se,x_16)
特点
适用于轻量级事务,但当用户量上升时会使性能急剧恶化。系统维护和升级困难,不利于推广。
2、三层CS架构
工作原理
将功能分为表示层、业务层和数据层。
特点
三层结构可以在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。
应用的各层可以并行开发,可以选择各自最适合的开发平台和开发语言。
利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而非法的访问数据层,为严格的安全管理奠定了坚实的基础。
3、BS架构
工作原理
三层架构,只是将客户端换为浏览器。
特点
系统安装、修改和维护全在服务器端解决,系统维护成本低。
良好的灵活性和可扩展性:对于环境和应用条件经常变动的情况,只要对业务逻辑层实施相应的改变,就能够达到目的。
较好的安全性:客户应用程序不能直接访问数据,应用服务器不仅可控制哪些数据被改变和被访问,而且还可控制数据的改变和访问方式 。
三层模式成为真正意义上的“瘦客户端”,从而具备了很高的稳定性、延展性和执行效率。
三层模式可以将服务集中在一起管理,统一服务于户端,从而具备了良好的容错能力和负载平衡能力。
但客户端浏览器一般情况下以同步的请求/响应模式交换数据,每请求一次服务器就要刷新一次页面,受HTTP协议“基于文本的数据交换”的限制,在数据查询等响应速度上,要远远低于C/S体系结构,数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用;
七、黑板模式
应用中的多种不同数据处理逻辑相互影响和协同来完成数据分析处理,就像多位不同的专家在同一黑板上交流思想,每个专家都可以获得别的专家写下的信息,也可以自己更新黑板上的信息去影响其他专家。
适用于非确定性问题的求解,常用于图、表、视觉、图像识别、语音识别、预警等领域。
文章评论