这篇文章是为了:正在开发软件产品或最小可行产品的初创公司创始人,需要了解常用的软件架构和设计模式。对于希望熟悉常用软件设计模式的开发人员也很有用。
编剧:亚历克斯·森森,阿什利·伯顿,泰勒·布朗热
现在你的创业公司有了一个软件产品的想法,并聘请了两位内部开发团队或外包开始考虑所提议软件的结构时需要做的工作。一般功能是什么,所有组件如何协同工作?值得庆幸的是,有一些可用的软件体系结构模式可以为您完成所有这些工作。这些架构模式基本上是一种结构化的组织方案,用于解决初创公司可以使用的常见问题,这样他们就不用重新发明轮子了。这些模式也被称为软件设计模式。
在本文中,我们将概述什么是架构模式,以及创业公司可用的一些顶级模式。此外,我们将解释企业家在为他们的软件产品选择架构模式时应该关注的标准。
本文适用于计划开发软件产品的初创公司创始人。本文将帮助创始人了解架构模式的有用性,以及如何为所提议的软件确定正确的模式。
一旦你的初创公司有了软件产品的想法和开发团队,你就需要开始考虑产品如何运行的结构。使用此资源可以了解可用的不同体系结构模式,以及在选择过程中应该检查的评估标准。最终的目标是,通过学习软件架构模式,早期的初创公司将能够在开发过程中正确地利用它们。
课程内容:
- 体系结构模式-简介
- 熟悉软件架构模式的重要性
- 如何选择架构模式
- 评估可用的不同体系结构模式,以确定哪种最适合您的软件开发项目
- 创业公司可用的不同架构模式概述
软件体系结构和设计模式-介绍
主要结论:软件体系结构模式是用于解决软件开发行业中常见的设计问题的结构布局。这些模式被用来防止创业公司每次开始一个新项目时都不得不重新发明轮子。这些模式不应该用于设计整个项目,而应该使用不同的模式来创建整体设计的各个组件。
由于当今软件日益复杂,相关的开发、维护和增强任务变得越来越繁琐和耗时。因此,已经创建了软件体系结构模式,以减轻软件架构师、开发人员和操作人员的工作量。
这些体系结构模式是软件设计领域中常见问题的可重用解决方案。软件体系结构模式是结构组织的描述或模板,或用于解决问题的方案,可以在许多不同的情况下使用。你可以把它们看作是正式的最佳实践,当你在设计软件产品时,你的初创公司可以使用它们来解决常见的问题。
本文的重点是不同领域中反复出现的软件架构问题是如何导致通用架构模式的创建的。这是因为可以重用这些模式来解决未来不同领域中的类似问题。软件架构模式如何被用来解决常见问题的一些例子包括:
- 长而复杂的用户请求可以被分成更小的部分,并分布在许多服务器上,以比只有一台服务器工作更快地完成工作。
- 复杂的测试协议可以根据软件的结构进行简化,允许开发人员单独测试软件的质子,而不必一次性测试整个软件。
总的来说,体系结构模式提供了知识和一组策略,用于根据以前解决的类似问题创建软件产品。然而,主要的挑战是找到一种方法使架构模式适合你的初创公司的特定软件系统。
使用软件体系结构模式的优点和缺点
主要结论:体系结构模式为软件开发行业中常见的结构设计问题提供了一种经过验证的可重用解决方案,例如布局以及不同层之间应该如何交互。但是,如果选择了不合适的模式,它们会使软件开发过程过于复杂。
在开发过程中使用软件体系结构模式有许多优点和缺点。初创公司使用架构模式有不同的原因。使用体系结构模式的一些优点如下:
- 体系结构定义了软件的模型,它将如何运行,并定义了您在实现时可能遇到的问题。因此,这些模式使得制定决策和管理变更更容易,从而更好地估计项目的时间和成本。
- 为已知问题提供一个经过验证的可重用解决方案,并建立在经过尝试和测试的设计经验之上
- 如果使用软件架构,可以极大地节省成本并降低风险
- 由于模式导致高度可测试和可跟踪的开发过程,因此可以实现更高的质量标准
尽管在软件开发过程中使用体系结构模式是有益的,但也有一些缺点。使用架构模式的一些缺点包括:
- 选择不当的软件设计模式会增加开发项目的总成本和持续时间,因为所提议的软件产品必须适应所选择的模式
- 创新和前沿的解决方案通常没有合适的体系结构模式可用
- 是否会因为选择了不恰当的架构模式而导致软件产品过于复杂
总的来说,创业公司应该回顾所有的优点和缺点,或者在使用一个软件架构模式之前。
如何选择软件架构或设计模式
主要结论:在开发过程中,选择架构模式是一项重要的任务。创业公司需要确保他们选择了一个合适的模式,因为中途改变模式是一个困难和昂贵的挑战。
一次开发团队而且软件开发方法学选择之后,你的创业公司就可以开始考虑在产品开发过程中使用的架构。选择软件架构的行为将是你的初创公司在开发过程中要克服的第一个障碍。
如果一家初创公司选择的架构使设计过于严格和死板,那么它将与敏捷开发方法冲突,并且需要预先进行过多的大设计。或者,如果架构过于松散或没有完全实现,那么设计的开放边界将使开发人员感到困惑。
选择正确的软件架构对开发人员的成功至关重要。软件设计模式是沟通的基础,是整个软件产品计划的基础,对于涉众的理解至关重要。
没有一种单一的软件架构可以被认为对所有软件开发场景都是有效的。创业公司需要根据给定的环境选择合适的架构模式。
软件体系结构模式选择的标准
主要结论:初创公司需要审查他们公司的业务需求、开发团队的能力,以及所提议的软件产品所需的功能。需要检查所有这些组件,以确保选择了正确的体系结构模式。
通常,选择架构模式的选择标准是基于公司或开发团队的经验和研究。一旦一家初创公司知道了他们在开发过程中将要创建的一些功能和工作流,他们就可以开始考虑不同的架构模式。
这些模式将解决诸如最小化业务风险、保持高可用性等问题。因此,在特定的情况下选择正确的选项是很重要的。下面详细介绍了在尝试为建议的软件产品选择合适的体系结构模式时应该考虑的选择标准。
所需的产品功能
主要结论:每个体系结构模式都由一个基本结构组成,该结构用于完成一个公共软件任务。创业公司需要确保他们选择的模式能够解决他们所需要的问题,而不仅仅是一个可能最容易使用的模式。
审查所需的产品特性是体系结构模式选择的最重要方面。创业公司需要确保所选择的架构模式适合软件产品的预期目的和功能。
每个软件体系结构模式都有一个基于其结构的常用应用程序列表。初创公司应该回顾并查看哪些模式最适合他们的产品功能,以确保选择了合适的架构模式。
你的公司组织
主要结论:在开始评估不同的软件设计模式时,初创公司应该审查他们的组织。在选择模式之前,需要回顾开发团队的经验,以及整体业务需求。
在选择架构模式之前,您的初创公司需要确保它完全适合您的组织。所提出的模式是否符合初创公司的业务需求?您所选择的开发团队是否具备交付和维护体系结构模式所需的专业知识?
由新手开发人员组成的开发团队应该坚持使用更可靠的体系结构模式。这是因为有一个丰富的社区可以在产品创建过程中提供帮助,还有多个使用该模式创建的产品的历史示例可供参考。初创公司应该专注于分层或客户端-服务器架构模式,因为它们是更简单的产品。
总的来说,企业家需要能够在选择过程中评估他们的初创公司的业务和人员。这确保了所选择的架构对初创公司和执行工作的团队都是合适的。
创业公司应该额外检查项目的预算和预期的截止日期,以确保所提议的架构模式不会使软件产品不必要地复杂化。创业公司应该选择最简单合适的架构模式,以确保项目按时完成。
总的来说,大多数试图解决的软件架构问题都是以前解决的问题的变体。初创公司通常可以找到类似的架构模式,或者至少可以用于创建整体架构模式的架构组件。创业公司应该从过去的例子中寻找灵感和方法。
总之,选择合适的软件架构模式是很重要的。这是因为选择必须让你的创业公司能够满足业务需求才能成功。通常,为了使体系结构模式获得成功,它必须具有较低的容错能力、可伸缩的能力以及产生必要性能的可靠性。
选择软件体系结构或设计模式可能会使项目复杂化
主要结论:选择架构模式可能会使软件开发项目复杂化。这是因为模式会增加创建产品所需的工作量。这对初创公司来说尤其有害,因为他们本可以使用更简单的解决方案,减少代码。
选择架构模式将有助于减轻软件开发过程中遇到的一些挑战。然而,在开发过程开始时选择架构模式可能不是所有初创公司的正确选择。
当涉及到结构组件设计时,体系结构模式是一个很好的工具。然而,使用它们作为起点,往往会导致过度设计的过度驱动开发系统。创业公司的决策是基于当时开发社区中最流行的东西。
在你开始选择架构模式之前,确保你考虑了软件产品的顶级组件的整体视图。这一步很重要,因为体系结构模式不应该被视为顶级方法,因为它们在创建一个特定组件的设计时主要是有价值的。
总的来说,创业公司在确定一个模式之前应该彻底检查所有可能的软件设计模式和他们提议的软件产品。这是因为由于引入的结构,选择体系结构模式有时会使开发过程复杂化。
概述不同的软件设计模式和架构
主要结论:在软件开发期间,可以使用各种各样的体系结构模式。每一个都由一组规则、约束和特征组成,这些规则、约束和特征是它们试图解决的特定问题所独有的。
既然您的初创公司知道如何选择软件架构模式,现在是时候了解可用的不同选项了。每一种方法都有它的优点和缺点。选择架构模式的挑战在于,单一的设计方法不可能适合软件系统的每个部分。下面是一些常见的模式,总结了优点和缺点。您可以探索其他广泛的软件设计模式在这里.
每个体系结构模式都包含一组规则、约束和如何将系统构建为一组元素和连接器的模式。这些模式涉及一系列基于软件开发中不同方面的决策,并且每个决策都可能对软件的整体成功产生重大影响。
因此,架构或设计模式被定制为适合特定的结构,从而达到解决常见的已知软件架构问题的基本思想。本文的以下部分详细介绍了可用的顶级软件体系结构模式。
分层软件设计模式
主要结论:分层软件架构模式是最广为人知的模式之一。它使用层来分离代码,并在它们之间创建单向关系。这种模式最适合一般的桌面应用程序和电子商务web应用程序。
最著名的软件架构模式之一是分层模式。这是因为这种体系结构模式通常是围绕数据库构建的,业务中的许多应用程序自然适合在表中存储信息。许多开发人员在使用这种模式时并不知道它的名字。
这种体系结构模式的核心概念是将代码分成不同的层。每一层都有一定的职责,并为更高一层提供服务。没有预定义的层数,但以下是开发人员最常看到的层数:
- 表示层[用户界面(UI)层]——包含应用程序的图形设计,以及处理用户交互的任何代码。在这个层中只能找到特定于UI的逻辑。
- 应用层(服务层)——提供抽象,一种隐藏子系统工作区域的方法,这样表示层就不知道关于业务层的所有信息。
- 业务逻辑层(领域层)——针对您的初创公司试图解决的业务问题的模型和逻辑所在的层。
- 数据访问层(持久化层)——包含访问和操作软件产品背后的数据库的代码,以及底层数据库技术
层之间有单向的允许使用关系,其中层之间只能在一个方向上进行交互(图1)。单向关系加上孤立层的创建确保了重构(重构现有代码)很容易,因为在一个层内所做的任何更改都不会影响到另一个层。
此体系结构模式的变化取决于所开发应用程序的复杂性。有些项目可能会省略应用程序层,而其他项目可能会添加缓存层。甚至还可以将两个图层合并为一个。一个例子就是一个名为ActiveRecord的公司,它的体系结构模式结合了业务层和持久层。
优势
- 层使标准化更容易,因为开发人员可以清楚地定义不同的层
- 每一层都可以只关注它的角色。这使得它具有可维护性、可测试性、易于分配单独的角色以及易于分别更新层
- 可以在一个层内进行更改而不影响其他层
- 大多数开发人员都熟悉这种体系结构模式
- 提供一种编写组织良好且可测试的应用程序的简单方法
- 一旦定义了任务和层,就可以很容易地将层分离并分配给不同的程序员
缺点
- 并非适用于所有软件解决方案
- 在某些情况下可能需要跳过某些层,从而产生不必要的代码并增加层交互的复杂性
- 往往会导致整个应用程序难以拆分
- 开发人员经常发现自己编写了大量代码来传递不同的层,而没有为层添加任何价值。因此,对于某些软件应用程序,分层模式可能会过度
- 设计和建造所有层的成本会很高吗
- 系统的复杂性可能会增加,特别是当该层没有以适当的方式进行设计时
- 如果源代码是无组织的,并且模块没有明确的角色或关系,那么它就会变得混乱
- 层隔离会使不理解每个模块就很难理解体系结构
基于上述优点和缺点,在某些特殊情况下,使用分层架构模式可以让你的初创公司更快、更便宜地开发软件,并且需要解决的主要错误和问题更少。一些应该使用分层模式的合适情况的例子包括:
- 拥有经验不足的开发人员的团队,他们还不了解其他架构
- 需要严格的可维护性和测试标准的应用程序(例如,生命科学行业中的软件),因为可以在审查层之前通过模拟层来测试各个层,以测试其功能
- 需要快速构建的新应用程序
许多最大的软件框架(如Java EE、Drupal和Express)都是在这种结构中构建的,因此使用它们构建的许多应用程序自然都是分层的体系结构。这种架构模式通常用于创建许多不同的软件产品,包括:
- 一般桌面应用
- 电子贸易网页应用程式
- 不仅仅执行CRUD(创建、读取、更新和删除)操作的标准业务线应用程序
- 需要反映传统互联网技术部门和流程的企业或业务应用程序
总之,分层软件设计模式允许初创公司在逻辑上将源代码分离为单独的层。由于这种模式被普遍使用,初创公司将能够很容易地在他们的研究中找到它的实际例子。
黑板软件体系结构模式
主要结论:黑板模式通常在创建创新软件产品时使用,因为其他架构模式都不适合。这种模式允许初创公司很容易地重用黑板上的算法,但是,由于创建的应用程序不能处理并行处理,系统内部的通信可能很困难。
黑板架构模式的出现是人工智能(AI)日益普及的结果。这是因为这种模式最适用于目前没有确定解决方案的问题。随着选择领域的扩大和成熟,以后可以选择不同的体系结构模式。
黑板架构模式由三个主要组件组成,它们一起工作形成了这个模式(图2)。架构的组件是:
- 黑板——产品的结构性全局内存,其中包含解决方案空间中的对象
- 具有自己表示的知识源专用模块。这些模块可以是AI或机器学习(ML)上下文中收集信息并更新黑板的算法
- 控制组件——选择、配置和执行模块。它从黑板上读取,并根据需要更新应用程序
所有组件都可以访问黑板。各个组件可以产生新的数据对象,并添加到黑板上。同样,组件可以在黑板上查找特定类型的数据,并可以通过与现有知识源的模式匹配来查找这些数据。
优势
- 易于添加新应用程序
- 扩展数据空间的结构很容易
- 是否可以重用添加到黑板上的算法等知识资源亚搏体育客户端app下载
缺点
- 修改数据空间的结构非常困难,因为所有应用程序都会受到影响
- 可能需要同步和访问控制
- 在这个系统中,所有的通信都是通过黑板进行的,因此产生的应用程序不能处理并行处理
黑板架构模式最适合于没有已知历史策略的软件产品,因为这个领域是如此的新。这些用法包括:
- 语音识别
- 车辆识别与跟踪
- 声纳信号解释
总之,黑板架构模式最适合那些使用尖端技术的初创公司,而其他架构模式都不适合。一旦该领域成熟,初创公司需要意识到他们可能需要改变架构模式,这可能是一项代价高昂的努力。
客户-服务器软件设计模式
主要结论:客户机-服务器模式适用于涉及多个用户连接到分布式系统中的单个或多个服务器的软件产品。这种模式最适合文件共享产品和在线游戏平台。
此体系结构模式将系统隔离为两个主要应用程序,服务器和客户机(图3)。服务器组件根据客户机请求向多个客户机组件提供服务,同时侦听其他客户机请求。亚搏充值后支付宝能申诉吗在许多情况下,服务器是一个数据库,其中的应用程序逻辑表示为存储过程。
这种体系结构模式有助于设计涉及客户端系统、服务器系统和连接网络的分布式系统。在有几个分布式客户端希望访问同一组资源和服务的情况下,这也是一种合适的体系结构模式。亚搏体育客户端app下载亚搏充值后支付宝能申诉吗不同于让每个客户端重复实现相同的逻辑,客户端通过向一个中央服务器或多个分布式服务器发送公共服务请求来进行交互。亚搏充值后支付宝能申诉吗
优势
- 对于想要建模一组客户可以请求的服务的初创公司来说,这很好亚搏充值后支付宝能申诉吗
- 拥有一组共享资源和服务可以更容易地在系统中管理亚搏体育客户端app下载、修亚搏充值后支付宝能申诉吗改和重用软件模块,因为它们存储在一个公共位置
缺点
- 由于许多客户端有不同的方式来查看共享资源和服务,因此增加了开销亚搏体育客户端app下载亚搏充值后支付宝能申诉吗
- 共享服务器通常是一个性能瓶颈,因为它可以同时为多个客户端提供服务,同样,它也可以是一个单点故障
- 在客户端或服务器组件中定位系统功能的决策成本很高,如果系统已经构建好了,则很难更改
这种体系结构模式通常用于创建许多不同类型的软件产品。使用这种模式的公司的一个例子是暴雪的战网服务,它托管魔兽世界、守望先锋等在线游戏。一些通常由客户端-服务器架构模式制作的软件产品示例包括:
- 电子邮件服务提供商
- 文件共享服务亚搏充值后支付宝能申诉吗
- 网上银行
- 多人在线游戏
总之,客户机-服务器软件设计模式允许开发人员创建以单个服务器为中心的软件产品,同时向多个用户提供相同的资源。这是有益的,因为共享的资源使以后需要时更容易管理和修改。亚搏体育客户端app下载
主从软件体系结构模式
关键外卖:主从模式涉及到一个主组件在编译结果之前将所有所需的工作分配给各个从组件。这种体系结构模式最适合于多任务应用程序和数据库的创建。
主从体系结构模式最适合于软件产品将执行易于划分的任务的情况。此模式由主程序和从程序两部分组成(图4)。一些编程语言和开发工具将此模式称为主-副本(或辅助)模式,或控制器-工作程序模式。
主组件以分治方法将所需的工作分配给各个从组件。工作完成后,管理员将结果汇编在一起,并将其呈现给用户。主从体系结构模式节省了时间,因为许多从服务器被用于并行计算。这种体系结构模式通常用于数据库复制和将外围设备连接到总线。
执行工作的从服务器不应该有任何影响主服务器如何分配工作的依赖关系。系统中的任何依赖关系都会使解决方案变得不灵活,并且很难在主服务器和从服务器之间进行明确的分离。
优势
- 准确性得到了提高,因为服务的执行被委托给不同的从服务器,每个从服务器都有不同的实现
- 不同的slave可以以不同的速率执行任务,因此在收集所需的信息时不会受到阻碍
缺点
- 从服务器是隔离的,这意味着它们之间没有共享状态,这会增加开销
- 在实时系统中,主从通信中的延迟可能是一个问题
- 该模式只能应用于可分解的问题,即问题被分解成许多不同的单元,在重新组合之前分别加以解决
主从体系结构模式通常用于创建软件产品以同时执行多个独立的作业,或者需要解决计算成本高的问题并可以将其分解为更小的组件。需要主从体系结构模式的一个例子是,当用户希望从数据库中收集多个数据时,主服务器将为每个从服务器分配一个特定的位置以查看所需的信息。另一个例子是SETI研究所创建了最大的分布式计算机系统来处理原始数据,并将其提供给主服务器,主服务器将所有处理过的数据集成到一个单一的数据库中。这种架构模式通常用于创建以下软件产品:
- 多任务应用程序,如操作系统
- 数据库
总之,当建议的软件产品将执行可以轻松划分的任务时,主从软件体系结构模式是有用的。此模式主要用于创建数据库和多任务软件应用程序。
管道过滤器软件设计模式
主要结论:管道过滤器模式使用过滤器转换提供的数据,然后使用管道(将数据从一个位置传递到另一个位置的路径)将数据传递给其他组件。这种模式最适合用于构造具有产品和处理数据流的系统。
管道过滤器体系结构模式是一种简单但功能强大的体系结构。它由任意数量的组件(过滤器)组成,这些组件转换或过滤所提供的数据,然后使用连接(管道)将数据传递给其他组件(图5)。所有过滤器同时工作以处理数据。
此体系结构模式由四个主要组件组成,它们一起工作以处理数据。每个组件都有自己的用途,具体如下:
- 过滤器——转换或过滤它从连接的管道接收的数据。一个过滤器可以连接任意数量的输入和输出管道。
- 管道——是将数据从一个过滤器传递到下一个过滤器的连接器。数据流是有方向的,并由数据缓冲区实现,以存储所有数据,直到下一个文件器可用来处理它。
- 泵——是数据源。不同数据源的例子包括数据库、平面文件或web服务,它们不断地创建新数据。亚搏充值后支付宝能申诉吗
- Sink -是数据目标。最终处理的数据可能在另一个文件、数据库或计算机屏幕上结束。
优势
- 过滤器是可重用的,这意味着可以通过重新组合一组给定的过滤器来构建不同的管道
- 易于添加过滤器,允许在需要时扩展系统
- 可以创建一个并发流程,其中输入和输出由流组成,过滤器在接收到数据时开始计算
缺点
- 模式的整体效率受到最慢的过滤过程的限制
- 从一个过滤器移动到另一个过滤器时,数据转换开销会增加
- 如果管道只允许单一数据类型,那么过滤器将需要进行一些解析,这会增加系统的复杂性并降低速度
管道过滤器模式可以用来创建一个简单的序列,一直到非常复杂的结构。因此,这种体系结构模式最适合构造以产品和流程为数据流的系统。这种架构模式通常用于构造以下类型的产品:
- 生物信息学工作流程中的数据编译器
- Unix程亚博88下载序,其中一个程序的输出可以连接到另一个程序的输入
总之,管道过滤器软件设计模式可用于创建分析数据的产品。然而,工作流需要以一种确保效率的方式设计,以便在各个过滤器上没有停顿。
代理软件体系结构模式
主要结论:代理模式用于创建需要在分布式软件上的解耦组件组之间进行通信的软件产品。存储在云和web浏览器上的分布式应用程序都可以使用这种模式创建。
代理体系结构模式可用于创建需要分布式软件结构的软件产品,该软件结构具有可以相互通信的分离组件。代理组件负责协调组件之间的通信(图6)。然后服务器将它们的功能、服务和特征发布给代理。亚搏充值后支付宝能申诉吗用户从代理请求服务,然后代理从注册中心将用户重定向到合适的服务。
优势
- 允许动态更改、添加、删除和重新定位对象
- 使对象的分布对开发人员透明
- 将所有与通信相关的代码分离到与应用程序隔离的自己的层中,允许应用程序分布式或在一台计算机上运行
缺点
- 需要标准化的服务描述
- 低容错服务器失败或代理失败
- 创建隐藏的代理层可能会隐藏有关底层如何使用应用程序的细节,从而降低软件的性能
代理体系结构模式已被用于创建许多现有软件产品。Apache Kafka是最广为人知的例子,RabbitMQ和JBoss也是使用相同的架构模式创建的。
如果您的产品需要将自主计算机与其他系统连接起来,那么代理模式是一种很好的模式,这些系统无需直接连接就可以一起工作。这种架构模式最适合创建以下类型的软件产品:
- 存储在云上的分布式应用程序
- Web浏览器
总之,当一家初创公司想要创建带有解耦组件的分布式软件产品时,可以使用代理体系结构模式。尽管它的容错性较低,但它允许在所创建的产品中进行动态更改。
点对点软件设计模式
主要结论:点对点模式是指网络上的每个人都具有相同的能力和职责。使用此模式创建的软件产品包括:文件共享、即时消息传递和语音通信软件。
点对点模式是文件共享网络中常用的一种体系结构模式。这种体系结构模式与客户机-服务器模式之间的主要区别在于,与数据管理集中的客户机-服务器模式相比,在这种模式下,每个用户都有自己的数据和应用程序。在这种体系结构中,每个节点或工作站都具有相同的功能和职责(图7)。这与客户机-服务器体系结构不同,在客户机-服务器体系结构中,某些计算机专用于为其他计算机服务。
所创建网络的各个组件称为对等体。这些对等点既可以作为用户向其他对等点请求服务,也可以作为服务器向其他对等点提供服务。亚搏充值后支付宝能申诉吗对等者并不总是平等的,因为有些人拥有更多的资源,并且可以贡献比消耗更多的资源。亚搏体育客户端app下载对等体的各个角色也可以随时间动态变化。
优势
- 支持分散计算
- 在资源和计算能力方面具有高度可伸缩性亚搏体育客户端app下载
- 节点不太可能独立地发生故障
缺点
- 安全很难保证
- 性能取决于使用的对等体数量
- 由于同行自愿合作,服务质量无法保证
在实际应用中,有许多历史上的点对点体系结构示例。一些例子包括:Skype, BitTorrent和Napster。点对点体系结构模式可用于构建许多不同的软件产品,包括:
- 文件共享
- 即时消息
- 语音通信
- 协作软件
总之,点对点软件设计模式最适合涉及不同设备之间大量通信和资源共享的软件产品。这种模式具有高度的可伸缩性,允许创建的软件产品根据需要增长。
事件总线软件体系结构模式
主要结论:事件总线模式最适合具有不需要一直工作的组件的软件产品。交易系统和在线表单都可以使用此模式创建。
事件总线模式是一种体系结构模式,它在软件产品中工作得最好,这些软件产品的组件只在有数据要处理时起作用,而在其他时间是不活动的。这个模式主要处理事件,有四个主要组件(图8):
- 事件源——将消息发布到事件总线上的特定通道
- 事件监听器——订阅特定通道,并收到在这些特定通道上发布的消息的通知
- 通道——事件总线中事件源和侦听器之间的连接
- 事件总线——是一种允许不同组件相互通信的机制,而不需要相互了解
这种体系结构模式的主要目的是允许多个模块以各种方式进行通信。这种模式非常灵活,因为可以随时添加或删除模块。此外,可以允许模块之间直接通信或同时向多个模块广播消息。
优势
- 新的发布者、订阅者和连接可以很容易地添加到产品中
- 对高度分布式应用程序有效
- 是高度可修改的体系结构模式,因为添加任何新功能只需要引入新类型的事件
缺点
- 可伸缩性可能是一个问题,因为所有消息都通过相同的事件总线传输
- 测试相互依赖的组件是一个复杂的过程
- 当不同的组件处理相同的事件时,系统的复杂性会增加
事件总线架构模式在Android应用程序和各种通知服务的开发中广泛使用。亚搏充值后支付宝能申诉吗使用这种架构模式的软件产品的一些例子包括:
- 交易系统
- 在线消息应用程序
- 在线表单
- 基于通知的软件产品
总之,事件总线体系结构模式允许软件组件仅在需要时发挥作用,并在所有其他使用阶段保持非活动状态。通过增加系统的复杂性使得测试过程变得困难,这种体系结构模式是高度可修改的。
模型-视图-控制器(MVC)软件设计模式
主要结论:模型-视图-控制器(MVC)模式可以为其用户提供相同数据的多个视图;然而,它确实增加了软件产品的复杂性。此模式用于创建web应用程序和桌面图形界面。
模型-视图-控制器(MVC)体系结构模式涉及软件应用程序的数据模型、表示层和控制方面的分离。该模式的关键特征如下(图9):
- 模型——包含应用程序的核心功能和数据
- 视图——向用户显示应用程序数据,但是,视图不能影响用户对数据的操作。开发人员可以定义多个视图
- 控制器——充当模型和视图之间的构建块。它处理来自用户的输入,并根据视图触发器事件进行适当的操作
这种体系结构模式将信息的内部表示与信息的呈现方式和接受方式分开。这将不同的软件组件解耦,从而允许以后有效地重用代码。
优势
- 解耦组件并允许有效的代码重用
- 开发团队可以向用户展示多个视图
- 在将数据呈现给用户之前不格式化数据,以便此模式可用于任何接口吗
缺点
- 增加软件产品的复杂性,可能会导致许多不必要的用户操作更新
- 代码在这个模式中添加了新的层,使其更难导航
- 与这种模式相关的是陡峭的学习曲线,开发人员需要了解多种技术才能使用这种模式
MVC架构模式已经被用来创建许多不同的万维网(WWW)应用程序和框架,包括Django和Rails。这种架构通常用于创建以下软件产品:
- Web应用程序
- 桌面图形用户界面
- 编程语言的库
总之,当初创公司为WWW创建应用程序时,MVC软件设计模式最有效。视图和模型的分离允许有效的代码重用,尽管在开发人员第一次开始时有一个陡峭的学习曲线。
解释器软件体系结构模式
主要结论:解释器模式侧重于如何在特定编程语言中计算程序行。亚博88下载这种模式最适合创建数据库查询语言,也最适合自定义现有语言。
解释器模式是一种体系结构模式,用于设计解释用专用语言编写的程序的组件。亚博88下载该模式主要关注如何计算用特定语言编写的程序行,即句子或表达式。亚博88下载
该体系结构模式解释了一个接口,该接口有助于解释特定的编程语言。该模式使用一个表达式层次结构和一个树结构来组织所有不同的表达式(图10)。在模式的外部,解析器会遍历并生成用于计算表达式的树结构。
优势
- 高度动态的行为是可能的
- 有利于确保用户的可编程性
- 增强软件的灵活性,因为替换解释程序很容易
缺点
- 性能通常是一个问题,因为解释语言通常比编译语言慢
- 复杂的语法很难维护,因为这种模式为语法中的每个规则定义了至少一个类
尽管解释器体系结构模式不像其他模式那样流行,但它已被用于创建用于描述通信协议的语言。下面是一些可以使用这种架构模式制作的软件产品示例:
- 产生应用程序数据的各种类型输出的产品
- 数据库查询语言的创建
- 创建用于描述通信协议的语言
总之,解释器体系结构模式涉及到创建新的编程语言或通过创建解释器来处理现有的编程语言。它不是一个非常流行的架构模式,所以你的初创公司很可能不会使用它来创建你的软件产品。
结论:软件架构模式和设计模式
在软件开发过程中,选择正确的软件设计模式至关重要。这是因为一旦模式已经形成,就很难改变,而且代价高昂。因此,开发人员应该提前花一些时间来考虑他们特定软件产品的正确架构模式是什么。
适当的体系结构模式可以提高软件产品的质量,因为它是基于高度测试和重用的结构,适合解决各种问题。软件系统的蓝图非常有用,因为当前软件产品的规模和复杂性每天都在增加。
总之,创业公司可以利用现有的软件架构模式来帮助他们开发软件产品。创业公司应该花时间彻底审查他们的业务和产品需求,以确保所选择的模式是合适的。
选择软件设计模式的经验教训
恭喜你!您现在已经了解了在软件开发过程中创业公司可用的不同架构模式。读完这篇文章,你应该已经了解了以下关键概念:
- 软件架构模式是软件产品的蓝图,这些软件产品试图解决一系列行业中的常见问题。
- 分层架构模式是软件开发人员最熟悉的模式。
- 黑板图案是最适合的软件产品是如此前沿,没有可供选择的图案。
- 在架构模式选择过程中,初创公司应该审查其产品的功能需求,以及开发团队的技术专长,以确保选择了合适的模式。