每天学一点!系统架构设计师之面向服务的架构(一)

“当有一天,所有的应用都写成web服务,集成也许可以变得更容易”。如果写这句话的人能够看到当今技术的发展,可能他会觉得我真的太nb了。随之技术的发展,我们从客户端应用转变成为web服务,服务是一个由服务提供者提供的,用于满足使用者请求的业务单元。服务的提供者和使用者都是软件代理为了各自利益而产生的角色。
那么就不得不提SOA了,它作为服务概念的延伸,泛指系统对外提供的功能集。怎么说呢,就好比在一个大型企业内部,可能存在着人事,财务,后勤等多个系统,在实施SOA后,每个系统用于提供相应的服务,财务系统作为资金运作的重要关节,也向整个企业信息化系统提供财务处理的服务,那么对于财务系统的开放接口可以看成一个服务。

一、SOA的相关概念

1.SOA的定义
面向服务的体系结构(英文名称:Service-Oriented Architecture,SOA),从应用和原理的角度看,目前有两种业界公认的标准定义。
从应用的角度定义,可以任务SOA是一种应用框架,它着眼于日常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务。SOA使用户可以构建、部署和整合这些服务,而且不需要依赖应用程序及其运行平台,从而提高业务流程的灵活性。
从软件的基本原理定义,可以认为SOA是一个组件模块,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统、编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。
对于SOA,毕竟是一个概念性的东西没那么容易理解,那我们就以最简单的方式去看它。我们把系统按照实际业务,拆分成刚刚好大小的、合适的、独立部署的模块,每个模块之间相互独立。就像我们常说的微服务,好比现我有一个数据库,一个Web网站客户端,一个app客户端,一个IOS客户端。
现在我要从这个数据库中获取数据,如果不用SOA的设计思想,那么就会这样:Web里面写一个查询方法从数据库里面查数据然后在网页显示,app里面写一个查询方法查询后在app上显示,IOS同样如此。这里就会出现查询方法重叠了,这样的坏处很明显了,三个地方都有相同的业务代码,要改三个地方都要改,而且要改的一模一样。不仅麻烦还问题多多,从编程思想上去想,代码是可以重复利用的,为什么我们不能这样做呢!于是乎出现了这样的设计思想,比如用任意编程语言单独创建一个工程部署在一台服务器上,并且写一个方法(或称函数)执行上述查询操作,然后使其他人可以通过某种途径(可以是http链接,或者是基于socket的RPC调用)访问这个方法得到返回数据,返回的数据类型是通用的json或者xml数据,就是说把这个操作封装到一个工程中去,然后暴露访问的方式,形成“服务”。
2.业务流程与BPEL
业务流程是指为了实现某种业务目的行为所进行的流程或一系列动作。在计算机领域,业务流程代表的是某一个问题在计算机系统内部得到解决的全部流程。
由于业务流程来源于我们的显示世界,传统上是通过复杂的语言进行描述。在计算机业务系统建模中,需要用到一种特定的、简介的语言来专门描述计算机系统的业务流程,这就促使了BPEL的诞生。
BPEL(英文 Business Process Execution Language For Web Services)中文含义是面向WEB服务的业务流程执行语言,他是一种使用Web服务定义和执行业务流程的语言。使用BPEL用户可以通过组合、编排和协调Web服务自上而下的实现面向服务的体系结构。BPEL提供了一种相对简单易懂的方法,可将多个Web服务结合到一个新的复合服务中。
目前用于合成现有的web service,将现有的web services 按照要求的业务流程整理成为一个新的 web
services,在这个基础上,形成一个从外界看来和单个Servcie一样的Service。
有兴趣系了解的朋友可以看一看这个文章,BPEL的解析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值