在接触SOA之前对“服务”这个词没有太多的感触,无非就是为别人做事情么。当然在SOA中这个词也脱离不了这层基本的涵义,但是具体到实际的架构中对这个词的理解就更加深刻了。本文就以“服务”为中心说说笔者对这个词的理解,尤其是它在SOA这个环境下的理解。

由浅入深咱们先从现实说起,通常我们日常所说的“服务”这个词既可以是动词,也可以是名词例如:“为人民服务”“服务行业”。在国内对“服务”这个词理解有些误差,这和我们的民族文化有很大的关系。在很久之前作为官员常常说“做人民的公仆,为人民服务”使得人们感觉当官的没有架子,一心一意为人民办事(可事实上官员就是官员,有权利及时有权利,高高在上就是高高在上,人民无肯奈何)。这里的服务是指作为一个有能力的人处于某种目的来为别人办事。所以一般人们认为服务这个字眼是等级高的人才享有的特点。

其实它的本意(这里指从国外的翻译而来意思)不是这样的,能为别人服务只能说明你的功能比较高级,不能表示你的地位高级。很简单的一个例子,在国外服务行业称客户为Client,这和BS系统中的那个Server与Client是一个Client。而且令人深思的是国外还有一句话叫做“The customer isgod”。这里的customer和Client是等价的,都是需要服务的对象。所以Server与Client如果从功能上来说Server更复杂、高级一些,但是无论Server多么的高级与复杂都是为Client服务的,是受Client调用的,是出于低级位置的。而国内资料将Server翻译为服务或者服务器这明显就是提升了Server的等级。从这一点说台湾的书籍就翻译的比较到位,他们把Server翻译为“伺服器”,重点在于这个“伺”字。帝王之家伺候王室的人个个身怀绝技但最终也只能是受用于人……好像扯远了;)

前面说了那么多目的就是为了说明服务的提供者是底层而服务调用者才是上层。这么一来在SOA中所说的“服务”这个词就很好理解了。提供服务的系统或者模块在整个业务中是处于低级的,虽然功能高级、实现复杂但终究是低级的。

进而可以很好的理解服务应该有的主要特征:

体现业务功能

我们说一个Server或者说一个系统能提供某项服务,那么这个系统一定可以完成某项具体的操作来满足需求。说白了就是每个服务都是为了完成某项或某一系列相关联的业务功能而存在的。

良好的契约以及类接口特性

一项服务的提供必需是以接受他人消息作为前提,然后返回处理后的消息,或者改变实体的状态。所以说服务必须要有的就是接受消息的接口,或者可以更宏观一些,可以把整个服务理解成一个接口

自足

既然为别人服务首先需要要做的就是可以自己顾住自己,不能出现泥菩萨过河的情况。

可互操作

在整个SOA的架构中没有绝对的服务提供者也没有绝对的服务调用者,大家彼此相互服务。所以当自身作为服务提供者的时候就必须要接受其他系统的调用为其他系统服务,在自己需要其他服务的时候又可以调用其他的系统为自己实现相应的功能,美其名曰“互操作”(笔者更愿意理解为协调合作,因为原版书籍中用的是interoperability)。

【有感】就目前而言,感觉学计算机更多的学的是国外的文化与思维方式,很多时候恍然大悟,”丫的,蓝眼珠大鼻子的怪物们居然是特么这么想的!“

面向服务的体系结构(SOA)——(4)对于服务的理解的更多相关文章

  1. 面向服务的体系结构(SOA)——(1)目标与核心概念

    什么是SOA? 常常听到人们拿OOP和SOA一起来说事,诸如SOA是否可以代替面向对象(OOP)或者两者比哪个更加有优势?直接回答有难度举个例子可能显得答案更容易理解.小孩子问你该认真写作业呢?还是高 ...

  2. 面向服务的体系结构(SOA)——(5)关于MEP(Message Exchange Patterns)

    SOA中的MEP和JavaEE中的JMS类似,当然了就应该是类似的,因为都是关于消息方面的.一个是对系统架构当中消息的解决思路,一个是针对Java平台中的消息的具体解决办法(严格说不是具体的,只是提供 ...

  3. 面向服务的体系结构(SOA)——(3)关于BPM

    什么是BPM 很多情况下企业当中所提供的服务不是由一个分布式业务流程就可以完成的,整个服务的提供需要多个分布式流程有机的组合,于是BPM就应运而生了.要将现有的服务通过配置.编排(关于配置与编排的区别 ...

  4. 面向服务的体系结构(SOA)——(2)ESB介绍及职责

    企业服务总线(Enterprise Service Bus)是SOA的基础设施,之所以这么说是因为要达到SOA的目标(增强灵活性)就必须有调用服务的方法,ESB的存在有效的保证了消费者能够调用供应者提 ...

  5. 面相服务的架构SOA

    SOA体系结构是基于服务组件模型,将应用程序的不同功能单元通过定义良好的接口契约联系起来,接口是采用中立方式进行定义的,独立于实现服务的硬件平台,操作系统和编程语言.使得构建在这样的系统中的服务可以以 ...

  6. SOA 面向服务的体系结构

    SOA:面向服务的体系结构(service-oriented architecture) 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来. 接口是采 ...

  7. SOA(面向服务的体系结构)

    SOA(面向服务的体系结构) 面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务 ...

  8. SOA (面向服务的体系结构)

    面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台.操作系统和编程语言 ...

  9. 面向服务的体系结构(service-oriented architecture,SOA)

    SOA的概念是Gartner 在1996年提出来的,并于2002年12月进一步提出SOA是“现代应用开发领域最重要的课题”.   一.SOA的定义 SOA分为广义的SOA和狭义的SOA,广义的SOA是 ...

随机推荐

  1. jdbc链接mysql转

    完整java开发中JDBC连接数据库代码和步骤   JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的 ...

  2. json中loads的用法

    python中json中的loads()和dumps()它们的作用经常弄换了,这里记录下,loads方法是把json对象转化为python对象,dumps方法是把pyhon对象转化为json对象,我是 ...

  3. ping 和 traceroute 命令

    ping 和 traceroute 命令 ping 程序 就是发送一个ICMP查询报文给某服务器,以测试该服务器是否可达. 当返回ICMP回显应答时,要打印出序列号.TTL,和往返时间:   [roo ...

  4. SpringMVC利用拦截器防止SQL注入

    引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...

  5. 整理的dedecms标签大全,方便查找

    平时用dedecms开发经常会用到一些标签,特别是首页.栏目页.内容页,这些页面都会用到标签的调用,比如title.keywords.description.arclist.field.body等,为 ...

  6. HNU 12827 NASSA’s Robot

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12827&courseid=268 #include&l ...

  7. 通过rails console执行sql语句

    $ RAILS_ENV=production bundle exec rails c irb(main):008:0> r = ActiveRecord::Base.connection.exe ...

  8. python网络编程之最简单的单工通信

    tcp_server.py from socket import * server = socket(AF_INET, SOCK_STREAM) server.bind(('',12345)) ser ...

  9. NOIP 2014 pj & tg

    由于我太弱,去了pj组= = ============================== T1: 傻逼暴力 T2: 傻逼暴力+判断+更新 T3: 手画一下就知道了.算出这个点在第几圈,再使劲yy下在 ...

  10. CH round #55 Streaming #6

    T^T Saffah大神照样刷我这样诚心诚意想做一套NOIP模拟题的蒟蒻. 第一题 九九归一 好diao的名字... 题意就是给定一队$n,q$,求在模$n$意义下一个数$x$自乘的循环节长度. 当$ ...