php和aspnet的區別
㈠ php與asp.net的區別
1. PHP, Hypertext Preprocessor, 動態網頁開發語言。
PHP,Hypertext Preprocessor,最初在95年問世(那時以前叫Personal Home Page)。PHP最初是製作動態網頁的伺服器端腳本語言,但
現在PHP已經可以作為command line運行有GUI的standalone的程序。現在是PHP Group在開發和管理PHP的規則,功能等。但PHP大都用在
dynamic webpage scripting上,好象沒聽過誰用它開發desktop application。
PHP使用率是製作動態網頁的幾種語言(JSP,ASP,ASP.NET, ColdFusion, Ruby, SHTML)中最高的。因為PHP在95年已經問世至今,以有
相當數量的開發者。我們熟知的國際權威網路全書Wikipedia有90%用PHP寫的,而且國外流行多年的「校內網」FaceBook 也全部用PHP寫
的,同時Yahoo, Sony官方,Pepsi百事官方這些網站都是用PHP的。根據維基網路(Wikipedia)的說法,PHP被超過20,000,000的網站所
用,被超過1,000,000的網頁伺服器所用。目前到2008五月,PHP最新版本為5.2.6。
PHP不僅使用率高,而且能兼容各類平台。它可以在大多數網頁伺服器上運行(如:MS IIS,Apache),大多數操作系統上運行(如:
Windows, UNIX, linux)。而且PHP支持很大多數牌子的資料庫:Mysql, Informix, Oracle, Sybase, Solid, PostgreSQL, Gerneric
ODBC等。
結構方面,雖比JSP,ASP.NET差點,PHP也有很多Framework可用。微軟的ASP.NET結構是出名的,JSP的MVC結構也很厲害,所以開發大網
站ASP.NET,JSP都很快。而PHP Group也為此付出很大努力,來開發自己特有的結構適應不同類型的大網站的需求。常見的PHP的
Framework有:CakePHP, PRADO, Symfony, Zend等。
另外LAMP結構,是PHP最常用的開發模式,即是配合Linux, Apache, MySQL, PHP,合稱LAMP。
2. ASP(Active Server Pages), ASP.NET 兩個分別是 動態網頁開發語言,動態網頁開發語言和結構
(1) 關於ASP的淘汰
ASP, Active Server Pages已經過時了, 但因為其出現的早,96年就有了,所以現在有些中小網站還用(但,使用最多最廣的是PHP,最
初於95年現世。ASP是微軟第一代動態網頁開發語言,只能在Windows系統 + MS IIS伺服器平台下運行。
Wikipedia, Facebook, 網路等都用PHP,PHP學習的簡單度和ASP差不多;JSP稍微難點,JSP用的一般都是銀行,購物等安全性較高的網站
,Google也用JSP)。但隨著開發者的各種需求,ASP以後可以被ASP.NET取代,因為微軟停止對其的一切技術維護與功能更新。ASP.NET是
革新版本的ASP(注意是「革新版本」,而非「改進版本」),或者說是完全新一代的Dynamic Web Scripting。
ASP代表著傳統的dynamic web scripting,與ASP.NET沒什麼關系,學了確實也沒用。因為ASP不象CGI(Common Gateway Interface),
CGI是動態網站製作的始祖,所有ASP,JSP,PHP什麼的都根據CGI演化而來,而且ASP,PHP,JSP都包含了些 CGI的東西;而ASP卻沒有被
衍生出任何新技術,ASP.NET也不算基於ASP,只能說ASP.NET開發理念,library,功能完全是基於.NET的其它組件。
其實PHP,JSP,ASP明白其中一種,其它的都很容易學會了。如果非要學學傳統的dynamic web scripting,那就學學PHP吧,不比ASP難,
但比ASP功能多,穩定性好,PHP5運行速度也比ASP快很多(JSP稍難因為要學點 Java)。學了PHP或JSP什麼的,對學ASP.NET有好處,而
且還可以直接用PHP,JSP進行開發。去google差差英文資源,有評價PHP 最好的,有評價JSP最好的,還從沒有聽誰說過ASP最好。
ASP.NET畢竟在.NET中,所以ASP.NET還是有相當地位的。
(2). 關於ASP.NET的優勢
ASP.NET是微軟.NET Framework的一部分。伴隨.NET 1.0在2002的問世,ASP.NET也出現在動態網頁開發語言的家族中(與
PHP,JSP,ColdFusion, Ruby, SHTML等並行了)。
功能上,ASP.NET比ASP有更強大的library, 更好的穩定性。 ASP.NET可以使用.NET Framework中所有組件(也就是說.NET能實現的,
ASP.NET一樣能實現),功能上顯然強大於傳統功能單調的ASP。最強的技術支持Web Service, 而且有.NET的所有library做後盾。而且
ASP.NET 在.NET 3.5中還有微軟專門為AJAX開發的功能--ASP.NET AJAX。
結構上,傳統的ASP把所有代碼混為一團,簡單的用<%%>把HTML和VBScript(或JScript)分開,實現動態輸出 HTML。因為ASP.NET模仿
JSP的MVC網頁結構,微軟為ASP.NET開發了自己的Code-Behind結構,將 presentation(文件拓展名:.aspx)和business logic(文件拓
展名:.cs或.vb等)分離。同時Code-Behind模式也實現了讓ASP.NET開發者用.NET中最普通Winform的開發模式來開發網站,方便非網頁開
發者製作動態網站。所以ASP.NET更容易維護,比ASP更適合於Enterprise Level 的大網站開發。
由於ASP.NET比JSP,PHP等更接近於.NET Winform的開發。如Tree View, Datagrid View(即高級Table)等高級UI,都可以直接用
ASP.NET中的Web Control來實現,這比傳統的使用JavaScript + XTHML + CSS的DHTML開發方式簡單不少,也更好維護。同時ASP.NET開發
這可以定義自己的User Control,製作自己特別的一種UI(如網站LOGO,版權等部分),而且此User Control可以被存為.ascx文件,方
便讓每一頁(.aspx)來使用。
運行速度上,ASP.NET模仿了JSP的預編譯機制(Pre-Compile)。使編譯好的代碼(MSIL語言)在網頁伺服器上運行。這樣比傳統的ASP,傳統
PHP(PHP4以前版本)更快,因為傳統的ASP是直接運行開發者寫的Script,相當於每運行一次,就得編譯一次那麼慢。 ASP.NET可以用
VB, C#, J#等所有.NET Framework的語言開發.(但其實每種語言做的東西都一樣... 就象山東話, 東北話, 寫出來都是中文:)
不過ASP.NET對出學者可能有點難. 因為它其實在模擬desktop application development,即Winforms開發的模式, 不象傳統的JSP,
PHP, ASP這樣容易明白。傳統的Dynamic Server Scripting, 象PHP 5, 這是現在最簡單的, 最有效的了。( 那個JSP也不難. 如果有錢
還可以考慮下Adobe ColdFusion。)
ASP.NET的新潮的Dynamic Server Scripting, 在其帶動下SUN也推出自己的JavaServer Faces (其實是拓展JSP,但JSF無法取代JSP), 和
ASP.NET很象, 也有很多Web Control(JTable, JTree),同時JSF也曾強了對WEB SERVCIE的支持, 也很適合ENTERPRISE LEVEL 的網站。
(3). ASP與ASP.NET的優劣總結:
-- ASP已經被微軟停止更新;ASP.NET卻在.NET(1.0, 2.0, 3.0, 3.5)中突飛猛進;
-- ASP在96年出現,並沒有引領一個潮流,PHP,ColdFusion都出現於95年,引領了整個潮流;ASP.NET引領新的動態網站開發潮流,SUN
的JSF(JavaServer Faces)就是與ASP.NET極其相似;
-- ASP大多被用在是中小網站;PHP被Wikipedia, Facebook, 網路所用,JSP被GOOGLE所用;
-- ASP不支持Web Service; ASP.NET支持Web Service。要是了解.NET中的Web Service在大組織系統中的重要性,就能立桿見影的看出差
距
-- ASP開發AJAX比較麻煩;而ASP.NET專門用AJAX控制項,更方便。要是了解Web 2.0,那麼AJAX是什麼地位,就不用我說了吧。
-- ASP.NET模仿JSP,是pre-compile的;ASP不compile,直接運行Script的速度顯然沒有compile之後的快。
-- ASP.NET的唯一缺點,就是開發用的IDE--Visual Studio Professional比較貴(express版免費的功能太少);ASP的唯一優點是,其
學起來最簡單,跟PHP一樣簡單,比JSP簡單,更比ASP.NET簡單幾倍。
3. .NET Framework
.NET Framework的概念就大了。.NET Framework是微軟開發的一種軟體開發技術。主要用來開發MS Windows系統上的各類軟體。.NET主要
包含一個龐大的library(解決常見編程問題)和一個virtual machine(管理程序的運行)。可以說Windows是微軟的命根:),所
以.NET就是微軟佔領軟體市場的關鍵。
.NET Framework的library叫做BCL, Base Class Library,包含了在各種領域的大范圍的編程需要,如user interface用戶界面,data
access數據接入,database connectivity, cryptography, web application development網站開發,numeric algorithms數學計算,
network communications網路交流等。開發者利用各種BSL來構成自己的代碼,進而開發出多樣的應用程序。
.NET寫出的程序在CLR, Common Language Runtime上運行。CLR是一個application virtual machine來幫助運行開發者寫的程序。CLR提
供很多重要功能,如:security安全,memory management內存管理,exception handling錯誤控制。
BSL,CLR構成了強大的.NET Framework。
.NET Framework主要安裝在Windows Server 2008, Windows Vista。小版本的.NET Framework還安裝在Windows Mobile系統上。但是家用
Windows XP等系統一樣可以安裝.NET Framework來運行用.NET寫的程序。
平時在學校學習,通常學習.NET中的三個主要技術:Winforms(桌面應用程序開發,就是平時普通程序如QQ,Skype可以用它,但其實QQ
用C,C++寫的), ASP.NET(網頁,平時在IE,FireFox上看的網頁可以用它), ADO.NET(接入資料庫,處理相關數據)。但.NET不是一種
語言。寫.NET程序可以用任何.NET支持的語言,如:C#, VB.NET, J#等等。明白其中一種就可以了。
.NET概念挺大,東西也非常非常多。與之相似的技術有SUN的Java技術(分三個技術部分Java SE, Java EE, Java ME)。
㈡ PHP和ASP.NET二者相比,各有什麼優缺點
php: 主要好處是免費,他的伺服器以及連的資料庫是mysql也是開源的資料庫,免費。在注重版權的國外,因為他免費,所以使用率非常高。你可以看到國外很多人使用php+mysql。國內盜版泛濫使用php並不是非常流行。主要缺點是面向過程的,和asp一樣。
asp.net 主要優點是面向對象的。這個是大趨勢,面向過程的編程方式是要被淘汰的。要和php相比幾乎沒有什麼明顯的缺點。
建議你現在要學web變成的話,無非2個大方向,要麼asp.net 要麼jsp,這是大勢所趨。
希望對樓主有所幫助~
㈢ asp、asp.net與PHP之間的區別 以及難度系數
ASP 的語言基礎是VB ASP.NET的語言基礎是C# 而PHP本身就是一種WEB腳本開發語言。
論三者 PHP 和ASP.NET都屬於主流語言。而且都在發展中。而ASP雖然還被很多人所應用,不過這今年已經成嚴重的下滑趨勢。且很多人已經放棄用ASP開發WEB程序。
ASP :
需要學習VB, 難度系數 0.4 ;ASP 語言腳本 難度系數 0.5
PHP:
需要有一定的編程基礎,熟悉基本的數據結構和面向對象的概念 難度系數0.6-0.75
ASP.NET
需要學習C#作為語言基礎, 難度系數0.6-0.75 ASP.NET WEB開發基礎 難度系數 0.5-0.7
學習哪個並不重要。重要的是要鑽研好一門。無論是ASP乃至JSP,只要學精,都會有用武之地。
另外,單純的學習這些語言是不可以的,必須學習比如HTML 或者資料庫等知識。WEB開發是一門綜合基礎的學科。並不是掌握了某一種語言就可以的。希望能幫到你。
㈣ PHP、JAVA和ASP.NET之間的區別具體點的 謝謝!
一、主體不同
1、PHP:即「超文本預處理器」,是一種通用開源腳本語言。
2、JAVA:是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念。
3、ASP.NET:是微軟公司推出的新一代腳本語言。
二、特點不同
1、PHP:PHP在不斷兼容著類似closures和命名空間等技術,同時兼顧性能和當下流行的框架。版本是7之後,一直在提供更高性能的應用。
2、JAVA:具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點 。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等
3、ASP.NET:基於.NET Framework的Web開發平台,不但吸收了ASP以前版本的最大優點並參照Java、VB語言的開發優勢加入了許多新的特色,同時也修正了以前的ASP版本的運行錯誤。
三、優勢不同
1、PHP:獨特的語法混合了C、Java、Perl以及 PHP 自創的語法。利於學習,使用廣泛,主要適用於Web開發領域。
2、JAVA:作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程
3、ASP.NET:具備開發網站應用程序的一切解決方案,包括驗證、緩存、狀態管理、調試和部署等全部功能。
㈤ PHP vs ASP.NET(介紹全面點)
單純通過對比兩種開發工具,是沒有任何意義的。因為二者在自己的開發領域各有所長,就好像Java對比.NET,各有優勢。本文主要的目的是通過比較ASP.NET與PHP,讓大家更清楚的看到二者的區別,以便於大家選好適合自己的開發工具。
我日常工作使用的是ASP.NET,前一段想學習了解一下其他的網路應用開發技術,本可以選擇熱門的Ruby on Rails或者python,但是無奈精力有限,想都學是不可能的,而我的博客建在WordPress上,WordPress是用PHP寫的,所以還是選擇多花些時間了解PHP。
PHP和ASP.NET最大最本質的區別,就是PHP只是一門編程語言,而ASP.NET是一個平台。
這世界上大約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上。
從這個意義上說,PHP和ASP.NET的區別,就好比是iPhone和Windows 7的區別,不是一樣的東西,但是你選擇了其中一個,就等於選擇一種風格。
但是作為開發網路應用的工具,就我的體會,在功能上還有兩個顯著區別。
Share-Nothing Architecture
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了。
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和ASP.NET的使用者大都是周一到周五工作的上班族。
我們看長期比較,對PHP的搜索呈下降趨勢,怎麼會這樣呢?我想不明白,PHP依然是這世界上應用最廣的網路編程語言,最近Facebook的開發者發布了HipHop,將大大提高PHP應用的性能,也許運行速度可以比ASP.NET還要快。
寫新聞其實挺不爽的,因為不能夾雜個人的看法,只能平鋪直敘陳述事實。當然,如果像某些新聞那樣「換一種說法」是可以騙過一些「不明真相的群眾」,但是這就有違道德了。因此,在客觀陳述完新聞內容之後,我只能選擇把自己的感想、評論等內容放在自己的博客上。
Joe Stagner的背景挺特殊,它是PHP的老用戶,在ASP.NET出現之前就是PHP的重量級開發人員了。後來不知哪一天開始他加入了微軟,我們就可以在一些如介紹ASP.NET AJAX的文章、視頻中看到他。這次他又涉及了一個敏感話題:性能比較。要知道每次這種比較都會惹來一陣爭論……我不想用「口水戰」來形容,我認為它和「爭論」的性質不同。Joe也承認,每次他說PHP好話就會被微軟的同事指責,而說.NET好話就要被PHP陣營說是微軟的托。
我深信優秀的技術人員都是有信仰的,都有技術傾向性。因此如Joe夾在中間的人的確比較尷尬。但是我認為,有信仰,和「客觀」是不沖突的。信仰涉及到傾向性,而客觀則意味著有傾向性之後的辦事方式。
至於比較結果,您可以關注一下新聞內容,總體來說,ASP.NET從純粹的執行效率上來說是大幅領先於PHP的。這並不令人驚訝,一個是編譯為機器碼的執行方式,一個是解析執行(即時緩存了op-code也並不是機器碼),性能自然天差地遠。
Joe也知道會引發爭論,因此他在文章後面寫道:
我知道某些人會被這個測試結果激怒,歡迎發表評論及反對意見,但是如果你無法保持禮貌的話,我會刪除你的評論並阻止你的IP。
如果你不喜歡,並拒絕接受這個結果——那麼你也來測試一下。用數據支持你的觀點,使用我的代碼或你自己的,然後圍繞事實再來爭論
自然,Joe也給出了測試代碼及測試環境的描述。
文章的評論自然是很有看頭的,說法很多,有許多人說VS的IDE好,有人說PHP永遠只能寫出半專業的程序。Joe一一進行了回應,我個人認為回應的還是很客觀的,緊緊圍繞在測試的中心。他表示,雖然VS非常優秀,但是PHP也有很好的IDE。而能否寫出專業的程序是看人,而不是由PHP決定的,有醜陋的PHP程序,也能寫出如C++一般工整美觀的代碼。
從表面上看,ASP.NET在性能上勝出PHP一大截,作為ASP.NET的忠實用戶我應該非常樂意接受這個「結果」。但是,我並不關注這個,因為這種運行時上純粹的速度對於一個Web應用程序來說實在微不足道。例如Joe的第三篇文章里列舉出的PHP高手的應對方式:
ASP.NET在性能上的領先不會對我有什麼影響。PHP是我的最愛,我的應用程序已經足夠快了。
沒錯,ASP.NET在基礎性能上是比較快,但是我的應用程序可以通過優秀的頁面實現和JavaScript實踐把這部分性能補回來。
我在進行Drupal開發,我對PHP最熟悉,因此我寧願多花一些硬體來保持更好的開發效率。
在WEB上便捷的開發,與各種系統之間靈活的搭配,像膠水一樣將各種不同的物件拼裝起來呈現給Web,(python在這方面也做得非常棒)。這才是PHP能有今天的本質原因。
之前我批評Java是一種不思進取的低生產力語言,回應很多。其中也有類似的說法,如說Java平台上開源多,項目多等等。沒錯,這我在對Java語言發起非難之前就已經反復強調了。我同意這個觀點——但是,如果是這樣的「結論」肯定是站不住腳的:「因為Java平台開源多,項目多,因此Java語言並不是不思進取的語言」。這就好比有人說「他熟悉PHP,PHP的項目多,因此PHP的性能比ASP.NET快」一樣,把兩種東西混淆起來了。
奇怪的是,Joe沒有讓人不要用PHP,我也沒有讓人不要用Java平台(不過我現在一直建議別人用Scala代替Java語言)。
許多國內技術人員總有這樣的「毛病」,見不得自己使用東西有一點點「瑕疵」。既然我是Java平台開發人員,我使用Java語言,我就見不得別人說Java語言一丁點不好。其實做技術就是做權衡,「沒有銀彈」就意味著沒有技術是完美無缺的,我們選擇技術是在優勢和劣勢之間進行平衡後的結果。只有承認了缺點,認識到缺點,才能吸取其他技術的長處,來作出更好的權衡。
因此我一直認可的是,SQL Server的確貴,數據存儲就用*nix平台上的吧。選擇多,性能多。
當然,這不是國內技術人員的毛病,這是一個廣泛的問題。很巧,李笑來老師昨天寫了一篇博文,似乎剛好談論了這方面的問題。文章很短,就全文摘錄了:
無論是誰,一生中總是在不停地「選擇」(姑且不論所謂選擇之中有多少是真實的有多少是幻象而已)。每個人都在盡量在眾多選項中選擇「最好」的那個。一生有2n選擇,可最終只有一條路屬於自己。
走在自己正在走的那條路上,人們對其它可能性可以抱有兩種態度:「好奇」——通常因對現狀不滿而表現為「後悔」;或者「自負」——更多人最終選擇的是這個,因為另外一個選擇所表現出來的「後悔」通常被認為是負面情緒,而與之相反的「無怨無悔」好像更加理直氣壯更加毅然決然(盡管並不總是正確)。
時間長了,人們就不知不覺把「我一直在盡量選最好的」和「我選的就是好的」等同起來,進而外演為「與我選的不一樣的選擇就是不好的」,再進一步演化為「既然選的是『不好』的,那他要麼是笨,要麼是『壞』,反正跟我不一樣!」
根源就在這里了。以自我為中心也好,過度自戀也好,沙文主義、大男子主義、狹隘民族主義也罷,都大抵上如此。
還有一個問題,之前也多次談過,國內技術人員太容易輕視一個問題。例如在這篇新聞中不止一個用戶覺得這個測試很無聊。為什麼「無聊」?可能是覺得「這點性能不是關鍵」因此這個實驗沒有意義吧。我想說,其實最無聊的不是做實驗的人,而是糾結與實驗結果的人。或者說,無聊的不是實驗,而是糾結於實驗結果。與此相比,我反而強烈懷疑,輕易認為這個實驗無聊的人,倒是真正只關注與「誰快誰慢」,而不關注過程和結果所表達出的內容。不去推測,不去思考。那麼以後到了需要決策的時候,決策所需的依據從哪裡來呢?應該都已經被「無聊」走了吧。
Joe的這幾篇文章,以及我總結的時候,都刻意的詳細列出了測試的過程和「運行性能」以外的結果。除了保持公正,客觀之外,因為它們也是重要的數據。例如,我現在知道了在Windows上訪問MySQL的驅動程序實現很差,而不同平台上訪問PostgreSQL性能則相差無幾。我知道,在Windows上進行大文件復制,受ACL影響性能較差。而如果關注Windows上運行PHP情況的朋友們則可以獲得更多信息。
我不知道是不是國內技術人員的普遍水平較高,總是容易感覺國外的一些討論無聊。例如有人討論Java的原生類型時有人回復「是不是經濟危機老美太閑了」。而上次有人和別人討論ppt的縮寫是怎麼來的,就給軟體最初的編寫者寫了一封英文信求證,老外非常詳細解答了這個問題,還糾正了簡稱和縮寫的差異。作者把信貼出來寫了篇blog,原站上評論都是贊同。
我不知道這算是學術態度的問題,還是只能說「對工作沒有熱情,對生活沒有好奇」?在《原生類型》那片文章里,有朋友回復的好:
西方人這種看似無聊的爭論才讓他們達到了今天的高度,爭論是不是一切量都可以用有理數表示,爭論什麼是運動,爭論地球是宇宙的中心還是太陽是宇宙的中心,爭論撒旦是如何誕生的,爭論行星是如何運行。而我們很只注重實用,所以無法達到西方在理論上的高度,永遠只能等別人爭論完了,出結果了。我們拿來用用,僅此而已。
不過,嫌外國人無聊的人,往往也是嫌國內沒有技術含量的人。是不是很奇怪?
同樣,Erlang之父Joe Armstrong寫Why OO Sucks;Stephan Schmidt寫Clojure vs Scala(上,下),Java平台語言Groovy創始人James Strachan認為Scala是Java未來的替代品,他和JRuby的核心維護者James Gosling、Charles Nutter對Scala vs. Java的話題討論的不亦樂乎。這些都是在批評一個事物,或是在進行「語言比較」這一「無聊」的話題。那麼他們是不是也都閑得慌了?
我在想,如果把他們的文章翻譯過來,匿個名,或者讓吉日嘎拉這樣的「眾矢之的」來發表,會不會被人指責不懂OO,不懂Java?您別說,我還真見過這樣的事情,誰讓國內翻譯轉載常常不留出處呢?
其實這又是個邏輯問題了,這近似於《常見邏輯謬誤》一文提到「人身攻擊及『你也一樣』」,也就是指並不關心問題本身,而是把論據轉移到「對方」身上。其實,一個命題是否正確,和它是由哪個人提出的有聯系嗎?我們一直指責某些人「屁股決定腦袋」,可別人真的用腦袋說話了,我們每次還是盯著別人的屁股看。
如果用博客園里常見的現象就是,如果一個人在說比較微軟技術和其他技術,而「恰好」那人又在說微軟好話,又「恰好」那人是MVP。那麼好,肯定會出現許多人說MVP是微軟的托。我承認,有些MVP因為個人利益而會作微軟的托。例如您現在在Google上搜索「MVP TFS」的第一條便是一則不光彩的事件。Ben Scheirman在一個TFS的MVP博客里回復說「即使有錢,也會用免費工具,因為更好用」,結果這條回復被刪除了。對方私下寫信說,這是因為他在用TFS咨詢賺錢。
這不正說明MVP是托嗎?不過這顯然是MVP的個人行為,而不是MVP的群體做法。原因很簡單,因為Ben自己也是個MVP,所以現在是「一個MVP說微軟產品不好,其回復被另一個MVP刪除了」。那麼您說,MVP是否是微軟的托?還有,您說我是不是微軟的托?
同樣道理,Oracle認證工程師說Oracle好,Rails愛好者說Rails好,是不是都是托呢?開源愛好者是不是開源的托?我還是認為,優秀的技術人員一定是有信仰的,也是有傾向性的。但是,他們的說得東西本身是否正確,並不以他們的傾向性而轉移,那些東西的正確性是客觀確定的。
我認為,如果社區要蓬勃發展,就要接受這種傾向性,並盡力保持客觀的頭腦,經常「換一種方式想問題」。我們要的不是和諧,而是爭論,對客觀事物的爭論,而不是對個人的人身攻擊。我認為,這方面我們做的還很不夠,要繼續努力。
㈥ PHP與ASP,asp.net有什麼不同
進行 Web 開發時,您有許多選擇。這些方法中許多都涉及到預處理 — 即,利用特定的標記將代碼嵌入到 HTML 頁面中,這些標記告訴預處理器,它們包含代碼,並且應對它們作出處理。與 CGI 非常相似,這些代碼在伺服器上運行,並返回一些內容,這些內容表現為發回給瀏覽器的結果 HTML 頁面的部分外觀。開放源代碼腳本語言 PHP 和 Microsoft 的 ASP.NET 框架中的語言都屬於這種類型;JavaServer Pages (JSP) 和 Perl/Mason 也以這種方式運行。
在此,我將重點講述 PHP — Oracle 已選擇合並到其產品中的技術 — 和 ASP.NET。我將概述兩者的各種優勢和弱點,並著重討論那些將幫助您決定開發項目應選擇哪種技術的因素。有很多因素需要考慮,不同的項目可能訴諸於不同的技術。總之,您將看到在價格、速度和效率、安全性、跨平台支持等方面的逐項比較,以及開放源代碼解決方案的優勢。
什麼是 ASP.NET
ASP 最新的版本 ASP.NET 並不完全與 ASP 早期的版本後向兼容,因為該軟體進行了完全重寫。早期的 ASP 技術實際上與 PHP 的共同之處比與ASP.NET 與 PHP的共同之處多得多,ASP.NET 是用於構建 Web 應用程序的一個完整的框架。這個模型的主要特性之一是選擇編程語言的靈活性。ASP.NET 可以使用腳本語言(如 JScript、VBScript、Perlscript 和 Python)以及編譯語言(如 VB、C#、C、Cobol、Smalltalk 和 Lisp)。新框架使用通用的語言運行環境 (CLR);先將您語言的源代碼編譯成 Microsoft 中間語言代碼,然後 CLR 執行這些代碼。
這個框架還提供真正的面向對象編程 (OOP),並支持真正的繼承、多態和封裝。.NET 類庫根據特定的任務(例如,使用 XML 或圖像處理)組織成可繼承的類。
除了編程語言和方法之外,當您用 ASP.NET 編程時,可以用 ODBC 來集成資料庫;ODBC 提供了一組一致的調用函數來訪問您的目標資料庫。
優勢和弱點
ASP.NET 的優勢很明顯在於它簡潔的設計和實施。這是面向對象的編程人員的夢想:語言靈活,並支持復雜的面向對象特性。在這種意義下,它真正能夠與編程人員現有的技能進行互操作。
ASP.NET 的另一個優勢是其開發環境。例如,開發人員可以使用 WebMatrix(一個社區支持的工具)、Visual Studio .NET 或各種 Borland 工具(如 Delphi 和 C++ Builder)。例如,Visual Studio 允許設置斷點、跟蹤代碼段和查看調用堆棧。總而言之,它是一個復雜的調試環境。許多其他第三方的 ASP.NET IDE 解決方案也將必然出現。
但是ASP.NET強健性,是以損失效率為代價的。ASP.NET 在內存使用和執行時間方面耗費非常大,這大部分歸因於較長的代碼路徑。對基於 Web 的應用程序,這些局限可能是一個嚴重的問題,因為在 Web 上,您的應用程序可能擴展為每秒成千上萬的用戶。內存使用率還可能成為 Web 伺服器上的一個問題。
什麼是 PHP
PHP 是基於預處理 HTML 頁面模型的一種腳本語言。當 Web 伺服器中的 PHP 預處理器發現像下面這樣的 PHP 語言標記時,將調用 PHP 引擎來執行該代碼:
<?php
代碼
?>
使用過命令式編程語言的編程人員都將會對 PHP 非常熟悉;您會發現它與 Perl、C 和 Java 在語法上很相似。嚴格來講,Java 是一種命令式編程語言,但它也利用了面向對象的結構和概念。PHP 在適宜的時候借鑒了這種結構,但它不是一種純粹的 OOP 語言。
在上面對 ASP.NET 的討論中,我提到了 ODBC 驅動程序,以及在考慮資料庫抽象的情況下如何構建應用程序。在 PHP 中,您也可以使用 ODBC 與資料庫對話,因此您已經有了一系列支持的資料庫可供選擇。也有 MySQL、Oracle 和 Postgres 的原生驅動程序。此外,如果要使用 Oracle,則有一個特殊的 OCI8 庫將提供對 Oracle 更多訪問功能,從而允許您使用諸如 LOB、BLOB、CLOB 和 BFILE 之類的特性。
這時您可能會問「為什麼與資料庫相關的資料庫被稱為 PHP 的特性?」資料庫抽象或獨立性是您在設法構建使用多種資料庫或需要在資料庫間移植(例如,從開發到投產時的移植)的應用程序時所要考慮的一個因素。而這些確實是應該關心和考慮的。
但正如 Tom Kyte 在他的新書 — Effective Oracle by Design (Oracle 出版社) — 中指出的那樣,資料庫相關性將成為您真正的目標,因為這將使您在該技術中的投資最大化。如果您對 Oracle 進行一般的訪問 — 無論通過 ODBC 或 Perl 的 DBI 庫,那麼您將無法使用其他資料庫所不具有的特性。此外,優化查詢在各個資料庫中各不相同。
Zend Technologies 是一家商業軟體公司,它對 PHP 作出了重大貢獻。它創建了一個稱為 Zend Studio 的商業開發環境,這個環境包含了一個復雜的調試器、一個監測器和其他特性。該公司還構建了免費的 Zend Optimizer,它與 Zend Encoder 結合使用來編譯 PHP 代碼,以提升性能。還有其他商業產品,如 Zend Performance Suite,它可以緩存預編譯的 PHP 頁面,從而進一步顯著提升總體性能。
優勢和弱點
到測試版 4 為止,PHP 5 仍然有一些缺點,包括缺少異常和基於事件的錯誤處理常式 — 它們能夠中斷正常的程序流,並將代碼跳轉到一個特殊的錯誤處理部分。Java 也提供了用於錯誤處理的異常,而 C++ 通過 try、catch 和 throw 語法提供異常處理。當然,您仍然可以在 PHP 中管理錯誤,但其結構不是標准化的,因而使得編程人員必須使用自己的工具來決定執行錯誤處理的方式,這將導致更低的一致性並往往導致推倒重來。
另一個弱點是 PHP 的函數名是不區分大小寫的。雖然這不是一個嚴重的缺點,但有些程序員可能會覺得這一特性很討厭。
不過,我的確對 PHP 的對象模型心存疑慮。PHP 不是專門設計為一種面向對象的語言。這些特性中的一部分是後來添加的 — 盡管注意了保持與 PHP 3 的後向兼容性,因此兩種模型的特性都留有一些。實際上,在 PHP 5 中這些弱點中的許多都得到了解決。請留心關注。
PHP 在一些領域中缺少什麼,它就會在擅長的領域中迅速地彌補什麼。價格合理,因此您不需要擔心許可問題。它也是開放源代碼的,因此整個社區將密切關注開發過程:發現錯誤並將其修復。如果有一個特性您不喜歡,那麼您可以修改代碼。此外,PHP 可與 Apache 自然結合:它可以作為一個模塊編譯,或直接編譯成 Apache 二進制文件。
但在 Apache 上運行意味著,利用 PHP,您能夠利用您已經在任意伺服器投資,這是因為 Apache 能夠運行在 Windows、Linux、Solaris 和各種其他 Unix 平台上。此外,使用擁有 Apache 的跟蹤記錄的 web 伺服器意味著安全性能夠保持在最高的優先順序上。最後,PHP 擁有更小的代碼路徑,這意味著更少的分析和執行 PHP 頁面伺服器端代碼,這將帶來更高效的內存和使用率以及更快的運行。
在 PHP 5 中新增了哪些特性?
PHP 5 的第 4 個測試版在 2003 年 12 月底推出,更改日誌清楚地顯示已發現許多錯誤並已將其消除。雖然它仍在進行測試,但它的所有新特性和進步都確實值得關注。
PHP 5 的主要新成就在於它的異常處理和一個新對象,這個新對象引入的特性賦予了 PHP 真正的 OOP。異常處理無疑是 PHP 4 中最顯著的缺憾之一,而 PHP 5 對異常處理的引入無疑是一個成熟的標志。異常處理意味著您在您的軟體中擁有了根據語言定義的和標准化的錯誤處理方法。只需使用 try、catch 和 throw 方法,您的 PHP 代碼就變得更加強健和簡潔。
<?php
class blue {
function openFile ($inFile) {
if (file_exists ($inFile)) {
# code to open the file here
} else {
throw new Exception
("Cannot open file:$inFile");
}
}
}
$blueObj = new blue ();
try {
$blueObj->openFile ('/home/shull/file.txt');
} catch (Exception $myException) {
echo $myException->getMessage ();
# rest of exception handling code here
}
# rest of blue methods here
?>
新的對象模型為用 PHP 編寫的程序帶來許多積極的影響。在 PHP 4 中,當把將一個對象傳遞給函數或方法時,是通過值來傳遞的 — 除非您另行顯式告知 PHP。這個過程意味著必須復制對象的一個副本(內存中的所有數據結構)。這個步驟使用內存,使得訪問變慢和擁塞。而在 PHP 5 中,通常通過引用傳遞對象。
PHP 5 中新的面向對象的特性(包括構造器和析構器)值得關注。與 C++ 和 Java 相同,它們提供了一種標准方法,即通過一個構造器方法來創建對象、分配內存和執行任何必要的設置,並通過一個析構器方法來執行清理。
PHP 5 還引入了對類中方法和變數的更精細控制。在 PHP 4,一切都是公有的:您可以從類外或在繼承類中訪問您類中的變數。在 PHP 5 中,您仍然可以使變數或方法為公有,但您也可以使它們為私有,以使得只能在類本身中使用它們。還可以將它們保護起來,也就是說,可以在類內或在子類中查看方法和變數。
此外,PHP 5 引進了類型提示或更好的類型檢查。當您將一個對象傳遞給一個常式時,PHP 能夠檢查它是否是正確的類型,並在檢查失敗時產生類型不匹配錯誤。
還有其他特性(如靜態方法和變數以及抽象類)。
參考資料:http://www.webzuo.net/child_content/site_programme/php/sp_php028.php?id=123
㈦ ASP.NET和PHP有什麼區別
asp.net是微軟的東西,他的發展前途取決於微軟的態度。
在.net之前,微軟的是ASP。在微軟的大力推廣下,其看起來還是很有前途的。但現在,微軟想推廣asp.net,而ASP成了其障礙。所以從Windows Server 2003開始,微軟對ASP做了許多限制,比如上傳文件不能超過200KB等。再看看現在,微軟為了推廣Windows Vista以及最新的Windows 7,對Windows XP做了些什麼,直接對普通用戶停止了技術支持,就是為了迫使你更換。
如果以後,微軟有了比.net更好的東西。微軟估計會對.net做類似的限制,強制用戶升級。
PHP是完全開源的,其需求更貼近日常的應用,代碼風格類似於C語言,比較容易學習。
速度方面,雖然PHP不是經過編譯的,但在Linux下的實際應用的執行效率肯定要比Windows下的.net快。
運行時的安全性PHP肯定要比微軟的.net要高。不過通常代碼都是沒有保護的。通常需要用商業的Zend軟體來加密。當然這個加密的過程也是種編譯的過程。保護了代碼的同時,還提高了執行速度。新的Zend的加密演算法,目前還沒有成功破解的。而.net如果只做單純的編譯,是很容易被反編譯回來的。
PHP目前有兩個支線,一個PHP4、一個是PHP5。兩個支線都在共同的維護中。這保證過去使用PHP4的系統仍然能保證持續的良好的安全性和功能的更新。
㈧ PHP與ASP.NET優劣勢,哪個更好
PHP與ASP.NET最大的區別是php既可以在widowos下配置服務,也可以在linux下配置服務,但.net是微軟的東西,只能在windows下用,其他的就是個人所好了,連接資料庫方面PHP不如.net方便
PHP程序可以運行在UNIX、Linux或者Windows操作系統下,對客戶端瀏覽器也沒有特殊要求。PHP也是將腳本描述語言嵌入HTML文檔種,它大量採用了C、Java和Perl語言的語法,並加入了各種PHP自己的特徵。PHP的優點為:
(1)首先它是免費的,對於許多要考慮運行成本的商業網站來說,尤其重要。
(2)開發源代碼。因為這一點,所以才會有很多愛好者不斷發展它,使之更具有生命力。
(3)多平台支持,可以運行在所有操作系統之下。
(4)效率高,同ASP.net相比,PHP佔用的較少的系統資源,執行速度比較快。
PHP的缺點是:
(1)因為沒有大公司的支持,前途不如ASP、JSP和ASP.NET。
(2)運行環境相對復雜,學習起來相對復雜。
㈨ ASP和ASP.NET和PHP的區別
程序界面 PHP ASP
操作系統 均可 Win32
Web伺服器 數種 IIS
執行效率 快 快
穩定性 佳 中等
開發時間 短 短
修改時間 短 短
程序語言 PHP VB
網頁結合 佳 佳
學習門檻 低 低
函數支持 多 少
系統安全 佳 極差
使用網站 超多 多
改版速度 快 慢
另外
ASP把界面設計和程序設計混在一起,維護困難。
ASP.NET把界面設計和程序設計以不同的文件分離開,復用性和維護性得到了提高。
開發語言不同
ASP僅局限於使用腳本語言來開發,用戶給WEB頁中添加ASP代碼的方法與客戶端腳本中添加代碼的方法相同,導致代碼雜亂。
ASP.NET允許用戶選擇並使用功能完善的編程語言,也允許使用潛加巨大的.NET Framework。
運行機制不同
ASP是解釋運行的編程框架,所以執行效率加較低。
ASP.NET是編譯性的編程框架,運行是伺服器上的編譯好的公共語言運行時庫代碼,可以利用早期綁定,實施編譯來提高效率。
㈩ PHP和ASP.NET比較
PHP因為是免費的所有大多小型公司比較喜歡用,而且入門門檻比較低。ASP.NET同樣比較簡單。但是他的軟體是收費的。如果企業用盜版的被抓會死的很慘的。不過一些大型公司還是肯花這個錢的.ASP.NET雖然也可以用控制項拉出來,但是那種不易維護。而且代碼之間銜接太緊密。如果你用3層架構的話。還是要寫代碼的。