美(měi)國華盛頓地區(qū)的(de)獨立IT架構咨詢師JP Morgenthal稱,他(tā)試圖在《SOA世界雜(zá)志》上發表的(de)題爲“定義SOA的(de)分(fēn)類方案”一文中爲各種SOA實施分(fēn)類。他(tā)認爲,他(tā)可(kě)以通(tōng)過把SODA/應用(yòng)程序開發與自己的(de)子類混合在一起來(lái)隐藏他(tā)對(duì)缺乏SOA明(míng)确概念的(de)不滿。但是,他(tā)錯了(le)。當涉及到SOA服務時(shí),仍然有許多(duō)模糊不清的(de)概念。
你也(yě)許會問,如果我們把在計算(suàn)機上運行的(de)一切東西都叫做(zuò)服務會有什(shén)麽大(dà)的(de)影(yǐng)響嗎?這(zhè)個(gè)答(dá)案是:并非所有的(de)服務都是平等地建立的(de)。當使用(yòng)一個(gè)詞彙包含所有的(de)東西的(de)時(shí)候,沒有辦法确定這(zhè)些服務的(de)類型和(hé)範圍。
Morgenthal說,SOA的(de)準确定義應該是這(zhè)樣的(de):SOA是一種原始模型的(de)結構方式,重點是根據合同的(de)定義從提供商和(hé)消費者的(de)角度設計系統。基于SOA的(de)設計通(tōng)過實現服務提供商的(de)互操作性提供靈活性,不需要消費者方面的(de)流程改變。因此,SOA适用(yòng)于系統級,而不是一個(gè)系統中的(de)一個(gè)單個(gè)的(de)組件。
Morgenthal稱,由于我把SOA定義爲一種原始模型,你不能有一個(gè)直接的(de)SOA實例。你可(kě)以使用(yòng)SOA定義一個(gè)新的(de)架構。然後,使用(yòng)這(zhè)個(gè)架構創建系統的(de)實例。例如,SOI(面向服務的(de)集成)、Web 2.0和(hé)雲計算(suàn)都是以SOA原始模型爲基礎的(de)。然而,在應用(yòng)環境中,FedEx和(hé)UPS作爲業務也(yě)是SOA架構。不用(yòng)說,如果按照(zhào)面向對(duì)象的(de)法則,通(tōng)過一個(gè)對(duì)象的(de)最早的(de)祖先來(lái)辨認這(zhè)個(gè)對(duì)象不是不合法的(de),但是,這(zhè)樣做(zuò)你就會失去這(zhè)個(gè)對(duì)象的(de)本質。在一個(gè)集合中把東西混合在一起是一個(gè)偉大(dà)的(de)技術。但是,如果你要實現這(zhè)個(gè)對(duì)象的(de)豐富性和(hé)價值,這(zhè)個(gè)技術還(hái)是很可(kě)怕的(de)。
在上述基于SOA的(de)三個(gè)技術架構中,SOI和(hé)Web 2.0之間顯然有牢固的(de)軟件聯系。有人(rén)把擁有一個(gè)SOAP或者HTTP接口的(de)軟件組件叫做(zuò)服務。就像SOA是一個(gè)原始模型一樣,服務也(yě)是一個(gè)原始模型。這(zhè)些軟件組件是服務是因爲它們來(lái)自于這(zhè)個(gè)服務原始模型。
Morgenthal稱,爲了(le)更好地理(lǐ)解他(tā)的(de)觀點,我們需要先了(le)解一下(xià)這(zhè)個(gè)技術分(fēn)支。随著(zhe)TCP/IP成長(cháng)爲一個(gè)廣泛應用(yòng)的(de)網絡協議(yì),客戶機/服務器計算(suàn)的(de)概念也(yě)在發展。在客戶機/服務器計算(suàn)中,一個(gè)用(yòng)戶接口應用(yòng)程序使用(yòng)連接到網絡的(de)軟件服務根據需要提供數據,而不是讓這(zhè)個(gè)應用(yòng)程序作爲一台單個(gè)的(de)計算(suàn)機中的(de)一個(gè)獨立的(de)實體。客戶機/服務器計算(suàn)實現了(le)網絡共享的(de)資源。
如果我們不在上一段話(huà)中使用(yòng)客戶機/服務器的(de)這(zhè)個(gè)詞彙,目前90%的(de)技術人(rén)員(yuán)會說我們在談論SOA。因此,目前使用(yòng)Web服務開發系統的(de)人(rén)是在做(zuò)客戶機/服務器計算(suàn)嗎?Morgenthal認爲是如此。但是,那樣做(zuò)并不普遍。目前還(hái)沒有成百的(de)有空缺的(de)客戶機/服務器設計師崗位。
總之,在聲稱自己在做(zuò)SOA的(de)人(rén)中,沒有任何人(rén)會公開承認他(tā)們确實隻是在做(zuò)客戶機/服務器計算(suàn)。還(hái)有一些做(zuò)SOA的(de)人(rén),他(tā)們實際上是把重點放在建立業務模型方面,把這(zhè)個(gè)模型作爲一套功能的(de)服務領域(這(zhè)些人(rén)确實是在做(zuò)SOA)。然後,使用(yòng)客戶機/服務器設計方式開發軟件組件的(de)許多(duō)人(rén)都說他(tā)們在做(zuò)SOA。
請問,你還(hái)認爲在這(zhè)個(gè)行業不需要一個(gè)通(tōng)用(yòng)的(de)SOA定義嗎?