做網站經常會(huì)遇到客戶問,.net與PHP有什麼區别靜們,哪個更好(hǎo)?以下是對各自的闡述,智者見智,用自己的方式去判斷一(y大南ī)下吧……
什麼是.NET?(.net也就是ASP.NET)
asp 最新的版本 ASP.NET 并不(bù)完全與 紙還ASP 早期的版本後向兼容,因為(wèi)該軟件進行了完全重體看寫。早期的 ASP 技術實際上與 PHP 的共同之處比與 間有ASP.NET 的共同之處多得(de)多,ASP.NET 是用北司于構建 Web 應用程序的一(yī)個完整的框架。這個模型的主要了友特性之一(yī)是選擇編程語言的靈活性。AS生如P.NET 可以使用腳本語言(如(rú) VBScript、JScript喝員、Perlscript 和 Python)以及雨窗編譯語言(如(rú) VB、C#、C、Cob照人ol、Smalltalk 和 Lisp)。新框架使用通(tōn從公g)用語言運行環境 (CLR);先将您語言的源代碼編譯成 Micros地討oft 中間語言代碼,然後 CLR 執行這月書些代碼。
這個框架還提供真正的面向對象編程 (OOP),并支持真正的繼承、多媽大态和封裝。.NET 類庫根據特定的任務(例如(r吃門ú),使用 XML 或圖像處理)組織成可繼承的類。
除了編程語言和方法之外,數據庫訪問也是要着重關心的一(yī)個因素樂我。當您用 ASP.NET 編程時(shí),可以用 ODBC 來集成數據庫;O美人DBC 提供了一(yī)組一(yī)緻的調用函數來訪問您的目木開标數據庫。
優勢和弱點
ASP.NET 的優勢很明顯在于它簡潔的設計和實唱多施。這是面向對象的編程人員的夢想:語言靈活,并支持複雜的物鄉面向對象特性。在這種意義下,它真正能夠與編程人員現有的技能進行互操作。
ASP.NET 的另一(yī)個優勢是其開(kāi)發環境。例如(r水費ú),開(kāi)發人員可以使用 WebM子路atrix(一(yī)個社區支持的工(gōng)具)、Vis關那ual Studio .NET 或各種 Borland 工(gōn店草g)具(如(rú) Delphi 和 C++ Builder訊金)。例如(rú),Visual Studio務媽 允許設置斷點、跟蹤代碼段和查看調用堆棧。總而言之,它是一(yī)個複雜農制的調試環境。許多其他(tā)第三方的 ASP.NET IDE物文 解決方案也将必然出現。
但您得(de)到了強健性,就将以損失效率為(wèi)代價。A兒短SP.NET 在内存使用和執行時(shí)間方面耗費非個土常大(dà),這大(dà)部分歸因于較長(cháng會書)的代碼路徑。對基于 Web 的應用程序,這些笑謝局限可能是一(yī)個嚴重的問題,因為(wèi)在 Web 上裡黃,您的應用程序可能擴展為(wèi)每秒成千上萬的用戶。内存國錯使用率還可能成為(wèi) Web 服務器(qì)上的一(yī)個問題。
什麼是 PHP?
PHP 是基于預處理 HTML 頁面模型的一(yī)種腳本語言。當為章 Web 服務器(qì)中的 PHP 預處理器(qì)發現像下都老面這樣的 PHP 語言标記時(shí),将調用 PHP 引擎來執行該代碼:去海
<?php
some code here
?>
任何使用過命令式編程語言的編程人員都會(huì)對 PHP 非對呢常熟悉;您會(huì)發現它與 Perl、C 和 Java 在語法上匠什的相似處。嚴格來講,Java 是一(yī)種命令式編程語言,但它也利熱林用了面向對象的結構和概念。PHP 在适宜的時(sh訊北í)候借鑒了這種結構,但它不(bù)是一(yī)種純粹的 村舊OOP 語言。
在上面對 ASP.NET 的讨論中,我提到了作通 ODBC 驅動程序,以及在考慮數據庫抽象的情況下如(rú)何身科構建應用程序。在 PHP 中,您也可以使用 ODBC 與數據庫土還對話,因此您已經有了一(yī)系列支持的數據庫可路些供選擇。也有 MySQL、Oracle 和 Postgr得唱es 的原生驅動程序。此外,如(rú)果要使用 Oracl場員e,則有一(yī)個特殊的 OCI8 庫将提供對 Oracle 光員更多訪問功能,從而允許您使用諸如(rú) LOB、BLOB、CLOB 和 BF哥上ILE 之類的特性。
這時(shí)您可能會(huì)問“為(wèi)什麼與數月日據庫相關的資(zī)料庫被稱為(wèi) 雨業PHP 的特性?”數據庫抽象或獨立性是您在設法構建使用多種數據庫或需要在數據草到庫間移植(例如(rú),從開(kāi)發到投産時(s喝了hí)的移植)的應用程序時(shí)所要考慮的一(yī)個因素。花城而這些确實是應該關心和考慮的。
但正如(rú) Tom Kyte 在他(tā)的兵熱新書 — Effective Oracle by Design (Ora妹做cle 出版社) — 中指出的那樣,數據庫相關性将成為(wèi)您司技真正的目标,因為(wèi)這将使您在該技時鐵術中的投資(zī)最大(dà)化。如(rú)果您對 Oracle 進行一(低一yī)般的訪問 — 無論通(tōng)過 ODB到山C 或 Perl 的 DBI 庫,那麼您将無法使用其他(tā)數據庫所不(b慢些ù)具有的特性。此外,優化查詢在各個數據庫中各街有不(bù)相同。
Zend Technologies 是一(yī)門冷家(jiā)商業軟件公司,它對 PHP 作出了重到算大(dà)貢獻。它創建了一(yī)個稱為(wèi) Z火門end Studio 的商業開(kāi)發環境,這個環境包含了一(yī)個作什複雜的調試器(qì)、一(yī)個監測器(qì)和其他(tā)家頻特性。該公司還構建了免費的 Zend Optimizer遠熱,它與 Zend Encoder 結合使用工舊來編譯 PHP 代碼,以提升性能。還有其他子學(tā)商業産品,如(rú) Zend Performanc火舞e Suite,它可以緩存預編譯的 PHP 頁面,從而進一(yī)步顯如著著提升總體性能。
優勢和弱點
到測試版 4 為(wèi)止,PHP 5 仍然有一(相體yī)些缺點,包括缺少異常和基于事件的錯(cuò)誤處理例月用程 — 它們(men)能夠中斷正常的程序流,并将代碼跳轉到一(yī)個化白特殊的錯(cuò)誤處理部分。Java 也提供了用于錯(cuò是白)誤處理的異常,而 C++ 通(tōng)過讀數 try、catch 和 throw 語法提供異常處理。當然,您仍然明影可以在 PHP 中管理錯(cuò)誤,但其結關了構不(bù)是标準化的,因而使得(de)編程人員必須白業使用自己的工(gōng)具來決定執行錯(cuò)誤處理的方式人技,這将導緻更低(dī)的一(yī)緻性并往往導緻章快推倒重來。
另一(yī)個弱點是 PHP 的函數名是不(bù)區分大(弟黃dà)小(xiǎo)寫的。雖然這不(bù)事少是一(yī)個嚴重的缺點,但有些程序員可能會(huì)覺得(de)這一(yī)數北特性很讨厭。
不(bù)過,我的确對