asp,asp.net,php,jsp語言的區別各自的優勢

ASP,全稱爲Active Server Pages
ASP是微軟(Microsoft)所開發的一種後臺腳本語言,它的語法和Visual BASIC類似,可以像SSI(Server Side Include)那樣把後臺腳本代碼內嵌到HTML頁面中。雖然ASP簡單易用,但是它自身存在着許多缺陷,最重要的就是安全性問題。目前在微軟的 .net 戰略中新推出的ASP.net 借鑑了Java技術的優點,使用C Sharp (C#) 語言作爲ASP.net的推薦語言,同時改進了以前ASP的安全性差等缺點。但是,使用ASP/ASP.net仍有一定的侷限性,因爲從某種角度來說它們只能在微軟的 Windows NT/2000/XP + IIS的服務器平臺上良好運行(雖然像ChilliSoft提供了在UNIX/Linux上運行ASP的解決方案,但是目前ASP在UNIX/Linux上的應用可以說幾乎爲0)。所以平臺的侷限性和ASP自身的安全性限制了ASP的廣泛應用。

ASP在執行的時候,是由IIS調用程序引擎,解釋執行嵌在HTML中的ASP代碼,最終將結果和原來的HTML一同送往客戶端。

PHP,全稱爲PHP: Hypertext Preprocessor
PHP 的全名非常有趣,它是一個巢狀的縮寫名稱——“PHP: Hypertext Preprocessor”,打開縮寫還是縮寫。PHP是一種HTML 內嵌式的語言 (就像上面講的ASP那樣)。而 PHP 獨特的語法混合了C,Java,Perl以及 PHP 式的新語法。它可以比 CGI 或者 Perl 更快速地執行動態網頁。

PHP的源代碼完全公開,在 Open Source 意識擡頭的今天,它更是這方面的中流砥柱。不斷地有新的函數庫加入,以及不停地更新,使得 PHP 無論在 UNIX 或是 Win32 的平臺上都可以有更多新的功能。它提供豐富的函數,使得在程式設計方面有着更好的資源。目前PHP的最新版本爲4.1.1 ,它可以在Win32以及UNIX/Linux等幾乎所有的平臺上良好工作。PHP在4.0版後使用了全新的Zend引擎,其在最佳化之後的效率,比較傳統 CGI 或者 ASP 等技術有了更好的表現。

平臺無關性是PHP的最大優點,但是在優點的背後,還是有一些小小的缺點的。如果在PHP中不使用ODBC,而用其自帶的數據庫函數(這樣的效率要比使用ODBC高)來連接數據庫的話, 使用不同的數據庫,PHP的函數名不能統一。這樣,使得程序的移植變得有些麻煩。不過,作爲目前應用最爲廣泛的一種後臺語言,PHP的優點還是異常明顯的。

JSP,全稱爲Java Server Pages / Servlet
JSP和Servlet要放在一起講,是因爲它們都是Sun公司的J2EE(Java 2 platform Enterprise Edition)應用體系中的一部分。

Servlet的形式和前面講的CGI差不多,它是HTML代碼和後臺程序分開的。它們的啓動原理也差不多,都是服務器接到客戶端的請求後,進行應答。不同的是,CGI對每個客戶請求都打開一個進程(Process),而Servlet卻在響應第一個請求的時候被載入,一旦Servlet被載入,便處於已執行狀態。對於以後其他用戶的請求,它並不打開進程,而是打開一個線程(Thread),將結果發送給客戶。由於線程與線程之間可以通過生成自己的父線程(Parent Thread)來實現資源共享,這樣就減輕了服務器的負擔,所以,Java Servlet可以用來做大規模的應用服務。

雖然在形式上JSP和ASP或PHP看上去很相似——都可以被內嵌在HTML代碼中。但是,它的執行方式和ASP或PHP完全不同。在JSP被執行的時候,JSP文件被JSP解釋器(JSP Parser)轉換成Servlet代碼,然後Servlet代碼被Java編譯器編譯成 .class 字節文件,這樣就由生成的Servlet來對客戶端應答。所以,JSP可以看做是Servlet的腳本語言(Script Language)版。

由於JSP/Servlet都是基於Java的,所以它們也有Java語言的最大優點——平臺無關性,也就是所謂的“一次編寫,隨處運行(WORA – Write Once, Run Anywhere)”。除了這個優點,JSP/Servlet的效率以及安全性也是相當驚人的。因此,JSP/Servlet雖然在國內目前的應用並不廣泛,但是其前途不可限量。

在調試JSP代碼時,如果程序出錯,JSP服務器會返回出錯信息,並在瀏覽器中顯示。這時,由於JSP是先被轉換成Servlet後再運行的,所以,瀏覽器中所顯示的代碼出錯的行數並不是JSP源代碼的行數,而是指轉換後的Servlet程序代碼的行數。這給調試代碼帶來一定困難。所以,在排除錯誤時,可以採取分段排除的方法(在可能出錯的代碼前後輸出一些字符串,用字符串是否被輸出來確定代碼段從哪裏開始出錯),逐步縮小出錯代碼段的範圍,最終確定錯誤代碼的位置。

JSP和ASP相比較:



運行速度、運行開銷、運行平臺、擴展性、安全性、函數支持、廠商支持、對XML的支持等等,ASP都不是JSP的對手。COM組件的複雜性實編程實現有一定的難度。而JAVABeans和JAVA的結合卻是天衣無縫的。



JSP和ASP.NET相比較:



1.相對C#,JSP的腳本語言JAVA也是面向對象的、分佈式的、解釋的語言。



2.與C#相似JAVA同樣去掉了難以理解的指針等概念,取而代之的是類和對象。



3. JSP有一項全新的技術――Servlet(服務器端程序)很好的節約了服務器資源。



4.JAVABeans是針對ASP.NET的Server Control的技術。只要會JAVA, JavaBeans就很容易寫出。



5.再有就是JAVA的JDBC數據庫連接技術。



6.JSP對XML同樣有十分廣泛的支持。



1)    面向對象性: 
    ASP+將C#作爲一種面嚮對象語言,在很多方面來看,C#將成爲微軟的與Java相似的語言。 
    C#另一個有趣的地方是所有對象都自動變成爲COM對象。如果C#能取得很大的市場份額,那麼它將給ASP+帶來類似於Java的功能,並且具備更快的性能,因爲它可以和Windows環境緊密集成。 
    C# 是ASP+開發中一個最重要的功能,微軟會將C#發展成爲Java的強勁對手。這也是他們.Net框架的一個重要組成部分。我認爲C#是微軟在編程市場上擊敗對手的主要工具。我期待着微軟能在這個產品後面傾注全力,這樣,C#可以成爲許多程序員的又一種選擇。C#產生的結果是將進一步加固微軟和Sun產品的戰線。這對用戶是有利的,他們可以選擇兩者之一來開發新的應用。 



