<<SOA>>
SOA(Service-Oriented Architecture),面向服务架构
所谓的面向服务架构,就是通过将整个项目细分为多个小的服务项目块,每个小的项目服务块均有其独立性。每一个小的模块就可以看成乐高积木基本块的形式,当服务需求来的时候,可以通过不同基本模块的组装,来满足不同的服务需要,大大降低开发成本。对于项目开发而言,降低耦合度,将开发和服务需求剥离开来。
<<SOA原则>>
以下原则是开发,维护以及使用SOA的基本原则
---可重复使用,粒度,模组性,可组合型,物件化原件,构建化以及具交操作性
---符合开放标准(通用的或者行业的)
---服务的识别和分类,提供和发布,监控和跟踪
以下是一些特定的体系架构原则:
---服务封装
---服务松耦合(loosely coupled),服务之间的关系最小化,只是互相知道
---服务契约 服务按照服务描述文档所定义的服务契约行事
---服务抽象 出了服务契约中所描述的内容,服务将对外部隐藏逻辑
---服务的可组合性 一组服务可以协调工作并且组合起来形成一个组合服务。
---服务自治 服务对所封装的逻辑具有控制权
---服务无状态 服务将一个活动所需要保存的资讯最小化
---服务的可被发现性 服务需要对外部提供描述资讯,这样可以通过现有的发现机制发现并且访问这些服务
除此之外,在定义一个SOA实现时候,还需要考虑一下因素:
---生命周期管理
---有效使用系统资源
---服务成熟度和性能
<<服务导向的架构和Web服务协议>>
服务导向的架构通常被定义为通过web服务协议栈暴露的服务。与SOA相关的web服务的标准主要有
---XMl
---HTTP(S)
---SOAP(simple object access protocal) 在计算机网络上交换基于XML的消息的协议,通常是用HTTP。
---WSDL(Web Services Description Language) 基于XML的描述语言,用于描述与服务交互所需的服务的公共接口,协议绑定,消息格式。
---UDDI(Universal Description, Discovery, and Integration,是统一描述、发现和集成) 基于XML的注册协议,用于发布WSDL并允许第三方发现这些服务
<<具体例子分析>>
对于一个在线商城的服务,为了利用SOA架构对这个商城项目具体设计,可以先通过商城提供的服务开始进行分析,如下图
方块里面的内容代表着商城提供的服务,需要为注册或者登陆提供的用户服务,需要为登陆后的用户提供购买或者出售服务(这仅仅是大体上的划分服务,没有具体细分下去),其中对于用户这个服务需求而言,如图中所示,前面需要登陆以及注册的功能,因此可以划分出登陆与注册两个独立的模块,两个模块功能上彼此独立,并且能够相互组合。
同理可以分析购买以及出售服务,以及购买服务通过SOA划分后的具体模块,并且提供供外界访问的API。