佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > php asp.net 比較 [推薦]

php asp.net 比較 [推薦]

熱門標(biāo)簽:智能手機(jī) 美圖手機(jī) 銀行業(yè)務(wù) 檢查注冊(cè)表項(xiàng) 鐵路電話系統(tǒng) 網(wǎng)站文章發(fā)布 呼叫中心市場(chǎng)需求 服務(wù)器配置
這些標(biāo)記告訴預(yù)處理器,它們包含代碼,并且應(yīng)對(duì)它們作出處理。與 CGI 非常相似,這些代碼在服務(wù)器上運(yùn)行,并返回一些內(nèi)容,這些內(nèi)容表現(xiàn)為發(fā)回給瀏覽器的結(jié)果 HTML 頁(yè)面的部分外觀。開放源代碼腳本語(yǔ)言 PHP 和 Microsoft 的 ASP.NET 框架中的語(yǔ)言都屬于這種類型;JavaServer Pages (JSP) 和 Perl/Mason 也以這種方式運(yùn)行。
在本文中,我將重點(diǎn)講述 PHP - Oracle 已選擇合并到其產(chǎn)品中的技術(shù) - 和 ASP.NET。我將概述兩者的各種優(yōu)勢(shì)和弱點(diǎn),并著重討論那些將幫助您決定開發(fā)項(xiàng)目應(yīng)選擇哪種技術(shù)的因素。有很多因素需要考慮,不同的項(xiàng)目可能訴諸于不同的技術(shù)??傊?,您將看到在價(jià)格、速度和效率、安全性、跨平臺(tái)支持等方面的逐項(xiàng)比較,以及開放源代碼解決方案的優(yōu)勢(shì)。
什么是 ASP.NET?
ASP 最新的版本 ASP.NET 并不完全與 ASP 早期的版本后向兼容,因?yàn)樵撥浖M(jìn)行了完全重寫。早期的 ASP 技術(shù)實(shí)際上與 PHP 的共同之處比與 ASP.NET 的共同之處多得多,ASP.NET 是用于構(gòu)建 Web 應(yīng)用程序的一個(gè)完整的框架。這個(gè)模型的主要特性之一是選擇編程語(yǔ)言的靈活性。ASP.NET 可以使用腳本語(yǔ)言(如 VBScript、JScript、Perlscript 和 Python)以及編譯語(yǔ)言(如 VB、C#、C、Cobol、Smalltalk 和 Lisp)。新框架使用通用語(yǔ)言運(yùn)行環(huán)境 (CLR);先將您語(yǔ)言的源代碼編譯成 Microsoft 中間語(yǔ)言代碼,然后 CLR 執(zhí)行這些代碼。
這個(gè)框架還提供真正的面向?qū)ο缶幊?(OOP),并支持真正的繼承、多態(tài)和封裝。.NET 類庫(kù)根據(jù)特定的任務(wù)(例如,使用 XML 或圖像處理)組織成可繼承的類。
除了編程語(yǔ)言和方法之外,數(shù)據(jù)庫(kù)訪問也是要著重關(guān)心的一個(gè)因素。當(dāng)您用 ASP.NET 編程時(shí),可以用 ODBC 來(lái)集成數(shù)據(jù)庫(kù);ODBC 提供了一組一致的調(diào)用函數(shù)來(lái)訪問您的目標(biāo)數(shù)據(jù)庫(kù)。
優(yōu)勢(shì)和弱點(diǎn)
ASP.NET 的優(yōu)勢(shì)很明顯在于它簡(jiǎn)潔的設(shè)計(jì)和實(shí)施。這是面向?qū)ο蟮木幊倘藛T的夢(mèng)想:語(yǔ)言靈活,并支持復(fù)雜的面向?qū)ο筇匦?。在這種意義下,它真正能夠與編程人員現(xiàn)有的技能進(jìn)行互操作。
ASP.NET 的另一個(gè)優(yōu)勢(shì)是其開發(fā)環(huán)境。例如,開發(fā)人員可以使用 WebMatrix(一個(gè)社區(qū)支持的工具)、Visual Studio .NET 或各種 Borland 工具(如 Delphi 和 C++ Builder)。例如,Visual Studio 允許設(shè)置斷點(diǎn)、跟蹤代碼段和查看調(diào)用堆棧??偠灾且粋€(gè)復(fù)雜的調(diào)試環(huán)境。許多其他第三方的 ASP.NET IDE 解決方案也將必然出現(xiàn)。

