SOA面向服务架构简述

简介:

 在上篇中我们简单谈了下架构设计中服务层的简单理解,在这里我们将继续服务层的架构,在本节我们将重点在于分布式服务。在分布式系统中表现层和业务逻辑层 并不处于同一物理部署,所以我们必须存在分布式服务,以契约方式发布于网络中,我们的关注点在于服务,面向服务编程,这种通过组合业务逻辑暴露可用服务的架构叫做面向服务架构(SOA)。

    SOA强调一个松耦合,基于宏服务的架构,通过契约暴露给服务消费者可用的服务交互。SOA是以服务为组成构建,原则有:

  1. 边界清晰:

        服务层是消费者交互到系统业务的唯一入口,所有我们的服务必须能够被消费者所理解,以及最好处理Request/Response基于消息交换RPC调用,职责明确单一.还有我们更希望我们的服务为作用明确的,CQS(命令-查询分离原则).

  2. 服务的自治性

        服务自治主要表现在每个服务都是独立的,其系统部署,管理监控都是独立的。自治体现了服务的松耦合,但并不是服务就是一个孤岛,其可以通过消息交换消费其他服务。

  3. 使用契约(接口和数据载体),而非实现

         这也是面向对象设计第一原则。在我们的服务设计中SOA一个重要目标就是互操作,基于SOAP等标准协议实现跨平台互操作,可能存在异构系统。所以我们该选择接口而不是语言具体的类以及基于消息交互。服务对于开发就是一些列行为的组合,数据契约就是数据迁移对象,数据载体。契约使得我们并不关心服务的内部实现,而只关心提供了那些服务,服务的签名如何,怎么调用之类的。

  4. 兼容性基于策越

    对于消费者来说服务是否能满足他的需求,这需要服务语义兼容,语义兼容也应该通过可访问方式暴露。是的服务可发现。

    SOA是一种设计原则规范,其目标在于为复杂系统提供互操作性和以服务为基础组件构造系统逻辑。把具体的业务逻辑和流程屏蔽,暴露出用户可用的行为集合。SOA是一中原则而非集体技术。wcf,webservice是具体SOA技术。同时SOA也不是我们的目标,客户是不与关心我们采用soa与否,这只是我们对系统的一种解决方案。

SOA优势在于给我们提供更好的代码重用,版本控制,安全控制,扩展延伸性。同时降低和服务的耦合,交互必须依赖于服务契约和数据契约,并不关心服务的内部实现。在我们的版本升级,修改过程中可以完全可以重新实现替换原有服务,并不会影响消费程序的使用。

最后我们必须的说下当下流行的restfull,通常我们认为这是一种风格,而非架构,是由Roy Thomas Fielding在其博士论文 《Architectural Styles and the Design of Network-based Software Architectures》中提出REST是英文Representational State Transfer的缩写,中文翻译为“表述性状态转移”。是一种基于web的架构,它很好的利用http协议的method。根据不同的method表示对资源的不同语义操作。其核心在于将发布在网络的一切事物归属为资源,每个资源定位于一个资源定位符(URI)。以及无状态,缓存,分层架构。在微软最新的WCF resetfull,web api应用框架。以及wcf ria ,wcf data service,需要的注意的是微软同时候加入的自己的oData协议(开元数据协议)。

最后说一点:我觉得不管是服务或者resetfull服务我们都必须定义契约,依赖于契约,虽然微软的而技术允许我们直接寄宿服务类,但是对于服务的扩展和延伸而言,说这句话的原因在于我最近看见一些直接寄宿服务类的resetfull架构。


本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2012/05/22/2513905.html,如需转载请自行联系原作者

目录
相关文章
|
运维 IDE Java
SOA(面向服务架构)是什么?
SOA(面向服务架构)是什么?
1316 0
SOA(面向服务架构)是什么?
|
存储 供应链 监控
做了那么多架构,你真的懂 SOA 了吗?
如何统一看待和区别分层架构、微服务架构、分布式架构等主流架构?什么是 SOA?我们采用 SOA 的目的是什么?什么是服务化的本质?如何设计服务以及服务化架构呢?阿里高级技术专家程彦分享他对面向服务架构的一些看法,并给出相关的步骤和方案,较长,同学们可收藏后再看。
2180 0
做了那么多架构,你真的懂 SOA 了吗?
|
XML 数据格式 网络架构
|
11月前
|
消息中间件 中间件 交易中间件
【系统架构】面向服务架构(SOA)模式
【系统架构】面向服务架构(SOA)模式
197 0
|
XML JSON Java
微服务架构演变过程之 SOA 面向服务架构|学习笔记
快速学习 微服务架构演变过程之 SOA 面向服务架构
151 0
|
NoSQL Java 数据库
微服务架构与SOA架构模式实现区别|学习笔记
快速学习微服务架构与SOA架构模式实现区别
120 0
|
监控 网络协议 Devops
系统架构演变:SOA、微服务架构的区别和联系
系统架构演变:SOA、微服务架构的区别和联系
295 0
系统架构演变:SOA、微服务架构的区别和联系
|
网络协议 Dubbo 程序员
系统架构演变:SOA、微服务架构的区别和联系(下)
系统架构演变:SOA、微服务架构的区别和联系
系统架构演变:SOA、微服务架构的区别和联系(下)
|
监控 Devops Java
系统架构演变:SOA、微服务架构的区别和联系(上)
系统架构演变:SOA、微服务架构的区别和联系
系统架构演变:SOA、微服务架构的区别和联系(上)
|
移动开发 小程序 前端开发
一文读懂 SOA 架构和微服务架构的区别
如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益、累计收益等信息。
6618 1
一文读懂 SOA 架构和微服务架构的区别