PHP除了做網(wǎng)站服務器還能做其他應用服務器嗎?
網(wǎng)友解答: PHP做web服務器端開發(fā)是其重要的應用,能不能做其它應用的服務端呢?為了描述這個問題,首先要知道服務端都有哪些任務,需要提供哪些服務,以及現(xiàn)在的服務端概念發(fā)生了哪些變化?服
PHP做web服務器端開發(fā)是其重要的應用,能不能做其它應用的服務端呢?為了描述這個問題,首先要知道服務端都有哪些任務,需要提供哪些服務,以及現(xiàn)在的服務端概念發(fā)生了哪些變化?
服務端簡單的說就是業(yè)務邏輯的處理中心,在任務上簡單的說就是處理客戶的請求并生成回應。從客戶的角度上來描述一個客戶端的請求處理過程大概需要以下幾個步驟:
用戶提交請求,請求中通常攜帶著數(shù)據(jù),這些數(shù)據(jù)有機構(gòu)化的也有非結(jié)構(gòu)化的(比如多媒體數(shù)據(jù))。
服務端接收用戶請求,提取客戶端提交的數(shù)據(jù),接著驗證數(shù)據(jù)。
調(diào)用業(yè)務組件處理用戶的請求并生成回應。
客戶端接收到回應數(shù)據(jù)并呈現(xiàn)給客戶。
這里面的客戶不一定指的就是人,也有可能是其它參與到業(yè)務流程中的角色(業(yè)務模塊、打印機等等)。
從服務器的角度上來描述一個客戶端的請求處理過程大概需要以下幾個步驟:
1.當客戶到達服務端,服務端要為其分配一個會話對象來表示此請求,會話對象封裝了客戶的所有信息,這個會話就代表了這個客戶請求,每個會話會分配一個唯一的ID。
2.服務端根據(jù)客戶的請求任務來觸發(fā)對應的業(yè)務組件調(diào)用,服務端要到業(yè)務模塊目錄服務器中查找對應的服務并返回此業(yè)務模塊對象,此步驟涉及到分布式調(diào)用過程。
3.如果業(yè)務組件服務器本身是分布式集群方式來部署,則服務端需要進行一個負載判斷,以此來覺得調(diào)用哪個服務模塊來為本次請求進行服務。
4.返回業(yè)務模塊對象后,調(diào)用其業(yè)務方法。此時業(yè)務模塊可能需要訪問分布式數(shù)據(jù)庫系統(tǒng),步驟與訪問業(yè)務模塊組件類似,通常采用映射層來通明化處理。
5.返回處理數(shù)據(jù),服務端把數(shù)據(jù)封裝到比客戶對應的會話中。此步驟還會涉及到多服務器之間的會話管理。
服務端的處理過程是比較復雜的處理過程,其中涉及到分布式處理,集群處理,池化容器管理,分布式數(shù)據(jù)庫、事務管理、組件同步等等。不同服務對應的協(xié)議也不盡相同,比如RMI使用IIOP,還有SOAP等對應協(xié)議的使用。
根據(jù)以上服務內(nèi)容的分析我們可以看出,無論是PHP還是Python和Java,這些服務都可以完成,所以不管是web服務還是其它服務,PHP都可以作為服務端編寫語言。至于選擇什么語言,需要考慮語言本身的性能、團隊實際掌握情況以及開發(fā)周期要求等等。
目前在java作為服務端速度上有較大的優(yōu)勢,目前我的團隊在開發(fā)周期允許的情況下(java開發(fā)周期較長)會盡量使用java做業(yè)務處理后臺的開發(fā)語言,如果開發(fā)周期端,且任務量小的情況下會使用PHP或者Python,Python比PHP還有慢一點,但是Python開發(fā)速度最快。當然還有其它語言也可以作為服務端開發(fā)語言,這里就不一一列舉了,當然如果部署服務器有多平臺要求的情況下,就不要使用C#開發(fā)了。
目前服務器端的任務越來越重,分布式服務越發(fā)普遍,采用云計算服務來部署服務端已經(jīng)是大勢所趨,云計算也能為服務端提供可擴展的性能要求,所以服務器的云端進程會在大部分領域逐步實現(xiàn)。
我在后續(xù)的文章中會陸續(xù)分析服務端的云端框架結(jié)構(gòu),以及如何進行服務端編程,請大家持續(xù)關注,謝謝!
時間倉促,難免有所遺漏,IT人劉俊明懇請大家多多指正!
網(wǎng)友解答:當然可以!
你所說的app后臺服務器,其實也是網(wǎng)站的一種形式,只不過只返回數(shù)據(jù),不用管頁面布局罷了。它還是走http協(xié)議的,所以,這個沒難度。
對于第二點,做桌面應用,就比較困難,但不是做不了。方法有兩種:第一種就是做一個本地網(wǎng)站,前面做一個exe,但其實是個瀏覽器,看起來是普通桌面應用,微信qq就是這種方法,只不過沒用php罷了。第二種方式是直接使用gui庫,就像寫普通的程序一樣,這種方式使用的少,而且要使用第三方庫,難度比較大。
對于編程語言來說,沒有什么做不成的,只是用這個語言可能會很麻煩而已。