在接觸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
偶長期以來一直想寫一篇關於soa的文字,但是遲遲沒有動筆。偶今天感冒在家,終於可以有這個機會咯。面向服務的體系架構 service oriented architeture,即soa 在今天這個軟體業中,可謂是如雷貫耳,如日中天。其架勢直逼當年 物件導向 object oriented oo 出道之...
面向服務的體系結構 SOA 之 關於BPM
從字面上理解bpm所要做的就是對整個業務流程進行管理。這其中包括很多方面,比如分析業務 實現業務功能 檢測業務流程 建立相應的操作流程的工具等等。在真正開始動手之前通常要做的將業務分解成已有的底層服務可以處理的小模組。流程分解後最底層的乙個個活動就是服務。服務是業務流程的組成部分。要想讓服務發揮作用...
Web服務與面向服務的體系結構
soa service oriented architecture 面向服務的體系結構 是由元件 服務 業務過程組成的可以滿足機構業務需求的體系結構,是一種非常好的建立複雜系統的體系架構的模型。soa有助於 重用 降低成本 風險,還可縮短產品進入市場的時間。從某種意義上說,soa更多是一些指導原則,...