SOA和PHP
什麼是SOA?
“
SOA(Service Oriented Architecture,面向服務的架構)是一種新的面向服務架構的編程模型,號稱“下一代軟體架構”。SOA由Gartner在1996年提出的,到了2002年12月,Gartner又提出了SOA是“現代應用開發領域最重要的課題”,並預計到2008年,SOA將成為佔有絕對優勢的軟體工程實踐方法。
SOA就是服務的集合。從軟體和業務功能兩方面的觀點看,服務就是定義良好的軟體組件,它不依賴於任何調用它的應用程式的上下文或狀態。
在技術上,定義這些服務以及它們到應用程式的介面,然後實現這些服務,是SOA的核心部分.這些服務通常被實現為Web Services,應用程式可以通過簡易物件存取通訊協定 (SOAP)(Simple Object Access Protocol,SOAP)來訪問它,基於HTTP協議以XML的形式進行傳輸.
從根本上說,SOA是服務介面的一種流和一種關係,設計介面及其關係需要熟練掌握Web技術、商務程序和服務下的技術平台以及採用它們的應用程式等方面的知識。架構師不僅必須瞭解如何構造Web服務,而且還要瞭解現有應用程式和計劃未來使用的應用程式如何使用它們。
”
SOA和Web Services是比較大的概念,是一種規範(封裝服務和提供服務的規範),它們降低了背景程式如何啟動並執行重要程度。你可以用不同的程式設計語言和平台來並實現SOA和Web Services。甚至有人由此預計五年後JavaEE不再是主流的標準程式設計模型,因為Java EE太過複雜。很顯然,如果我用簡單的方式也可以實現SOA,那麼為什麼要用Java EE呢? 這就是平台的力量,平台的影響力總是大於應用,JavaEE是個小平台(對於一般的開發而言,它已經是個非常大的平台,但是技術和需要總是在不斷髮展的),而SOA是個大平台。從面向過程,物件導向,面向組件和面向業務各種編程模型,目前JavaEE大部份時候是在面向組件和面向業務之間,而SOA是面向業務,應該說對於公司專屬應用程式非常有優勢。
目前IBM可以說是SOA的主宰力量,我們可以看到它甚至在PHP方面也在大力推廣SOA(IBM、Oracle 嘗試把PHP 應用到SOA 之中),足見其野心之大。
我們看看IBM在PHP SOA方面的進展:
2005.7 IBM用PHP實現SDO並提交到PHP的PECL庫
2005.12 IBM聯合BEA、Oracle、IONA、SAP、Siebel、Sybase、Xcalia以及Zend公司,共同發布了兩項針對SOA的重要編程模型規範——SCA(Service Component Architecture)和SDO(Service Data Object)。 注意,包括Zend公司。Zend和PHP的關係,就類似於Sun和Java。
2006.3 PHP SDO v1.0.0發布
2006.9 PHP SDO v1.0.4發布
2006.9 PHP SCA v0.1.0發布
詳情請參看:
SOA PHP Homepage
其實單獨地說PHP中的SOA並不是一件很有意義的事,因為那隻不過是一個Java的移植,以現在PHP5的物件導向編程模型,基本上已經足夠勝任,甚至有些方面更方便,因為PHP是弱類型和動態類型的語言(Type Juggling),在實現SDO時,寫代碼不用像Java那麼煩瑣(不需要寫那麼多geter/seter)。但是實現之後,能否推廣起來?這種“抽象、鬆散耦合和粗粒度”的軟體架構能否真正被接受?
光靠IBM的力量(可能還有Oracle、Zend)來發展PHP SOA,可以說是沒有可能成功的。當然話又說回來,如果SOA發展很好,PHP SOA也一定會流行起來,也會有更多技術廠家加入。一個技術能否被接受,能否流行,很多情況下還是要看大環境。
參考:
SOA PHP Homepage
解讀SCA/SDO ——SOA已進入實質階段
An introduction to Service Data Objects for PHP