热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

软件设计要素初探:架构模式

在“软件设计要素初探”一文,尝试从软件设计的整体角度,综合讨论了软件设计的各种要素。本文探讨系统组件交互的架构模式。概述架构模式是系统组件及组件交互的模式,决定了处理数据和领域对象的全局

在 “软件设计要素初探” 一文,尝试从软件设计的整体角度,综合讨论了软件设计的各种要素。本文探讨系统组件交互的架构模式。

概述

架构模式是系统组件及组件交互的模式,决定了处理数据和领域对象的全局控制结构。组件化是使用架构模式的前提。 可参阅 《面向模式的软件架构》了解更多架构模式。

模式清单

分层模式

  • 分层模式: 将应用划分为多个层次,定义各层的接口、任务抽象及消息格式,以及各层之间的通信与交互。业务系统通常会划分为业务逻辑层、服务层、领域层、数据层。网络栈协议是分层模式的典型应用。应用分层模式时,为确保系统可维护性,通常第j+1层只依赖于第j层的接口和服务;在性能场合下,可能会有跨层依赖的情况;应对特殊场景的设计中,会有“第j层的服务依赖于第j+1层的服务”的反向依赖关系。可参阅《面向模式的软件架构:模式系统》第2.2.1节。

RESTFUL模式

  • RESTFul模式:适合资源构建与共享的可伸缩的架构模式,适合于构建API接口。全局规范一致的资源逻辑命名、寻址、返回码定义,关注资源与数据而非行为或服务;无状态的声明式的请求;对客户端隐藏实现细节;通用的数据返回格式(JSON),跨语言与平台;使用名词而非动词作为路径名。 可参阅《架构之美》第5章:“Web:面向资源的架构”。

MVC模式

  • MVC模式:“模型-视图-控制”, 经典的WebUI架构模式,控制处理请求从而更新模型和返回视图,模型更新驱动视图更新,视图请求控制处理。经典的JavaMVC框架有 Struts2, SpringMVC, 前端MVC框架有Extjs4.

插件模式

  • 插件模式:设计了可扩展的插件接口及插件交互机制,开发者只要遵循规范编写和调试具体的插件并融入到系统,即可为系统增加新功能和新特性。使用插件模式的系统有 Eclipse, Emacs, Firefox, Chrome 等。

订阅-消费模式

  • 订阅-消费模式: 大型互联网应用中几乎都存在订阅和消费业务表更新或业务消息推送的子系统。订阅-消费模式需要高稳定可用的消息中间件,并仔细评估消息延迟对用户活动造成的影响。新品消息推送、商品消费订阅、发货提醒等,我们正处于一个“消息/通知的订阅-推送-被消费”的移动互联网时代里。

Pipeline模式

  • 管道-过滤器-处理器链:一个请求沿着管道连接的处理链,依次由链上的过滤器、拦截器、处理器进行处理并返回。JavaWeb应用的Servlet架构模式是“过滤器-处理器链”的典型应用;UnixShell 则是“管道-过滤器-重定向”结构的典型应用。

事件驱动模式

  • 事件驱动模式: 在系统内定义一系列的组件、事件及监听器,组件发生变化时触发事件,通知相应的监听器处理事件更新组件,进而触发新的事件,如此循环直至手动终止系统或系统崩溃。适用于GUI应用开发。

Actor模式

  • Actor模型: 基于事件驱动的分布式的、异步并发的、可伸缩的、有故障恢复能力的大型消息处理架构。一个简单例子可参见:“混合使用ForkJoin+Actor+Future实现一千万个不重复整数的排序(Scala示例)”

规则-工作流模式

  • 规则-工作流模式: 将系统分析成一系列的工作流节点以及规则的解析匹配,使用规则引擎来控制和运行,通过添加规则及规则流,实现可扩展性和可配置性。可参阅使用规则引擎计算工资的简单例子:“Java Drools5.1 规则流基础【示例】”,“基于规则和规则引擎的系统” 。


推荐阅读
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 本文将介绍一种扩展的ASP.NET MVC三层架构框架,并通过使用StructureMap实现依赖注入,以降低代码间的耦合度。该方法不仅能够提高代码的可维护性和可测试性,还能增强系统的灵活性和扩展性。通过具体实践案例,详细阐述了如何在实际开发中有效应用这一技术。 ... [详细]
  • PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化
    PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化 ... [详细]
  • REST API 时代落幕,GraphQL 持续引领未来
    尽管REST API已广泛使用多年,但在深入了解GraphQL及其解决的核心问题后,我深感其将引领未来的API设计趋势。GraphQL不仅提高了数据查询的效率,还增强了灵活性和性能,有望成为API开发的新标准。 ... [详细]
  • php从哪里得到框架(2023年最新分享)
    导读:本篇文章编程笔记来给大家介绍有关php从哪里得到框架的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、如何用PHP制 ... [详细]
  • 导读:今天编程笔记来给各位分享关于PHP的前端用什么工具的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • Python作为当今IT领域中最受欢迎且高效的语言之一,其框架能够显著加速Web应用程序的开发过程。本文推荐并对比了十大顶级Python Web开发框架,其中CubicWeb以其卓越的代码重用性和模块化设计脱颖而出,为开发者提供了强大的支持。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 深入理解Java事务编程:可串行化隔离级别的快照隔离机制解析
    深入理解Java事务编程:可串行化隔离级别的快照隔离机制解析 ... [详细]
  • 深入解析 Spring MVC 的核心原理与应用实践
    本文将详细探讨Spring MVC的核心原理及其实际应用,首先从配置web.xml文件入手,解析其在初始化过程中的关键作用,接着深入分析请求处理流程,包括控制器、视图解析器等组件的工作机制,并结合具体案例,展示如何高效利用Spring MVC进行开发,为读者提供全面的技术指导。 ... [详细]
  • Maven入门指南深入解析了Maven的核心概念与基本功能。本文详细介绍了Maven在项目构建、文档生成、报告生成、依赖管理、源代码控制(SCM)、项目发布与分发以及邮件列表管理等方面的应用。Maven通过采用标准目录结构和“约定优于配置”的原则,简化了项目的配置与管理,提高了开发效率。 ... [详细]
  • 【转】JS键盘按钮keyCode及示例大全(JS前端)
    文章目录以功能区分布以keycode编号顺序分布简记表使用示例:组合键获取用户按下的键javascript判断是否按回车键屏蔽按键组合健获取键和相应值的js回目录 ... [详细]
  • IIS启用Gzip的方法与优缺点分析是千自学中一篇关于Discuz论坛的文章简介:现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的C ... [详细]
author-avatar
曾吾翰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有