常见的5个软件架构模式

企业规模的软件系统该如何设计呢?在开始写代码之前,我们需要选择一个合适的架构,这个架构将决定软件实施过程中的功能属性和质量属性。因此,了解软件设计中的不同架构模式对我们的软件设计会有较大的帮助。

  什么是架构模式?根据维基百科:架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案。架构模式类似于软件设计模式,但范围更广。本文将简要解释10种常见架构模式及其用法、优缺点。

  分层模式(Layered pattern)

  客户端-服务器模式(Client-server pattern)

  主从模式(Master-slave pattern)

  管道-过滤器模式(Pipe-filter pattern)

  代理模式(Broker pattern)

  点对点模式(Peer-to-peer pattern)

  事件-总线模式(Event-bus pattern)

  模型-视图-控制器模式(Model-view-controller pattern)

  黑板模式(Blackboard pattern)

  解释器模式(Interpreter pattern)

  1. 分层模式

  此模式用于可分解为子任务的结构化程序,每个子任务都位于特定的抽象层级,每一层都为上一层提供服务。一般信息系统最常见的4个层次如下。

  表示层(也称为UI层)

  应用层(也称为服务层)

  业务逻辑层(也称为领域层)

  数据访问层(也称为持久层)

  应用场景:

  一般的桌面应用程序

  电子商务web应用程序

  一般的移动App

  

  分层模式

  2. 客户端-服务器模式

  这种模式由两部分组成:服务器和多个客户端。服务器将向多个客户端提供服务。客户端从服务器请求服务,服务器向这些客户端提供相关服务。此外,服务器继续侦听客户端请求。

  应用场景:

  电子邮件、文档共享和银行等在线应用程序。

  基于IPC的应用程序

  

  客户端-服务器模式

  3.主从模式

  这种模式由两部分组成:主节点和从节点。主节点将工作分配给相同的从节点,并根据从节点返回的结果计算最终结果。

  应用场景:

  在数据库复制中,主数据库被视为权威源数据库,从数据库与之同步。

  通过总线连接到计算机系统(主驱动器和从驱动器)的外围设备。

  进程内的多线程应用。

  

  主-从模式

  4.管道-过滤器模式

  这种模式可用于构造生成和处理数据流的系统。每个处理步骤都包含一个过滤器组件。要处理的数据通过管道传递。这些管道可用于缓冲或同步目的。

  应用场景:

  编译器。连续过滤器执行词法分析、词法解析、语义分析和代码生成。

  生物信息学的工作流

  工具链式的应用程序

  

  管道-过滤器模式

  5. 代理模式

  这种模式通过解耦组件来构造分布式系统。这些组件可以通过远程服务调用彼此交互。代理组件负责协调组件之间的通信。服务器向代理发布功能(服务和特征)。客户端向代理请求服务,然后代理将客户端重定向到合适的服务。需要注意broker,agent,proxy以及delegate的区别。

  应用场景: 无锡妇科医院哪家好 http://wapyyk.39.net/wx/zonghe/fc96e.html

  消息代理软件,例如:Apache ActiveMQ、Apache Kafka、RabbitMQ和JBoss消息传递。

  网络传输中的代理软件。

  

  代理模式

原文地址:https://www.cnblogs.com/djw12333/p/10886421.html

时间: 2024-08-30 00:57:22

常见的5个软件架构模式的相关文章

软件架构模式—分层模式

架构模式是什么 软件架构模式,诞生于软件开发的最大难题--需求变更.由于需求变更,导致了大量项目因为超出预算的人力.时间而归于失败.软件开发成本有限的,但需求变更似乎是无限的,这成为了一个非常难解决的问题. 软件需求变更的结果,基本上就是对于软件代码的修改.而软件代码的修改却是程序员们最头疼的事情.因为一些大型系统,其代码根本就无法完全看懂,即便能了解部分细节,在着手修改的时候,也会碰到"触一发而动全身"的问题:因为有些功能的修改,需要修改整个系统的很多部分,导致了无穷的BUG.另外一

