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

SOA设计模式基本概念及原则

系统被描述为不依赖于底层技术的服务服务通过消息实现1SOA涉及到服务的提供者和消费者参与SOA的系统是服务提供者,还是服务的消费者,要视工作流而定服务和消息是无状态的2服务和消费者

《SOA设计模式--基本概念及原则》

系统被描述为不依赖于底层技术的服务

服务通过消息实现1

SOA涉及到服务的提供者和消费者

参与SOA的系统是服务提供者,还是服务的消费者,要视工作流而定

服务和消息是无状态的2

服务和消费者通常由不同的程序语言开发,并运行在不同的Rum-time环境中

SOA涉及到服务自身,可用服务的清单(service directory),消费者连接并使用各服务的公共契约(service negotiation)

 

SOA与传统C/S架构的区别在于,SOA服务是通用的3并且是无状态的,而C/S架构的客户端和服务端是紧耦合的。

 

SOA实现必须权衡目标环境以提供一致的设计。遵守以下8项原则可达到SOA的设计一致性:

1.

标准化的服务契约

2.

消费者与服务之间,服务与服务之间的松耦合

3.

抽象实现细节;消费者只需要知道契约,不需要关心服务的实现细节

4.

可组装4服务而不需关心组装的复杂性

5.

运行时自治5

6.

无状态

7.

可复用6

8.

可通过元数据或公共契约定义发现服务

 

根据这些原则,SOA社区的Pioneers归纳出如下一些SOA的设计模式。其中用到的模式符号及其含义如下图所示:

 

 《SOA设计模式--基本概念及原则》

 

批注:

1.       消息既不能理解为服务和消费者之间的传递的实体对象,也不是Web Service中描述Web MethodXML,而是符合契约(Contract)的信息,消费者通过这些信息告诉服务要做什么,而不是直接告诉服务怎么做;

2.       状态信息的保存,会阻碍松耦合,Services应最大限度地处于无状态;但是要设计无状态的服务,必须尽量在业务层面考虑服务的幂等性;

3.       原文是universally available,个人认为应该理解为“可被所有遵循契约的消费者使用”;

4.       原文是Compose,似乎有些版本会译成“编排”,个人认为有些confusion.多个服务应该是可以被组合成一个更大的服务,实现可组装才是实现了可重用;

5.      运行时自治意味着服务是可以控制生命周期、可用性和边界的。用一个反面例子SQL 2000数据库和代理可以说明,两个服务都是作为Windows服务里托管的,但是代理服务有一个内置的数据库服务依赖。停止数据库服务意味着代理服务也会停止。这个服务间的紧耦合意味着它们不可能分开,或者独立的版本升级。紧耦合降低了买个服务的灵活性和在企业里的应用。

6.      复用性越好,意味者粒度越小,当需要一个粗粒度服务时,可参考原则4

 

 


推荐阅读
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
author-avatar
小丫2502895573
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有