轉自:http://www.nowamagic.net/librarys/veda/detail/256
雖然PHP是Web應用開發中最廣泛使用的環境,但它還是一度被認為無緣企業級開發。
Q:企業軟件的一個關鍵元素就是互操作性,它可以讓軟件與其他平台交換信息。大家都認為PHP在這方面表現欠佳,因為它的WS-*支持相對來說比較新且功能較少,成熟度不高。關於這點你們是怎麼考慮的?它會不會有所改變?
Zeev:我覺得相比WS-*而言,互操作性涉及的要更加多些。事實上,我們只看到了很少的基於SOAP的Web服務請求,而更多的則來自於其他標准,這主要是因為部署SOAP的過程較為復雜。PHP極好地支持了互操作,並且為此提供了很多不同的接口(REST,優秀的XML支持,SOAP,以及為web服務提供的 ZF組件等等)。據說PHP從2004年開始就為SOAP提供了非常好的基礎支持,從2006年開始就通過Axis2擴展為WS-*提供了廣泛的支持。我只能說我還從沒有碰到過用戶抱怨缺乏互操作性的情況,如果真的有,那也一定是贊美吧。
Rob:我覺得這只是部分人的觀點。PHP源於其簡單性。它是一門只需必要的復雜度,就能“解決web問題”的語言。因此PHP程序員會更多的選擇REST 而不是SOAP。傳統的企業軟件正逐步向位於中間的PHP靠攏。比方說,IBM的許多企業級軟件產品在去年都提供了RESTful交互支持,包括Atom 發布協議,這樣的話就多了一個選擇。在該用WS-*的地方使用它,而在開發的簡單性和速度至關重要時,應使用REST。我們也饒有興趣的看到了PHP被用來直接加強企業連通性。IBM的Message Broker可以當作一個“萬能轉換器”,它能夠將一個東西連接到另外一個東西,而現在它的消息轉化流中也提供了對PHP計算節點的支持。所以現在是可以在企業軟件內部中使用PHP語言簡單而又強大的語法和語句的。我們最近為IBM的CISC事務處理器發布了一個SupportPac,用以支持PHP語言。CISC正如軟件一樣,具有“企業級“的性質。它運行於主機上,可以由一些像銀行,政府和醫療保健部門的組織來使用,用以處理一些最重要的可能影響到日常生活的事務。
Derick:我覺得這裡沒什麼太大問題。PHP已經為所有的WS技術如SOAP,XML-RPC和JSON提供了支持。
Q:過去的幾年裡,將腳本語言移植到JVM中並以利用它豐富的監控,安全等功能已經成為了一種趨勢。這對於PHP開發而言並不陌生,因為現實世界中存在好些個運行在JVM中的PHP應用。制造商們對於提升性能的話題各抒己見。你們是怎麼看待這種趨勢的?
Zeev:我們在.Net中也看到了類似的趨勢,但是這些腳本語言並沒有很遠地脫離原始的實現。我想對於JVM上的PHP也是同樣的道理。事實上我們可以看到原生實現的PHP相比綜合改造後的PHP所擁有的性能優勢——尤其是對內存的需要以及在現實世界中長期運行的表現。盡管如此,標准實現最大的優勢是在於它所擁有的強大社區支持(包括在代碼貢獻和使用上),這是其他實現所缺少的一個東西。
Rob:它的一切都令人如此興奮,我相信它會有很好的未來。在數以千計的已經被實現的語言中,只有少量語言在自然選擇過程中幸存下來,原因是它們特別適合於某個用途。因此開發者改進創新某種語言的實現是一個很自然的事情。如果我們看看Ruby社區就會發現,這門語言的成功歸因於至少半打以上的實現,還有這些實現中的共享測試和性能調整,它們幫助明確了語言的規范,而相互間”最快Ruby“頭銜的競爭也功不可沒。我想我們正在PHP上見證同樣的事情發生。我們已經看到了PHP實現間協作所帶來的巨大好處,例如在過去兩年裡由社區產生了大量的全新測試用例以及為改善某些API而作的努力,我相信這種現象在未來會持續下去。我現在正工作於PHP在JVM上的一個實現,它已經用在了IBM的ProjectZero孵化器(incubator )中,WebSphere sMush產品,以及我前面提到的CISC PHP SupportPac和MessageBroker計算節點中。我認為對於某些類型的問題,在JVM上運行PHP會非常有意義。我們看到我們的合作伙伴和客戶正在使用它來耦合現有的基於Java的系統,這樣做他們可以在輕松重用Java庫和API的同時,享受PHP所帶來的便捷。
Derick:盡管性能方面“可能”會有所提高,但是可擴展性卻始終是個問題。PHP的整體思想是在無共享架構的情況下輕松實現可擴展性。在JVM上跑PHP會移除掉它的無共享架構。不幸的是PHP社區中只有一個叫做PHP-on-JVM的項目在盡可能的貢獻著測試用例。
Q:從PHP 4到PHP 5的升級不是一個簡單的遷移過程。關於那些猶豫是否對即將發布的PHP 6進行投資的公司,你們想說些什麼?
Zeev: 實際上我並不同意關於4->5遷移是個非常困難過程的說法。整個過程並沒有太多的兼容性破壞問題,而只是相對簡單地修補應用程序。事實上想要利用新的功能,多花一點工作是在所難免的,也是意料之中的。在6的版本中我們實際上更多的考慮了兼容性破壞問題——目前這個問題在6中要比在5中更具實質性。這就是我們需要花時間去做的事情。
Rob:我認為PHP5在今後很長一段時間都會存在。即將發布的5.3版本已經盡可能的設計為無痛升級,且增加了原本定在PHP6.0中的幾乎全部的功能,只差移除掉一些不用的功能和增加PHP 6.0中的unicode了。我非常渴望看到unicode版本的的PHP,因為它可以讓基於PHP的JVM具有更加直接的兼容性,之所以更加直接是因為 JVM原生地采用了unicode來表示字符串,但是我懷疑采納過程在PHP 5和PHP 6中都將會非常緩慢且持續許多年。
Derick:雖然大家對此總是懷疑,但是我們會努力減少這些問題,通過引入向前兼容的功能來轉移到PHP 6。如果大家能夠向我們反饋一下自己在當前開發版本中碰到的問題的話,那麼可以幫助我們將遷移過程變得更加簡單。
Q:在所有的建立的語言中,社區中的人們都推動增加了許多高級的功能。而另一方面PHP一直被認為易學的功能較少。你們認為這種情況需要改變嗎?
Zeev:我絕對不認為它應該改變,因為它是PHP成功的一個關鍵因素。希伯來語中有句諺語大致這麼說“給的越多,拿的越多”,我堅信這句話對於 PHP是適用的,至少在語言結構與語法上如此。通過使用擴展和框架,PHP可以無止境的擴展,在我來看,這些擴展和框架正是PHP最佳和最有趣的“最後前沿”。我覺得完全使用PHP的大型復雜網站(Facebook,Yahoo,Flickr),完全基於PHP的復雜現有應用(SugarCRM,OpenPro,CMS's),以及公司網站或內部系統依賴於PHP的企業證明了這樣一個事實:PHP的功能集已經成熟,並且我們應該朝著這個方向走下去。
Rob:在我們著手為IBM的腳本產品WebSphere sSmash選擇腳本語言時,就因為PHP如此廣泛的使用面而特別選擇了它。我們希望能夠讓數以百萬的PHP程序員們能與企業或者企業軟件緊密聯系在一起,並且我們希望支持一種能夠讓新人程序員快速上手的語言。PHP的強大在於它的簡單性。一門語言如果不想滅亡的話就一定需要不斷的演變。如果PHP 5沒有支持面向對象編程的話,肯定會喪失很多吸引力。伴隨著PHP 5.3的發布,PHP肯定可以在這些新的特性上潛在的增加其復雜性。我想未來更多的工作是去了解怎樣使用它們和在此之上形成的語句。鑒於新版本被采納的滯後性,因此在大部分主流應用程序轉移到使用5.3功能之前,還需要等上若干年,我想在這段時間裡PHP程序員將會用大量實例來掌握這些新功能,並將它們用在簡化常見的編程任務上。
Derick:不,它不需要改變,這兩類開發人員都存在。增加新功能並不一定需要提高入門的門檻。
Q:PHP作為一門語言,在這些年裡一直追隨優秀的范型而演變,並從一個簡單的預處理器演變成了一個強大的OO語言。隨著函數式編程風格嶄露頭角,你們覺得這種這種范式是否會走進未來PHP的世界?
Zeev:不會。PHP仍然支持過程式開發,並且不太可能會消失;我們早在啟動PHP(PHP 3)中就增加了OO的支持,雖然它現在跨越到了PHP 5中。lambda大概是最接近函數式范式的東西了,而這正是我們需要完成的。這也映襯了我前面回答的一個問題——我們不想要一個一勞永逸的語言,只是想要一個能夠完成工作的簡單語言。
Rob:這在一定程度上已經發生了。PHP 5.3中閉包的概念就是來源於函數式編程的世界裡。PHP社區混雜了大量經過“經典訓練”的計算機科學專業人員以及一些業余自我訓練的程序員。看到這個多樣的社區中閉包的誕生和常用語句的演化其實是一件很有趣的事。我相信我們最終會完成一套被廣泛接受的模式和語句,它可以很優雅的解決web開發中的常見問題,而程序員在使用時都不會想到其實這一切都源於函數式編程。
Derick:我不確定,我認為它不會特別合適。但是如果它對PHP應用程序有意義的話,也許可以找到進入PHP的出路。PHP在集成其他語言中有趣和有用的理念方面一直做得很優秀。
你是怎麼認為的呢,選擇PHP是企業的明智之舉嗎?
原帖由 於 2008-6-26 00:57 發表 [i]其他語言的我也沒見過 ...:sweat: :sweat: .Net和Java的很多,金蝶K3 ERP就是用.Net,浪潮ERP有.Net和Java版的,我見過的很多大型企業項目都是用Java的多,其次是.Net,從來還沒看到過用PHP的:sad:
在我看來,PHP沒有被當作競爭者的理由是評論者缺乏對它的了解,而且也不了解用於WEB開發的其他操作系統。還有一種可能:PHP是開源免費,在商業環境中意味著低價!虛擬主機服務市場的最大份額,我猜想它在WEB開發這一領域裡也在被摧城拔寨。很顯然,PHP被認為落後ASP和jsp(SUN企業級應用的首選)太多,以至於它是沒有什麼用的,但是這恰恰與事實不符。PHP本身就是一門強大的語言。它事實上在每個發行版的LINUX上都有,在Mac OS X上也有。獲取開發和使用PHP代碼的構件(building-block)工具和軟件都是免費的。用於開發PHP應用程序的商業集成開發環境(commercial integrated development environments,IDES)也可以找到——這樣的工具有Komodo(它運行在LINUX和Windows上)和Zend Studio(這個應用程序能夠運行在任何帶有JAVA運行環境的操作系統上)。你幾乎可以在每個WEB虛擬主機上運行由PHP建立的網站,而不要考慮服務器所運行的是什麼操作系統,這一事實讓PHP更加具有吸引力。容易使用使用C或者Perl或者具有類似風格和句法的另一種語言的任何用戶都能夠很快上手PHP。盡管它是設計用在WEB上的,但是它也能夠作為命令行語言使用。你正在編寫的WEB應用程序需要每個小時或者每天執行一次某些代碼嗎?使用cron或者類似的計劃安排管理器,你可以計劃安排PHP代碼在你希望的時候執行,使用普通的命令解釋腳本或者批處理文件就能夠執行這樣的代碼。不需要自動調用浏覽器就能夠查看專門的網頁,從而執行你的事件,也沒有必要依賴來訪者的點擊來告訴你的系統:特定的代碼需要在特定的時候被執行。PHP在這一領域可擴展性的事實是絕對具有吸引力的。PHP的好處我不是jsp(SUN企業級應用的首選)或者ASP的老手,在此我也不想貶低這些語言。相反,我會把注意力放在PHP的好處上。本地化PHP讓你能夠為網站的訪問者提供本地化的服務。當用戶點擊進入網站的時候,網站會根據他們浏覽器的設置自動地以其母語向其提供頁面。要實現這一點不需要使用用於語言翻譯的煩雜文件,而是使用和本地化的C程序所具有的相同能力,通過一個叫做gettext的系統實現的。如果被請求的語言文件存在,那麼用戶所看到的文本就是其母語;如果語言文件不存在,那麼文本就是缺省的英語或者其他任何你所指定的語言。許多本地化的UNIX應用程序都將gettext作為標准,它讓第三方的翻譯變得輕而易舉。輕易地使用命令行PHP支持在需要的地方設置和執行命令行程序。使用標准的UNIX diff工具,它能夠生成錯誤最後一次修改同要使用電子郵件發送到錯誤的所有者的當前注釋之間的不同。PHP代碼對在系統上所編寫的兩個文件執行diff,將其輸出作為輸入,再生成一個要發送的電子郵件。這封電子郵件是通過PHP自己來發送的。其他好處上面的只是我在自己程序裡所用到的強大功能中的兩個,而還其他的功能。例如,你可以:即時創建簡單的Flash動畫。即時創建PDF文檔。使用高級數學功能,以及面向對象的編程技術。讀取和寫入到本地和IMAP郵箱。在PHP裡就可以使用任何標准的Internet協議。想要編寫基於PHP的FTP、WEB或者新聞客戶端?沒有問題!只使用PHP你就完全能夠編寫出使用標准TCP/IP套接字的客戶端和服務器,並以此創建自己的協議。實現對加密的支持,以及對各種數據庫服務器的支持。缺乏遠見的評論我覺得,那些尋找頂級WEB開發語言而排除掉PHP的人是極......余下全文>>