但您得到了強(qiáng)健性,就將以損失效率為代價(jià)。ASP.NET 在內(nèi)存使用和執(zhí)行時(shí)間方面耗費(fèi)非常大,這大部分歸因于較長(zhǎng)的代碼路徑。對(duì)基于 Web 的應(yīng)用程序,這些局限可能是一個(gè)嚴(yán)重的問題,因?yàn)樵?Web 上,您的應(yīng)用程序可能擴(kuò)展為每秒成千上萬(wàn)的用戶。內(nèi)存使用率還可能成為 Web 服務(wù)器上的一個(gè)問題。
什么是 PHP?
PHP 是基于預(yù)處理 HTML 頁(yè)面模型的一種腳本語(yǔ)言。當(dāng) Web 服務(wù)器中的 PHP 預(yù)處理器發(fā)現(xiàn)像下面這樣的 PHP 語(yǔ)言標(biāo)記時(shí),將調(diào)用 PHP 引擎來(lái)執(zhí)行該代碼:
?php
some code here
?>
任何使用過命令式編程語(yǔ)言的編程人員都會(huì)對(duì) PHP 非常熟悉;您會(huì)發(fā)現(xiàn)它與 Perl、C 和 Java 在語(yǔ)法上的相似處。嚴(yán)格來(lái)講,Java 是一種命令式編程語(yǔ)言,但它也利用了面向?qū)ο蟮慕Y(jié)構(gòu)和概念。PHP 在適宜的時(shí)候借鑒了這種結(jié)構(gòu),但它不是一種純粹的 OOP 語(yǔ)言。
在上面對(duì) ASP.NET 的討論中,我提到了 ODBC 驅(qū)動(dòng)程序,以及在考慮數(shù)據(jù)庫(kù)抽象的情況下如何構(gòu)建應(yīng)用程序。在 PHP 中,您也可以使用 ODBC 與數(shù)據(jù)庫(kù)對(duì)話,因此您已經(jīng)有了一系列支持的數(shù)據(jù)庫(kù)可供選擇。也有 MySQL、Oracle 和 Postgres 的原生驅(qū)動(dòng)程序。此外,如果要使用 Oracle,則有一個(gè)特殊的 OCI8 庫(kù)將提供對(duì) Oracle 更多訪問功能,從而允許您使用諸如 LOB、BLOB、CLOB 和 BFILE 之類的特性。
這時(shí)您可能會(huì)問"為什么與數(shù)據(jù)庫(kù)相關(guān)的資料庫(kù)被稱為 PHP 的特性?"數(shù)據(jù)庫(kù)抽象或獨(dú)立性是您在設(shè)法構(gòu)建使用多種數(shù)據(jù)庫(kù)或需要在數(shù)據(jù)庫(kù)間移植(例如,從開發(fā)到投產(chǎn)時(shí)的移植)的應(yīng)用程序時(shí)所要考慮的一個(gè)因素。而這些確實(shí)是應(yīng)該關(guān)心和考慮的。
但正如 Tom Kyte 在他的新書 - Effective Oracle by Design (Oracle 出版社) - 中指出的那樣,數(shù)據(jù)庫(kù)相關(guān)性將成為您真正的目標(biāo),因?yàn)檫@將使您在該技術(shù)中的投資最大化。如果您對(duì) Oracle 進(jìn)行一般的訪問 - 無(wú)論通過 ODBC 或 Perl 的 DBI 庫(kù),那么您將無(wú)法使用其他數(shù)據(jù)庫(kù)所不具有的特性。此外,優(yōu)化查詢?cè)诟鱾€(gè)數(shù)據(jù)庫(kù)中各不相同。
Zend Technologies 是一家商業(yè)軟件公司,它對(duì) PHP 作出了重大貢獻(xiàn)。它創(chuàng)建了一個(gè)稱為 Zend Studio 的商業(yè)開發(fā)環(huán)境,這個(gè)環(huán)境包含了一個(gè)復(fù)雜的調(diào)試器、一個(gè)監(jiān)測(cè)器和其他特性。該公司還構(gòu)建了免費(fèi)的 Zend Optimizer,它與 Zend Encoder 結(jié)合使用來(lái)編譯 PHP 代碼,以提升性能。還有其他商業(yè)產(chǎn)品,如 Zend Performance Suite,它可以緩存預(yù)編譯的 PHP 頁(yè)面,從而進(jìn)一步顯著提升總體性能。

