热门标签 | 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

 

 


推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 解决JavaScript中法语字符排序问题
    在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
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社区 版权所有