美文网首页C语言我爱编程程序员
十秒入门C语言之架构篇

十秒入门C语言之架构篇

作者: 从梦流风 | 来源:发表于2018-05-23 09:45 被阅读33次

在决定启动软件开发之前,首要的是选择恰当的架构来指引系统的功能及质量属性设计。因此在将软件架构应用于设计之前,必需要了解常用的架构模式。
什么是架构模式?

在软件架构中,架构模式是对特定环境下常见问题的通用且可重用的解决方案。架构模式与软件设计模式很相似,但架构模式的层次更高,且外延更大。
现在,我将简述常见的 10 种架构模式的概念、用法以及其优缺点。

分层模式(Layered pattern)
客户端/服务器模式(Client-server pattern)
主/从模式(Master-slave pattern)
管道/过滤器模式(Pipe-filter pattern)
代理模式(Broker pattern)
对等模式(Peer-to-peer pattern)
事件总线模式(Event-bus pattern)
模型/视图/控制器(MVC)模式(Model-view-controller pattern)
黑板模式(Blackboard pattern)
解析器模式(Interpreter pattern)

  1. 分层模式(Layered pattern)

分层模式用于对结构化设计的软件进行层次拆解,每个层次为独立的抽象,为其上层抽象提供服务。


分层模式.jpg

系统通常被拆分为以下四个层次:

表示层(也称为 UI 层)
应用层(也称为服务层)
业务逻辑层(也称为领域层)
数据访问层(也称为持久化层)
使用场景

通用桌面应用程序
电子商务 Web 应用

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

客户端/服务器模式由两个部分构成:一个服务器与多个客户端。服务器组件同时为多个客户端组件提供服务。客户端向服务器发启服务请求,服务器将相应服务信息回应给客户端。此外,服务器持续监听来自客户端的请求。


客户端模式.jpg

使用场景

电子邮件、文件共享及银行业务等在线应用

  1. 主/从模式(Master-slave pattern)

主/从模式由两个部分构成:主设备与从设备。主服务组件将作业分发给多个从设备组件,并根据这些从设备反馈的结果,计算生成最终结果。


主从模式.jpg

使用场景

数据库复制,主数据库被认定为权威数据源,各从数据库与主数据保持同步
在计算机系统中通过总线互连的各设备(包括主设备与从设备)

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

管道/过滤器模式用于构造用于生成及处理数据流的系统。每个处理过程都封装在过滤器(filter)组件之中,要处理的数据通过 管道(pips) 进行投递。管道同时用于作为 过滤器(filter) 间的缓冲及同步。


管道模式.jpg

使用场景

编译器,一系列的过滤器用于词法分析、语法分析、语义分析及代码生成
生物信息学的工作流

  1. 代理模式(Broker pattern)

代理模式用于在结构化系统中对组件解耦。系统内各组件间采用远过程调用(remote service invocations)的方式交互。代理(Broker)组件充当组件间通讯的协调角色。


代理模式.jpg

提供服务的组件将其能力(服务以及特性)发布给代理,客户端均向代理请求服务,由代理将请求重定向到先前已发布过对应服务的组件进行处理。

使用场景

消息中间件软件:Apache ActiveMQ,Apache Kafka,RabbitMQ 与 JBoss 等等

  1. 对等模式(Peer-to-peer pattern)

对等模式中的组件称之为对等体(peer),对等体既作为向其他对等体请求服务的客户端,同时也做为响应其他对等体请求的服务端。对等体可以在运行过程中动态地改变其角色,即,既可以单独做为客户端或服务端运行,又可同时作为客户端与服务端运行。


对等模式.jpg

使用场景

网络文件共享:Gnutella 与 G2)
流媒体协议:P2PTV 与 PDTP.
流媒体应用: Spotify.

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

事件总线模式应用于事件处理,主要由四个组件构成:事件源(event source),事件侦听者(event listener),通道(Channel)以及总线(event bus)。 事件源将消息发布到总线的特定通道,侦听者订阅相应的通道,事件源所发布的消息经通道通告给订阅通道的侦听者。