2)      數據庫連接: 
    ASP另一個亮點是它使用ADO對象,ODBC, OLE-DB和事務處理管理器。因此ASP Web數據庫應用開發特別簡單。ASP+發展了更多的功能,因爲有了ADO+!ADO+帶來了更強大更快速的功能。JSP和JDBC目前在易用性和性能上同ASP/ADO相比已有些落後,當新版本ASP+/ADO+出現後這樣的差別會更明顯。我個人希望SUN應儘快能花大力氣來追趕ASP+/ADO+的組合。 



3)      大型站點應用: 
    ASP+將對大型站點(web farms)有更好的支持。事實上,微軟在這方面付出了巨大的努力。 ASP+可以讓你考慮到多服務器(multiple servers)的場合,當你需要更強大的功能時,僅僅只需要增加一臺服務器。整個.Net框架已經充分地提供了這個方法。ASP+提供了外部會話狀態(external session state)來提供內置式web farm的支持。另外,由於請求的各組件相互間經過了充分的優化,所以速度很快。 
於是ASP+現在可以在大型項目方面與JSP一樣具有等同的能力。 而ASP+還有價格方面的優勢,因爲所有的組件將是服務器操作系統的一部分。對於JSP,你需要購買昂貴的應用服務器羣來達到同樣的目的。



4)      ASP+還提供更多的其它方面的新特性,例如: 
*內置的對象緩存和頁面結果緩存。 
*內置的XML支持,可用於XML數據集的簡單處理。 
*服務器控制提供了更充分的交互式控制。 
ASP+確實對ASP進行了較大的發展。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章