優(yōu)勢(shì)和弱點(diǎn)
到測(cè)試版 4 為止,PHP 5 仍然有一些缺點(diǎn),包括缺少異常和基于事件的錯(cuò)誤處理例程 - 它們能夠中斷正常的程序流,并將代碼跳轉(zhuǎn)到一個(gè)特殊的錯(cuò)誤處理部分。Java 也提供了用于錯(cuò)誤處理的異常,而 C++ 通過 try、catch 和 throw 語(yǔ)法提供異常處理。當(dāng)然,您仍然可以在 PHP 中管理錯(cuò)誤,但其結(jié)構(gòu)不是標(biāo)準(zhǔn)化的,因而使得編程人員必須使用自己的工具來(lái)決定執(zhí)行錯(cuò)誤處理的方式,這將導(dǎo)致更低的一致性并往往導(dǎo)致推倒重來(lái)。
另一個(gè)弱點(diǎn)是 PHP 的函數(shù)名是不區(qū)分大小寫的。雖然這不是一個(gè)嚴(yán)重的缺點(diǎn),但有些程序員可能會(huì)覺得這一特性很討厭。
不過,我的確對(duì) PHP 的對(duì)象模型心存疑慮。PHP 不是專門設(shè)計(jì)為一種面向?qū)ο蟮恼Z(yǔ)言。這些特性中的一部分是后來(lái)添加的 - 盡管注意了保持與 PHP 3 的后向兼容性,因此兩種模型的特性都留有一些。實(shí)際上,在 PHP 5 中這些弱點(diǎn)中的許多都得到了解決。請(qǐng)留心關(guān)注。
PHP 在一些領(lǐng)域中缺少什么,它就會(huì)在擅長(zhǎng)的領(lǐng)域中迅速地彌補(bǔ)什么。價(jià)格合理,因此您不需要擔(dān)心許可問題。它也是開放源代碼的,因此整個(gè)社區(qū)將密切關(guān)注開發(fā)過程:發(fā)現(xiàn)錯(cuò)誤并將其修復(fù)。如果有一個(gè)特性您不喜歡,那么您可以修改代碼。此外,PHP 可與 Apache 自然結(jié)合:它可以作為一個(gè)模塊編譯,或直接編譯成 Apache 二進(jìn)制文件。
但在 Apache 上運(yùn)行意味著,利用 PHP,您能夠利用您已經(jīng)在任意服務(wù)器投資,這是因?yàn)?Apache 能夠運(yùn)行在 Windows、Linux、Solaris 和各種其他 Unix 平臺(tái)上。此外,使用擁有 Apache 的跟蹤記錄的 web 服務(wù)器意味著安全性能夠保持在最高的優(yōu)先級(jí)上。最后,PHP 擁有更小的代碼路徑,這意味著更少的分析和執(zhí)行 PHP 頁(yè)面服務(wù)器端代碼,這將帶來(lái)更高效的內(nèi)存和使用率以及更快的運(yùn)行。
在 PHP 5 中新增了哪些特性?
PHP 5 的第 4 個(gè)測(cè)試版在 2003 年 12 月底推出,更改日志清楚地顯示已發(fā)現(xiàn)許多錯(cuò)誤并已將其消除。雖然它仍在進(jìn)行測(cè)試,但它的所有新特性和進(jìn)步都確實(shí)值得關(guān)注。
PHP 5 的主要新成就在于它的異常處理和一個(gè)新對(duì)象,這個(gè)新對(duì)象引入的特性賦予了 PHP 真正的 OOP。異常處理無(wú)疑是 PHP 4 中最顯著的缺憾之一,而 PHP 5 對(duì)異常處理的引入無(wú)疑是一個(gè)成熟的標(biāo)志。異常處理意味著您在您的軟件中擁有了根據(jù)語(yǔ)言定義的和標(biāo)準(zhǔn)化的錯(cuò)誤處理方法。只需使用 try、catch 和 throw 方法,您的 PHP 代碼就變得更加強(qiáng)健和簡(jiǎn)潔。
?phpclass 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?>
新的對(duì)象模型為用 PHP 編寫的程序帶來(lái)許多積極的影響。在 PHP 4 中,當(dāng)把將一個(gè)對(duì)象傳遞給函數(shù)或方法時(shí),是通過值來(lái)傳遞的 - 除非您另行顯式告知 PHP。這個(gè)過程意味著必須復(fù)制對(duì)象的一個(gè)副本(內(nèi)存中的所有數(shù)據(jù)結(jié)構(gòu))。這個(gè)步驟使用內(nèi)存,使得訪問變慢和擁塞。而在 PHP 5 中,通常通過引用傳遞對(duì)象。
PHP 5 中新的面向?qū)ο蟮奶匦裕ò?gòu)造器和析構(gòu)器)值得關(guān)注。與 C++ 和 Java 相同,它們提供了一種標(biāo)準(zhǔn)方法,即通過一個(gè)構(gòu)造器方法來(lái)創(chuàng)建對(duì)象、分配內(nèi)存和執(zhí)行任何必要的設(shè)置,并通過一個(gè)析構(gòu)器方法來(lái)執(zhí)行清理。
PHP 5 還引入了對(duì)類中方法和變量的更精細(xì)控制。在 PHP 4,一切都是公有的:您可以從類外或在繼承類中訪問您類中的變量。在 PHP 5 中,您仍然可以使變量或方法為公有,但您也可以使它們?yōu)樗接?,以使得只能在類本身中使用它們。還可以將它們保護(hù)起來(lái),也就是說(shuō),可以在類內(nèi)或在子類中查看方法和變量。
此外,PHP 5 引進(jìn)了類型提示或更好的類型檢查。當(dāng)您將一個(gè)對(duì)象傳遞給一個(gè)例程時(shí),PHP 能夠檢查它是否是正確的類型,并在檢查失敗時(shí)產(chǎn)生類型不匹配錯(cuò)誤。
由于還有其他特性(如靜態(tài)方法和變量以及抽象類),因此請(qǐng)務(wù)必查看文檔,以獲取詳細(xì)信息。
安全性比較
ASP.NET 官方要求您使用 IIS。不幸的是,IIS 易受攻擊的歷史由來(lái)已久,這使得許多管理員不愿意部署它來(lái)處理 Web 站點(diǎn)。這些弱點(diǎn)是因?yàn)?Microsoft 的缺陷或是因?yàn)?IIS 是黑客們攻擊的目標(biāo)無(wú)關(guān)緊要:這些系統(tǒng)有被黑或被攻擊的歷史。PHP 也運(yùn)行在 Apache 上,Apache 快速并且是開放源代碼的,并擁有很好的安全性記錄。此外,正如我提到過的,Apache 可以在許多平臺(tái)上運(yùn)行。
如果您在考慮 ASP.NET,但您想用 Apache 作為 Internet 門戶,那么很幸運(yùn)您可以有一些選擇。首先,您可以使用 Apache 將請(qǐng)求轉(zhuǎn)發(fā)給在另一臺(tái)計(jì)算機(jī)上內(nèi)部運(yùn)行的 IIS。然后 Apache 處理靜態(tài)內(nèi)容,并將 aspx 內(nèi)容傳送給 IIS 服務(wù)器(不暴露給 Internet)。
不過,如果您想利用 Apache 承載 ASP.NET,那么提供了一些選項(xiàng),這些選項(xiàng) Microsoft 可能支持也可能不支持。作為最后一種選擇,有 Ximian 的 Project Mono,它致力于構(gòu)建一個(gè)開放源代碼模塊。請(qǐng)瀏覽 http://www.go-mono.com/,以獲取更多信息。
數(shù)據(jù)庫(kù)編碼示例
您在選用 PHP 或 ASP.NET 時(shí)首先要考慮因素之一就是與數(shù)據(jù)庫(kù)的連接。不過,利用 ASP.NET 更復(fù)雜,因?yàn)槟梢詮脑S多備選語(yǔ)言中選擇任意一種語(yǔ)言。當(dāng)然,這些代碼示例將必須嵌入到 HTML 頁(yè)面、實(shí)例化的類等之中。不過,以下信息將使您對(duì)二者的編碼風(fēng)格有所了解。
PHP 5 與 Oracle 連接
下面是一個(gè) PHP 5 類,它提供了一個(gè) Oracle 連接和斷開例程,用以演示利用 PHP 5(也可以使用其他驅(qū)動(dòng)程序(如 ODBC 驅(qū)動(dòng)程序)和通用的數(shù)據(jù)庫(kù)接口)與 Oracle 連接的一種方式:
class oracle_object {
protected $theDB;
protected $user;
protected $pass;
protected $db;
function __construct($u, $p, $d) {
$this->user = $u;
$this->pass = $p;
$this->db = $d;
}
function db_open () {
$theDB = @OCILogon($this->user, $this->pass, $this->db);
db_check_errors($php_errormsg);
}
function db_close() {
@OCILogoff($theDB);
db_check_errors($php_errormsg);
}
function __destruct () {
print ("so long...");
}
}
ASP.NET 與 Oracle 連接
如果您希望利用 VB.NET(Visual Basic 是 Microsoft 的默認(rèn) .NET 編程語(yǔ)言)與 Oracle 連接,那么請(qǐng)看一下這個(gè)來(lái)自 MSDN 的示例:
Imports System
Imports System.Data
Imports System.Data.OracleClient
Imports Microsoft.VisualBasic
Class Sample
Public Shared Sub Main()
Dim oraConn As OracleConnection = New OracleConnection
("Data Source=MyOracleServer;Integrated Security=yes;")
Dim oraCMD As OracleCommand = New OracleCommand
("SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER", oraConn)
oraConn.Open()
Dim myReader As OracleDataReader = oraCMD.ExecuteReader()
Do While (myReader.Read())
Console.WriteLine(vbTab "{0}" vbTab "{1}",
myReader.GetInt32(0), myReader.GetString(1))
Loop
myReader.Close()
oraConn.Close()
End Sub
End Class