事件总线模式.jpg

使用场景

Android 开发
通告(Notification)服务

  1. 模型/视图/控制器(MVC)模式(Model-view-controller pattern)

模型/视图/控制器模式(简称 MVC 模式)将交互式应用程序拆分为三个部分:

模型(model) – 包含核心功能及数据
视图(view) – 呈现信息给用户(通过有多个视图)
控制器(controller) – 处理用户的输入操作
MVC 模式通过将内部信息表示、用户信息呈现以及用户操作接收分开的方式解耦组件,实现高效代码重用。


控制器模式.jpg

使用场景

主流开发语言所构建的互联网网页应用架构
Django 与 Rails 等网页应用开发框架

  1. 黑板模式(Blackboard pattern)

黑板模式适用于 无预知确定解决策略 的问题,主要由三个组件构成:

黑板(blackboard) – 用于存储解空间对象的结构化全局内存
知识(knowledge)源 – 能自表意的专用模块
控制(control)组件 – 选择、配置与执行的模块
所有的组件均能访问黑板,组件可将新生成的数据对象写入黑板,也可以通过模式匹配从黑板中获取知识源所生成的特定数据。


黑板模式.jpg

使用场景

语音识别
车辆识别和追踪
蛋白质的结构鉴定
声纳信号解析

  1. 解析器模式(Interpreter pattern)

解析器模式用于设计语言的解析程序,主要用于指定评估程序代码行,即解析出特定语言的语句与表达式,其核心思想是为语言的每个符号定义相应的类。


解析器模式.jpg

使用场景

SQL 等数据库查询语言
通讯协议描述语言


程序媛.jpg

最后,还是推荐一个内部资料和学习的地方:企鹅群:七一零,五二零,三八一,邀请码:柳猫,审核秒过,我们一起来玩C语言

相关文章

  • 十秒入门C语言之架构篇

    在决定启动软件开发之前,首要的是选择恰当的架构来指引系统的功能及质量属性设计。因此在将软件架构应用于设计之前,必需...

  • 十秒入门C语言之进阶篇2

    好在对语言的使用上,之前写过很多类似第一种的代码,但是从来没有考虑到continue过,而continue其实是比...

  • 十秒入门C语言之进阶篇1

    讲真话,一个没有接触过编程的人,通过视频C语言,在学习的过程中往往只是记住了这个怎么用,代码是怎么运行的根本就没有...

  • 十秒入门C语言之The C Programming Langua

    1.1 不断学习,不得其法 相信大多数小伙伴学习C语言都是从谭浩强老师的《C语言》,不用多说都知道是一段不为...

  • 十秒钟入门C语言之应用篇

    对于没有编程基础的人,看了以后也可以知道一般在这种语言环境下编写出来的代码是个什么样的,至少之后继续的学习中至少不...

  • 十秒入门C语言之算法进阶1

    实践是真理最好的老师,在手写代码入门C语言之后,是不是有一种算法不过尔尔的错觉?没错,就是错觉,算法是语言的灵魂,...

  • 移动架构<第五篇>:AOP架构设计

    Android之AOP架构<第一篇>:入门Android之AOP架构<第二篇>:按钮防抖Android之AOP架构...

  • C语言之入门讲解

    1 C语言基础讲解 1.1 C语言历史 C语言是在70年代初问世的。1978年由美国电话电报公司(AT&T)贝尔实...

  • 十秒入门C语言 2

    现在,我想讲一讲学习 C语言的一些准备。这一篇说一些经典书籍。也就是提供一个看什么书的解决方案。文章中有太多自己的...

  • 十秒钟入门C语言

    十秒钟入门 今天我们来了解一下c,那么问题来了:什么是C呢? 我不会告诉你一段文字,我只会说下面就是C #incl...

网友评论

    本文标题:十秒入门C语言之架构篇

    本文链接:https://www.haomeiwen.com/subject/lxgljftx.html