PHP沒有中介軟體,導致了對很多麻煩。比如,對資料庫的操作必須要連結資料庫,然後做SQL操作。WEB程式直接操作資料庫的方法,這樣會帶來很多人為因素的事故隱患,以及管理上的麻煩,尤其是對大型的網站應用程式來說。規範的模式應該是,WEB程式傳遞參數到一個服務程式上,由該服務程式進行判斷並最終操作資料庫或者其它資料檔案,這樣做到了明確許可權控制,和業務類型集中管理。去年伴隨著ICE的推出,PHP終於有了可以使用的中介軟體。在PHP的發展史上,應該是一個裡程碑。
一、什麼是中介軟體?
中介軟體是一種可複用軟體。中介軟體在作業系統、網路和資料庫之上,應用軟體的下層,總的作用是為處於自己上層的應用軟體提供運行與開發的環境,協助使用者靈活、高效地開發和整合複雜的應用軟體。
在中介軟體發展史上,有三款相當成功的中介軟體。RPC(Remote process call 遠端程序呼叫),是SUN公司首推,目前在Solaris、Linux、BSD等作業系統下都屬於在Kernel級支援的軟體,支援TCP、UDP、UNIX-Socket等多種網路通訊協定,大名鼎鼎的NFS就是依靠RPC開發而成的。WINRPC,是微軟的產品,應該說是仿造RPC,近端分享就是在WINRPC的基礎上開發的。另外一個是Corba,典型的商業軟體中介軟體,具有更大的靈活性和易用性。很遺憾,幾乎所有的中介軟體都缺乏對PHP的支援。所謂的支援,是沒有相對於這種語言的Lib支援,但可以通過C編寫PHP Extension完成。
中介軟體工作模式基本上都是:使用者Clinet邏輯功能快--->中介軟體Clinet模組 ----網路-----> 中介軟體Server模組----->使用者Server邏輯功能塊。由此可見中介軟體完成了最繁雜的部分,在使用中介軟體的時候,開發人員只需要專註於業務功能邏輯的實現就可以了,大大縮短了開發時間。
二、ICE與PHP
ICE(Internet Communications Engine 網路通訊引擎),是由Corba原核心成員開發的一個開源中介軟體,據稱其各種效能完全優於Corba。除此之外,我們第一次見到了直接支援PHP的中介軟體。
ICE的安裝,去http://www.zeroc.com/download.html 下載一個Ice針對PHP的安裝包,按照說明安裝上。
ICE的使用:使用Slice(ICE的一種簡單文法指令碼),編寫一個xx.ice檔案。可以使用slice2cpp或slice2java等產生一個cpp或java的ICE架構程式,然後在這個架構程式中進行代碼編寫。ICE在PHP的應用繼承了PHP的一貫傳統——簡單,只需要在php.ini中載入該xx.ice,在PHP中就可以使用了。
ICE在PHP應用中的缺點,無法使用PHP編寫Server端,其實這也是PHP的一個缺陷——沒有完善的多進程和多線程管理機制。因此,Server端可以採用ICE所支援的其它語言進行編寫,比如JAVA/C++/VB/PYTHON等。
三、ICE為PHP帶來的突破,快速實作類別似.Net/Java等Web程式與其它服務程式的通訊功能,從而PHP可以應對更加複雜的應用程式架構。ICE官方網站:http://www.zeroc.com/ ,有興趣的PHPER可以去學習一下。