作出選擇
假定您還沒有決定選用 PHP,我可以斷言 PHP 的優(yōu)勢(shì)遠(yuǎn)遠(yuǎn)超過它的弱點(diǎn)。(請(qǐng)參見表 1 中的概要。)這些優(yōu)勢(shì)歸結(jié)為價(jià)格、速度和效率、安全性、跨平臺(tái)適用性和開放源代碼機(jī)遇。它惟一的弱點(diǎn)是缺少一種純粹和完美的 OOP 實(shí)現(xiàn),不過,這是一個(gè)很小的缺點(diǎn)。雖然語(yǔ)言結(jié)構(gòu)的確有幫助,但好的編碼最終是由實(shí)踐、執(zhí)行、好的習(xí)慣和規(guī)范帶來(lái)的。
PHP與ASP.NET的比較
表 1
PHP 4 PHP5 ASP.NET
軟件價(jià)格 免費(fèi) 免費(fèi) 免費(fèi)
平臺(tái)價(jià)格 免費(fèi) 免費(fèi) $
速度 強(qiáng) 強(qiáng) 弱
效率 強(qiáng) 強(qiáng) 弱
安全性 強(qiáng) 強(qiáng) 強(qiáng)
平臺(tái) 強(qiáng) 強(qiáng) 弱(僅用于IIS)
平臺(tái) 任意 任意 win32(僅用于IIS)
是否提供源代碼 是 是 否
異常 否 是 是
OOP 弱 強(qiáng) 強(qiáng)
價(jià)格
在此,我們不應(yīng)簡(jiǎn)單地考慮初始投資 - 對(duì) PHP 而言,這很明顯是免費(fèi)的 - 還應(yīng)考慮實(shí)施、維護(hù)和調(diào)試的成本。對(duì) PHP 而言,您可能需要購(gòu)買 Zend 優(yōu)化引擎。然而,使用 ASP,您將從一開始就進(jìn)行投資,而且您還要為附加的技術(shù) - 例如,執(zhí)行圖形處理的庫(kù) - 支付費(fèi)用。但從長(zhǎng)遠(yuǎn)來(lái)看,PHP 將不會(huì)逼迫您升級(jí)并向您收取更多的許可費(fèi)用。接觸過復(fù)雜許可的每一個(gè)人都知道,很多公司花費(fèi)大量的時(shí)間和金錢僅是為了確保其順應(yīng)性。此外,當(dāng)在獲得錯(cuò)誤修復(fù)的時(shí)間上,您得到的反應(yīng)也有所不同。這當(dāng)然將轉(zhuǎn)化成時(shí)間,時(shí)間又將轉(zhuǎn)化成總體開發(fā)的成本。
速度和效率
正如我先前提到的,ASP.NET 是一個(gè)允許您使用各種編程語(yǔ)言的框架。此外,它據(jù)稱擁有一個(gè)極好的面向?qū)ο竽P汀1M管所有這些都是真的,但在考慮到速度時(shí),它卻是不利的?;谝陨显?,在 ASP.NET 中運(yùn)行 ASP 頁(yè)面與在 PHP 引擎中運(yùn)行等效的 PHP 頁(yè)面相比需要執(zhí)行更多代碼。PHP 是一種"快速粗糙"的解決方案,是為完成工作而設(shè)計(jì)的解決方案。雖然自 2.0 和 3.0 版本以來(lái)為其增強(qiáng)了許多強(qiáng)健性,但它仍然保留著核心的優(yōu)化的高速方法。
速度不是惟一要考慮的因素。內(nèi)存使用率也很重要。
安全性
ASP.NET 運(yùn)行在 IIS 上,而 IIS 已被攻擊了無(wú)數(shù)次 - 正如每隔一周的 IT 新聞報(bào)告所證實(shí)的。它已經(jīng)成為這樣一種負(fù)擔(dān),實(shí)際上,盡管其耗巨資進(jìn)行銷售宣傳,但許多 IT 專業(yè)人員仍然拒絕用 IIS Web 服務(wù)器來(lái)開放他們的網(wǎng)絡(luò)。而 PHP 使用 Apache。Apache 擁有已被證明的速度、可靠性和穩(wěn)固的安全性的記錄。請(qǐng)瀏覽 http://www.securityfocus.com/,以獲取更多信息。
跨平臺(tái)適用性
ASP.NET 在 IIS 上運(yùn)行,并且開始在 Apache 上運(yùn)行(Apache 能夠在許多平臺(tái)上運(yùn)行)。PHP 從一開始就設(shè)計(jì)用于和 Apache 一起工作,因此您擁有許多可供選擇的已被證明和可靠的服務(wù)器平臺(tái)。
開放源代碼機(jī)遇
開放源代碼并不只靠一些異想天開的編程人員或想要節(jié)省一些許可費(fèi)用的公司來(lái)開展。當(dāng)您處理軟件本身的錯(cuò)誤時(shí),開放源代碼可能成為真正的天賜之物。
在使用 PHP 或 ASP.NET 的情況下,您都會(huì)有一個(gè)大的用戶群,他們使用軟件并且可能遇到錯(cuò)誤。使用 ASP.NET,這些錯(cuò)誤必須通過一個(gè)官方程序來(lái)通知、修復(fù)、測(cè)試,并在一個(gè)新的補(bǔ)丁或版本中消除。然而,PHP 補(bǔ)丁可以快速地得到修補(bǔ)并發(fā)布。目睹開放源代碼發(fā)展的任何人都知道,新的版本和補(bǔ)丁通常在幾天內(nèi)而不是像商業(yè)軟件一樣在幾個(gè)星期或幾個(gè)月內(nèi)推出。如果這不夠快,那么您通常可以自己來(lái)修補(bǔ)問題(如果必要的話)。
PHP在WEB開發(fā)領(lǐng)域的優(yōu)勢(shì)
你當(dāng)前的位置:嘟妖老 --> 技術(shù)文檔全集 在多數(shù)WEB開發(fā)者眼中,ASP和JSP都被認(rèn)為是領(lǐng)跑者,而PHP卻被認(rèn)為是個(gè)弱小的"掙扎者",或者說(shuō)它是一門被貶低為業(yè)余者才使用的語(yǔ)言,不值得參與企業(yè)WEB開發(fā)的競(jìng)爭(zhēng)。在我看來(lái),PHP沒有被當(dāng)作競(jìng)爭(zhēng)者的理由是評(píng)論者缺乏對(duì)它的了解,而且也不了解用于WEB開發(fā)的其他操作系統(tǒng)。和一些觀點(diǎn)相反,WINDOWS不再占有WEB虛擬主機(jī)服務(wù)市場(chǎng)的最大份額,我猜想它在WEB開發(fā)這一領(lǐng)域里也在被摧城拔寨。
在企業(yè)開發(fā)里為什么沒有PHP?
很顯然,PHP被認(rèn)為落后ASP和JSP太多,以至于它是沒有什么用的,但是這恰恰與事實(shí)不符。PHP本身就是一門強(qiáng)大的語(yǔ)言。它事實(shí)上在每個(gè)發(fā)行版的 LINUX上都有,在MAC OS X上也有。獲取開發(fā)和使用PHP代碼的構(gòu)件(BUILDING-BLOCK)工具和軟件都是免費(fèi)的。用于開發(fā)PHP應(yīng)用程序的商業(yè)集成開發(fā)環(huán)境(COMMERCIAL INTEGRATED DEVELOPMENT ENVIRONMENTS,IDES)也可以找到這樣的工具有KOMODO(它運(yùn)行在LINUX和WINDOWS上)和ZEND STUDIO(這個(gè)應(yīng)用程序能夠運(yùn)行在任何帶有JAVA運(yùn)行環(huán)境的操作系統(tǒng)上)。你幾乎可以在每個(gè)WEB虛擬主機(jī)上運(yùn)行由PHP建立的網(wǎng)站,而不要考慮服務(wù)器所運(yùn)行的是什么操作系統(tǒng),這一事實(shí)讓PHP更加具有吸引力。
PHP能夠提供什么?
先把PHP周圍有什么忘掉一會(huì)兒,而考慮一下PHP自身能夠提供什么。它是一門強(qiáng)健的服務(wù)器端語(yǔ)言,能夠提供相當(dāng)多的功能,而且能夠迅速地為頁(yè)面提供服務(wù)。
容易使用
使用C或者PERL或者具有類似風(fēng)格和句法的另一種語(yǔ)言的任何用戶都能夠很快上手PHP。盡管它是設(shè)計(jì)用在WEB上的,但是它也能夠作為命令行語(yǔ)言使用。你正在編寫的WEB應(yīng)用程序需要每個(gè)小時(shí)或者每天執(zhí)行一次某些代碼嗎?使用CRON或者類似的計(jì)劃安排管理器,你可以計(jì)劃安排PHP代碼在你希望的時(shí)候執(zhí)行,使用普通的命令解釋腳本或者批處理文件就能夠執(zhí)行這樣的代碼。不需要自動(dòng)調(diào)用瀏覽器就能夠查看專門的網(wǎng)頁(yè),從而執(zhí)行你的事件,也沒有必要依賴來(lái)訪者的點(diǎn)擊來(lái)告訴你的系統(tǒng):特定的代碼需要在特定的時(shí)候被執(zhí)行。PHP在這一領(lǐng)域可擴(kuò)展性的事實(shí)是絕對(duì)具有吸引力的。
PHP的好處
我不是JSP或者ASP的老手,在此我也不想貶低這些語(yǔ)言。相反,我會(huì)把注意力放在PHP的好處上。
本地化
PHP 讓你能夠?yàn)榫W(wǎng)站的訪問者提供本地化的服務(wù)。當(dāng)用戶點(diǎn)擊進(jìn)入網(wǎng)站的時(shí)候,網(wǎng)站會(huì)根據(jù)他們?yōu)g覽器的設(shè)置自動(dòng)地以其母語(yǔ)向其提供頁(yè)面。要實(shí)現(xiàn)這一點(diǎn)不需要使用用于語(yǔ)言翻譯的煩雜文件,而是使用和本地化的C程序所具有的相同能力,通過一個(gè)叫做GETTEXT的系統(tǒng)實(shí)現(xiàn)的。如果被請(qǐng)求的語(yǔ)言文件存在,那么用戶所看到的文本就是其母語(yǔ);如果語(yǔ)言文件不存在,那么文本就是缺省的英語(yǔ)或者其他任何你所指定的語(yǔ)言。許多本地化的UNIX應(yīng)用程序都將GETTEXT作為標(biāo)準(zhǔn),它讓第三方的翻譯變得輕而易舉。
輕易地使用命令行
PHP支持在需要的地方設(shè)置和執(zhí)行命令行程序。使用標(biāo)準(zhǔn)的UNIX DIFF工具,它能夠生成錯(cuò)誤最后一次修改同要使用電子郵件發(fā)送到錯(cuò)誤的所有者的當(dāng)前注釋之間的不同。PHP代碼對(duì)在系統(tǒng)上所編寫的兩個(gè)文件執(zhí)行 DIFF,將其輸出作為輸入,再生成一個(gè)要發(fā)送的電子郵件。這封電子郵件是通過PHP自己來(lái)發(fā)送的。
其他好處
上面的只是我在自己程序里所用到的強(qiáng)大功能中的兩個(gè),而還其他的功能。例如,你可以:
即時(shí)創(chuàng)建簡(jiǎn)單的FLASH動(dòng)畫。
即時(shí)創(chuàng)建PDF文檔。
使用高級(jí)數(shù)學(xué)功能,以及面向?qū)ο蟮木幊碳夹g(shù)。
讀取和寫入到本地和IMAP郵箱。
在PHP里就可以使用任何標(biāo)準(zhǔn)的INTERNET協(xié)議。想要編寫基于PHP的FTP、WEB或者新聞客戶端?沒有問題!只使用PHP你就完全能夠編寫出使用標(biāo)準(zhǔn)TCP/IP套接字的客戶端和服務(wù)器,并以此創(chuàng)建自己的協(xié)議。
實(shí)現(xiàn)對(duì)加密的支持,以及對(duì)各種數(shù)據(jù)庫(kù)服務(wù)器的支持。
缺乏遠(yuǎn)見的評(píng)論
我覺得,那些尋找頂級(jí)WEB開發(fā)語(yǔ)言而排除掉PHP的人是極其短見的。我使用PHP編寫代碼已經(jīng)有很多年了,無(wú)論是像錯(cuò)誤追蹤系統(tǒng)這樣的高級(jí)功能,還是簡(jiǎn)單地重復(fù)使用頁(yè)眉和頁(yè)腳這樣的普通功能,我都使用PHP編寫過。我用PHP編寫過半靜態(tài)的頁(yè)面,也編寫過全功能的多媒體演示。我不是唯一一個(gè)使用 PHP的人。如果PHP不值得引起注意,如果它只是小兒科或者愛好者的語(yǔ)言,那它為什么會(huì)是在WEB開發(fā)上成長(zhǎng)最快的語(yǔ)言呢?如果它沒有ASP或者JSP 那么強(qiáng)大,那么它為什么會(huì)被用在流量巨大WEB網(wǎng)站上?例如YAHOO,據(jù)說(shuō)它就是由PHP建成的。
開發(fā)人員習(xí)慣用熟悉的產(chǎn)品
我敢肯定,ASP 和JSP有它們各自的強(qiáng)項(xiàng),但是我相信人們是用它們不是因?yàn)樗鼈兡軌蛱峁┍萈HP更加強(qiáng)大的功能,而是因?yàn)槿藗円呀?jīng)了解了它們,并希望以自己習(xí)慣的方法編寫代碼。排除PHP只能表示對(duì)這一語(yǔ)言的無(wú)知。
您可能感興趣的文章:
  • ASP.NET、ASP、PHP、JSP之間有什么區(qū)別?
  • 服務(wù)器完美設(shè)置,支持asp php cgi jsp asp.net mysql!
  • flash與asp/php/asp.net通信的方法
  • asp,asp.net,php,jsp下的301轉(zhuǎn)向代碼
  • 支付寶 接口開發(fā)幫助(asp,php,asp.net,jsp)
  • asp.net php asp jsp 301重定向的代碼(集合)
  • 301重定向代碼合集(iis,asp,php,asp.net,apache)
  • PHP中調(diào)用ASP.NET的WebService的代碼
  • IIS7 配置大全(ASP.NET 2.0, WCF, ASP.NET MVC,php)
  • win2008 r2 服務(wù)器環(huán)境配置(FTP/ASP/ASP.Net/PHP)
  • 盤點(diǎn)PHP和ASP.NET的10大對(duì)比!

標(biāo)簽:樂山 紅河 河南 新疆 滄州 上海 沈陽(yáng) 長(zhǎng)治

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php asp.net 比較 [推薦]》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    鲁甸县| 扎兰屯市| 黄大仙区| 遂川县| 宿迁市| 石嘴山市| 永宁县| 小金县| 七台河市| 独山县| 泰和县| 科技| 佳木斯市| 华阴市| 梅河口市| 洞口县| 清徐县| 昌黎县| 东乌珠穆沁旗| 灌阳县| 格尔木市| 兴义市| 西青区| 阜阳市| 内乡县| 邵阳县| 宿州市| 云和县| 汾阳市| 门头沟区| 岢岚县| 武山县| 通渭县| 宁阳县| 巴彦县| 永平县| 化德县| 牟定县| 高台县| 陇西县| 阿拉尔市|