用PHP好,仍是asp.net(???)

   一學生問我:「用PHP建站好,仍是asp.net網站?」 php

我都一時沒法回答,之前建站時都使用asp.net,編輯器是Dreamweaver cs6,固然也能夠在visual studio集成開發環境下,或者webmatrix。也曾學過Python的django,ruby on rails,javaweb,後來據說PHP,又學習PHP語言建站,用過WordPress,joomla等cms建站,這些cms都是php語言開發的。 html

  一, PHP和ASP.NET最大最本質的區別,就是PHP只是一門編程語言,而ASP.NET是一個平臺。 java

 

看世界上大約1/3的網站的應用程序是用PHP寫的,這些PHP程序又大部分運行在Apache上,做爲一門語言,PHP並非必須運行在Apache上,PHP是獨立於運行平臺的,它也能夠在IIS裏運行。與PHP相反,ASP.NET是一個平臺而不是語言,ASP.NET的程序能夠用C#寫,也能夠用VB.NET寫,也能夠是別的編程語言,能夠用任何可以編譯成在.NET CLR上運行的的編程語言來寫,ASP.NET一般運行在Windows+IIS上,可是也能夠運行在其餘Web Server好比Apache上web

  從這個意義上說,PHP和ASP.NET的區別,就比如是iPhone和Windows 7的區別,不是同樣的東西,可是你選擇了其中一個,就等於選擇一種風格。 數據庫

  可是做爲開發網絡應用的工具,就個人體會,在功能上還有兩個顯著區別。 apache

二,Share-Nothing Architecture django

  PHP的哲學是Share-Nothing Architecture,每次對HTTP請求的處理都是獨立的,不共享任何數據,若是真的須要共享的話,那也是經過文件系統或者數據庫,在PHP的運行空間中不會共享內存對象。這篇關於Share-Nothing Architecture的文章很是詳細地介紹了Share-Nothing Architecture,這種架構可以帶來更好的擴展性(Scalability)和可維護性(Maintainablity)。 編程

  使用ASP.NET同樣能夠實現Share-Nothing Architecture,問題是,ASP.NET一族的編程語言特性讓打破Share-Nothing Architecture太容易了。好比,C#語言中的static變量,若是使用的話,同一AppDomain的每一個HTTP請求都Share同一數據,這樣就不是Share-Nothing了。 windows

  Asynchronous Programming Model 安全

  ASP.NET有一個功能是PHP不具備的,Asynchronous Programming Model(APM),異步編程模型,這一模型能夠更有效地利用線程,提升Scalaibility,固然,寫異步的程序要比寫同步的程序困可貴多。

  PHP沒有ASP.NET同樣的Asynchronous Programming Model,爲何在這一方面PHP世界竟然遜於微軟技術呢?

  我看可從兩方面回答,第一,微軟支持APM是由於它可以支持,第二,是由於微軟必須支持。

  爲了支持APM,必需要有底層支持,ASP.NET做爲一個平臺,能夠利用微軟的IO Completion Port來實現真正的異步。可是像PHP這樣的編程語言,只是編程語言,不可以假設本身運行在一個支持異步端口的平臺上,因此決定語言不會添加APM功能。

  爲何又說微軟必須支持APM呢?Windows上進程的代價很大,線程的代價好一點,可是依然很大,因此要有效地使用線程,就必須創造出APM這樣的東西。相比之下,Linux上進程線程的代價要小得多,這樣創造APM的壓力也就小得多,不用APM同樣能夠保持高效。

  Trends

  這篇文章標題是」PHP vs ASP.NET」,咱們用Google Trends來看看兩者的比較。看短時間對PHP和ASP.NET的關注程度,企業更關注PHP。

   三,資金問題,企業更青睞PHP,畢竟PHP是大衆化,「平民英雄」,PHP建站有不少是免費的,不像,asp.net,javaweb建站,有多數是收費的,固然從安全角度考慮,PHP建站漏洞多,容易被黑客攻破,通常銀行網站都使用ASP.net,或者Java語言開發的jsp,使用PHP建站少。

  四,支持PHP語言開發的編輯器與IDE有不少,如sublime,PHPdesigner,phpedit,zenstudio,等相反支持asp.net的不多。

  且PHP是跨平臺的即Linux與Windows系統,asp.net只限於Windows。

OK,end

相關文章
相關標籤/搜索