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

 

 


推荐阅读
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 本文深入探讨了 Exchange Server 2010 中客户端访问的代理和重定向机制,特别是在跨站点环境中如何配置这些功能以确保用户能够顺利访问邮箱服务。通过详细解析不同场景下的应用,帮助管理员更好地理解和实施相关设置。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 2012年7月30日,语言岛团队宣布其智能记单词软件V0.3.4.554版本正式开源。该版本不仅支持跨平台使用,还引入了多项创新功能,旨在帮助用户更高效地记忆单词。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • 创邻科技成功举办Graph+X生态合作伙伴大会,30余家行业领军企业共聚杭州
    9月22日,创邻科技在杭州举办“Graph+X”生态合作伙伴大会,汇聚了超过30家行业头部企业的50多位企业家和技术领袖,共同探讨图技术的前沿应用与发展前景。 ... [详细]
  • 本文详细介绍了如何利用Go语言和WebSockets技术构建一个高效的实时聊天系统。随着网络应用的日益复杂化,实时交互成为了提升用户体验的关键要素之一。通过本指南,开发者可以学习到最新的技术和最佳实践。 ... [详细]
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社区 版权所有