服务属性与松耦合:SOA 核心要素解析
1. 服务的额外属性
在服务的世界里,除了基本的定义和功能外,还存在许多额外的属性。这些属性对于理解和设计服务至关重要,但对于是否为服务的必要属性,不同人有不同的看法。以下是一些常见的问题:
- 服务是否必须是无状态的?
- 服务是否必须以 Web 服务的形式实现?
- 服务是否应该是粗粒度的和/或可组合的?
服务可以被定义为某种自包含业务功能的 IT 实现。它通过专注于业务方面,隐藏了技术细节,让业务人员能够更方便地与之交互。从技术角度看,服务是提供者和消费者之间交换消息的接口,其完整描述(签名和语义)被称为“明确定义的接口”或“合同”,合同通常还包括服务水平协议(SLA)等非功能方面的内容。
下面详细介绍一些常见的服务额外属性:
- 自包含 :所有面向服务架构(SOA)的定义都认为服务应具有自包含性,即独立、自主、自给自足。但实际上,服务之间总会存在一些依赖,例如可能会共享一些基本的数据类型(如字符串)。不过,对于更复杂的基本数据类型要格外小心,目标是尽量减少依赖,以适应不同所有者的分布式系统。
- 粗粒度 :服务是一种抽象,它向消费者隐藏了实现细节,但这种抽象也带来了运行速度变慢的代价。例如,从远程存储过程切换到服务调用可能会使数据访问速度减慢 5 到 10 倍。因此,通常一个服务调用传输所有必要的数据比多个服务调用处理相同数量的数据更好。此外,粗粒度有助于将服务提供者的内部数据结构与外部接口分离。然而,“粗粒度”的定义并不明确,而且处理大量数据会花费时间,如果消费者不需要这些数据,就会造成时间浪费。
超级会员免费看
订阅专栏 解锁全文
1100

被折叠的 条评论
为什么被折叠?



