在接触SOA之前对“服务”这个词没有太多的感触,无非就是为别人做事情么。当然在SOA中这个词也脱离不了这层基本的涵义,但是具体到实际的架构中对这个词的理解就更加深刻了。本文就以“服务”为中心说说笔者对这个词的理解,尤其是它在SOA这个环境下的理解。
由浅入深咱们先从现实说起,通常我们日常所说的“服务”这个词既可以是动词,也可以是名词例如:“为人民服务”“服务行业”。在国内对“服务”这个词理解有些误差,这和我们的民族文化有很大的关系。在很久之前作为官员常常说“做人民的公仆,为人民服务”使得人们感觉当官的没有架子,一心一意为人民办事(可事实上官员就是官员,有权利既是有权利,高高在上就是高高在上,人民无肯奈何)。这里的服务是指作为一个有能力的人出于某种目的来为别人办事。所以一般人们认为服务这个字眼是等级高的人才享有的特点。
其实它的本意(这里指从国外的翻译而来意思)不是这样的,能为别人服务只能说明你的功能比较高级,不能表示你的地位高级。很简单的一个例子,在国外服务行业称客户为Client,这和BS系统中的那个Server与Client是一个Client。而且令人深思的是国外还有一句话叫做“The customer is god”。这里的customer和Client是等价的,都是需要服务的对象。所以Server与Client如果从功能上来说Server更复杂、高级一些,但是无论Server多么的高级与复杂都是为Client服务的,是受Client调用的,是处于低级位置的。而国内资料将Server翻译为服务或者服务器这明显就是提升了Server的等级。从这一点说台湾的书籍就翻译的比较到位,他们把Server翻译为“伺服器”,重点在于这个“伺”字。帝王之家伺候王室的人个个身怀绝技但最终也只能是受用于人……好像扯远了;)
前面说了那么多目的就是为了说明服务的提供者是底层而服务调用者才是上层。这么一来在SOA中所说的“服务”这个词就很好理解了。提供服务的系统或者模块在整个业务中是处于低级的,虽然功能高级、实现复杂但终究是低级的。
进而可以很好的理解服务应该有的主要特征:
体现业务功能
我们说一个Server或者说一个系统能提供某项服务,那么这个系统一定可以完成某项具体的操作来满足需求。说白了就是每个服务都是为了完成某项或某一系列相关联的业务功能而存在的。
良好的契约以及类接口特性
一项服务的提供必需是以接受他人消息作为前提,然后返回处理后的消息,或者改变实体的状态。所以说服务必须要有的就是接受消息的接口,或者可以更宏观一些,可以把整个服务理解成一个接口
自足
既然为别人服务首先需要要做的就是可以自己顾住自己,不能出现泥菩萨过河的情况。
可互操作
在整个SOA的架构中没有绝对的服务提供者也没有绝对的服务调用者,大家彼此相互服务。所以当自身作为服务提供者的时候就必须要接受其他系统的调用为其他系统服务,在自己需要其他服务的时候又可以调用其他的系统为自己实现相应的功能,美其名曰“互操作”(笔者更愿意理解为协调合作,因为原版书籍中用的是interoperability)。
【有感】就目前而言,感觉学计算机更多的学的是国外的文化与思维方式,很多时候恍然大悟,”丫的,蓝眼珠大鼻子的怪物们居然是特么这么想的!“
原文链接:http://blog.csdn.net/beijiguangyong/article/details/9674567