软件架构模式之分层架构

本章内容出自<软件架构模式>第一章,该书由 开发技术前线 项目组成员翻译,更多内容请访问 <软件架构模式>中文版pdf . 简介 对程序员来说很常见一种情况是在没有合理的程序架构时就开始编程,没有一个清晰的和定义好的架构的时候,大多数开发者和架构师通常会使用标准式的传统分层架构模式(也被称为多层架构)--通过将源码模块分割为几个不同的层到不同的包中.不幸的是,这种编码方式会导致一系列没有组织性的代码模块,这些模块缺乏明确的规则.职责和同其他模块之间的关联.这通常被称为架构大泥球.

架构_10 个常用的软件架构模式

你是否曾经思考过如何设计大型的企业级系统?在决定启动软件开发之前,首要的是选择恰当的架构来指引系统的功能及质量属性设计.因此在将软件架构应用于设计之前,必需要了解常用的架构模式. 什么是架构模式? Wikipedia 的解释: 在软件架构中,架构模式是对特定环境下常见问题的通用且可重用的解决方案.架构模式与软件设计模式很相似,但架构模式的层次更高,且外延更大. 这篇文章将简述常见的 10 种架构模式的概念.用法以及其优缺点. 分层模式(Layered pattern) 客户端/服务器模式(Cli

[转]6种常见的数据加载模式设计

原文链接:http://elya.cc/2014/03/31/loading/ 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的

基于微服务的软件架构模式(转载)

转载:原文链接 基于微服务的软件架构模式 [编者的话]微服务只是最近提出的概念,实际上很多巨头公司(FB.Twitter.AWS等)已经在亲身实践.微服务并不是银弹,但是我们可以参考它的 思想来解决自己遇到的问题.对于已经找准市场,业务即将或者马上就要急剧发展的创业公司,适合使用基于微服务的软件架构. 今天阅读了两篇关于微服务的文章,总结一些笔记,简单翻译了一篇文章.说明:并没有严格按照原文一字语句翻译,有部分自己的理解,还有部分是意译. 微服务(micro services)这个概念不是新概念

业务系统数据库设计常见的隔离和共享模式

多年开发和维护某些业务系统的经验,让人真正理解了什么叫“数据库设计良好,系统就成功了一半”,尤其是那些面向多商户的基础服务平台.公共服务平台.开放服务平台.或者由它们组合而成的综合服务平台.数据库设计之初,必须对业务系统DB的隔离和共享模式的优缺有充分的调研,平衡好业务系统的边界,合理设计使用必要的冗余,以适应系统后续的不断变化,否则后期开发人员将陷入无尽的烦恼和痛苦之中,这绝不是危言耸听,只有开发和维护过平台类产品的人才能深刻体会.下面就介绍三种业务系统中最常见的数据库设计的隔离和共享模式:

AGPS 常见的两种定位模式

SI 定位模式: 用户发起定位请求,辅助GPS 模块快速进行定位.时间在6秒-15秒之间. 这个方式能够有效的解决普通GPS 最快需要30秒时间获得卫星星历的搜星慢的问题,如果使用AGPS将通过中移动的服务器拿到卫星星历,时间可以缩短到6秒-15秒. 对应流程: 启动AGPS UI 管理 -> 开始获取基站信息.IMSI信息―> 启动拨号->与中移动服务器进行SUPL 协议通讯获取卫星星历――> 配置GPS模块进行定位->关闭通讯网络-> 导航软件快速获取精度.纬度.

6种常见的数据加载模式设计

设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的内容有明确的预期呢? 今天这篇文章,会介绍6种常见的加载模式设计,和3种减少等待

在linux中实现多网卡的绑定 介绍常见的7种Bond模式

网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡.在应用部署中是一种常用的技术,我们公司基本所有的项目相关服务器都做了bond,这里总结整理,以便待查. bond模式: Mode=0(balance-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合. Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发