一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

動態網站web開發 PHP、ASP還是ASP.NET

    這是一個經常被提出的問題,并且它很容易把人們帶入爭論Linux還是Windows的歧途。這樣的爭論事實上反映出了對于相互競爭的Web開發技術要進行并行分析是多么困難的一件事情,而這一難度同時因為開發人員對任何可比較操作系統的不同意見而大大增加。

    所以與其繼續參與到這樣的爭論中,我們還不如來看看每一項技術對于特定Web開發以及運行環境所表現出的優勢。盡管ASPphp的相似程度大于其中任意一種與ASP.NET的相似程度,我們還是要討論ASP.NET。原因是開發人員常常將其與ASP相混淆,并且在微軟的努力下ASP.NET的確會在將來完全取代ASP

基本理論――特點概述
php――超文本預處理器(Hypertext Pre-processor)
php是開放源代碼服務器端的腳本語言,在語法上同C語言非常類似。盡管最初是被設計用于基于Linux的Apache Web 服務器系統,現在的php已經被移植到了任何操作系統并兼容任何標準Web服務器軟件。由此也可以得出php的三大主要優勢。首先它是跨平臺的技術,因此php應用程序可以被方便的移植――當然這還要取決于諸如廠商特定數據庫等需要集成的額外組件。這樣的可移植性還帶來了另一方面的優勢,即絕大部分的Web主機提供商都會支持php,因此根據需要更改主機將會非常方便。

第二點,由于php同C編程語言有很多相似之處,對于熟悉相關語法的開發人員來說,php則非常容易上手――這種語法同樣在JavaJavaScript以及Perl中得到應用。第三,由于是開放源代碼產品,php將繼續快速發展,更為重要的是相關漏洞補丁將免費的定期植入到核心庫中。

此外,在一些特定的編程需求下,php對于開發人員顯示出了更為誘人的吸引力。首先,php有內建庫支持對于圖片及PDF文檔的直接創建和相關操作。這意味著當一個應用程序調用包含有anti-aliased類型文本的動態創建菜單圖像,或者是需要導出Acrobat格式頁面時,php都將是解決此類問題的理想技術。盡管這些功能在理論上也可以通過其他與php相競爭的技術獲得,但往往其他技術需要安裝第三方自定義組件才能實現。

另一點使得php成為編寫服務器腳本最佳選擇的是在處理連接mySOL或者Postgres數據庫一類的問題時php的良好表現。盡管對于mySOL或者Postgres數據庫的訪問可以通過ASP技術借助ODBC連接來實現,但這常常需要系統管理員進行額外的配置。幸運的是,這點限制在ASP.NET中得到了改正,當需要建立類似于使用MS SQL Server的直接數據庫連接時可以通過mySQL提供數據。

ASP――動態服務頁面(Active Server Pages)
微軟將ASP引入Windows NT Server 4并將其作為IIS Web服務器下的動態Web應用程序的默認使用平臺。由于它使用VBScript(Visual Basic語言的一個分支),ASP立即被熟悉Microsoft IDE――Visual Studio編程的開發人員所追捧。隨著腳本語言的不斷發展,研究人員對ASP并沒有引入太多功能使之加入到技術競爭的行列。因此,在php中可以看到的諸如圖像操作等功能沒有集成到ASP中。但開發人員仍然可以通過DLL文件的形式編寫(或者安裝)第三方COM對象來完成類似的工作。在服務器自身允許的情況下,通過這種方式可以編寫代碼來完成任何動作。當然,造成的缺陷是這將導致為了配置這些服務開發人員不得不與桌面系統進行交互――對于Web開發人員來說這項功能并不是必須的。

ASP的優勢是在企業環境中微軟服務器幾乎無處不在。此外,MS SQL Server同樣具有廣泛的市場,并且能很好的支持ASP(這并不會讓人感到驚奇)。盡管事實上通過ODBC可以兼容任何數據來源,但SQL Server以及文件DSN訪問(file DSN access)可以在代碼一級得到實現。

ASP.NET
是選擇ASP還是php的爭論正在隨著.NET的崛起而越來越顯得多余。的確,過去長達數年的爭論將隨著是選擇Java還是.NET技術(或是兩者)答案的揭曉而終結。ASP以及ASP.NET的唯一聯系是二者都使用VBScript。而單獨就.NET而言,它可以使用VBScript以及其他大約20種語言。

對于ASP以及php來說,將ASP.NET看作是另外一種語言的原因是它運行在完全不同的構架之上。前者是翻譯腳本語言,而.NET則是經過編譯的framework。這就意味著首先Web頁面的運行速度將會有極大提高。同時,源代碼更加安全且更為健壯。此外,ASP.NET給Web編程帶來了新的理念――即“code-behind頁面”的思想。按照code-behind思想,每一個HTML頁面都是由自身經過編譯的程序化指令進行驅動。因此,HTML――或稱之為表現層――很大程度上脫離了應用程序的商業邏輯。盡管這樣的分離也可以通過phpASP來實現,但這并非同ASP.NET一樣屬于自身技術的主要部分。

ASP.NET的另一好處是它完整的集成了對XML以及Web服務的各種支持。對.NET而言可以使用非常廣泛的安全以及密碼系統庫,這對于金融機構和企業數據應用程序尤為有用。就缺陷而言,即使是具備豐富經驗的開發人員也會發現使用.NET可能把自己搞糊涂。不考慮開發者對于所使用的編程語言的熟悉程度,對于Web開發人員來說,在程序范例方面難度的大幅提升可能會成為他們融入ASP.NET的主要障礙。對ASP.NET應用程序來說主機同樣是個問題,ASP.NET并未同ASP或者php一樣獲得了主機提供商的廣泛支持,無法在同一級別上展開競爭。

實踐――語言比較
變量聲明

 
在VBScript中(ASPASP.NET都使用VBScript),在使用變量之前并不一定要對其進行聲明,盡管技術文檔通常建議這么做。使用Option Explicit聲明,開發人員可以通過程序強制進行變量聲明。在php中,變量可以被聲明,盡管沒有辦法強制開發人員做到這點。的確,在使用之前變量都自動進行聲明。php變量的優點在于變量可以被設置成為其他變量的引用(references),而在VBScript中變量只能通過值來定義。


<%

' VBScript Example

Option Explicit

myVar = 1

myOtherVar = myVar

myVar = 2

 

' myResult will be 3

myResult = myVar + myOtherVar

%>

 

<?

// php Example

$myVar = 1;

'Use the ampersand to make a reference

$myOtherVar = &$myVar;

$myVar = 2;

// $myResult will be 4

$myResult = $myVar + $myOtherVar;

?>


變量收集
php以及ASP中使用表單以及query string變量的方法非常相似。有很多辦法可以訪問表單以及query string變量的集合,例如通過name或者將其作為數組。在ASP.NET中情況則有很多不同,尤其是對于表單域。不同于盲目的尋找提交過的表單變量,code-behind可以對HTML頁面中的每一個表單域了如指掌,并可以按照任何已知事件的執行為條件觸發對這些表單域的值進行檢查。其中一個事件是“postback”,當表單被用戶提交時此事件被觸發。其他的事件可以是客戶端的程序,并且可以通過JavaScript來觸發。在ASP.NET中,二者沒有性質上的區別。

 
<%

' ASP Example

myFormVal = request.form("myInputField")

myQSval = request.querystring("myQSitem")

myVal = request.item("myFormOrQSitem")

%>

 

<?

// php 4.1+ Example

$myFormVal = $_POST['myInputField'];

$myQSval = $_REQUEST['myQSitem'];

 

// php 3+ Example

$myFormVal = $HTTP_POST_VARS['myInputField'];

 

// If register_globals = on

$myVal = $myFormOrQSitem;

?>

 

<!-- ASP.NET example -->

<html>

<script language="VB" runat=server>

Sub SubmitBtn_Click(Sender As Object, E As EventArgs)

Message.Text = "Hello " & Name.Text

End Sub

</script>

<body>

<form action="action.ASPx" method="post" runat="server">

Name: <ASP:textbox id="Name" runat="server"/>

<ASP:button text="OK" OnClick="SubmitBtn_Click"

runat="server"/>

<ASP:label id="Message" runat="server"/>

</form>

</body>

</html>


字符串連接(String Concatenation)
 php似乎對此問題給予了足夠的重視,它允許將變量插入到字符串中而無需考慮通常的串連(Concatenation)問題。ASP.NET則把整個過程弄得比較麻煩,需要借助其StringBuilder類,但由此ASP.NET的運行速度也會快很多。

 
<?

// php Example

$link = mysql_connect("host", "user", "password")or die("mysql_error());

mysql_select_db("database") or die("Could not select database");

$query = "SELECT * FROM Table";

$result = mysql_query($query) or die(mysql_error());

 

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

foreach ($line as $col_value) {

//do something

}

}

?>

連接數據庫
對于數據庫的連接問題,每種技術都表現出了各自突出的規范性。首先,每種情況都要建立到數據庫的連接。對于php,在建立之后選擇數據庫(對于ASP以及ASP.NET則將在連接階段完成)。隨后將建立一個詢問,并將其傳送給數據庫,由此可能產生也可能不會產生一條返回記錄。

 
由于在本質上ASP.NET更為以對象為導向,并且支持復雜的錯誤處理(error handling),因此無論是相對于php還是ASP,在完成簡單任務方面ASP.NET可能會需要編寫更多的代碼。但在優勢方面,ASP.NET完成顯示數據功能所需要的代碼則大大少于php以及ASP――尤其如果使用內建的datagrid控制來自動創建HTML輸出。

<%

'ASP Example

Set objConn = Server.CreateObject("ADODB.Connection")

objConn.Open "Driver={SQL Server};Server=MyServerName;" & _

"Database=myDatabaseName;Uid=;Pwd="

 

const strSQL = "SELECT * FROM Table" Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.OpenstrSQL, objConn

Do While Not objRS.EOF

'do something

objRS.MoveNext

Loop

%>

 

' ASP.NET Example

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.SqlClient" %>

 

<html>

<script language="VB" runat="server">

Sub Page_Load(Sender As Object, E As EventArgs)

Dim MyConn As SqlConnection = New SqlConnection("server=(local). . . ")

Dim MyComm As SqlCommand = New SqlCommand("select * from Table", MyConn)

MyConn.Open()

Dim dr As SqlDataReader = MyComm.ExecuteReader()

MyDataGrid.DataSource = dr

MyDataGrid.DataBind()

MyConn.Close()

End Sub

</script>

<body>

<ASP:DataGrid id="MyDataGrid" runat="server"

Width="600"

BackColor="#FFFFFF"

BorderColor="#000000"

ShowFooter="false"

CellPadding=2

CellSpacing="0"

Font-Name="Verdana"

Font-Size="8pt"

HeaderStyle-BackColor="#EEEEEE"

EnableViewState="false"

/>

</body>

</html>

結論

選擇ASPphp還是ASP.NET將最終取決于應用程序的需要,以及運行程序的系統環境。開發人員對于相似編程語言或范例的熟悉程度同樣可以作為選擇的因素。記住沒有完美的方法和個人實際情況可以表明哪種技術是最佳選擇。比如,使用ASP.NET為一個Windows服務器創建一個單頁面的表單郵件應用程序似乎有些大材小用,但對于ASP來說這是極佳的應用環境。如果一個站點需要同Linux Apache服務器上的mySQL數據庫連接,那么使用ASP或者ASP.NET則會顯得力不從心。如果能夠提前詳細考慮用戶的個人要求,那么開發人員在這些相互競爭的技術中進行選擇的過程則已成功了一半。

php技術動態網站web開發 PHP、ASP還是ASP.NET,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲欧美色鬼久久综合 | 美女毛片在线观看 | 亚洲精品日韩中文字幕久久久 | 国内精品一区视频在线播放 | 日本亚洲精品色婷婷在线影院 | 狂野欧美性猛交xxxx免费 | 国产成人免费高清激情视频 | 亚洲一区二区中文字幕 | 五月婷婷六月激情 | 成人精品区 | 久久精品久久精品久久精品 | 深爱婷婷 | 亚洲最大视频网 | 一区二区三区四区精品视频 | 天天干在线影院 | 亚洲天堂久久新 | 巨大巨粗巨长的黑吊免费视频 | 本道久久综合88全国最大色 | 四虎4hu| 国内精品久久久久久久999下 | 婷婷激情综合五月天 | 毛片一级做a爰片性色 | 久久国产影视免费精品 | 4hu永久影院在线四虎 | 97久久免费视频 | 91视频亚洲 | 青青国产成人久久激情911 | www.色在线观看 | 日韩精品中文字幕一区二区三区 | 91国在线产 | 亚洲深夜视频 | 色草在线 | 五月综合色啪 | 好吊妞在线 | 日韩 国产 欧美视频一区二区三区 | 国产美女免费观看 | 色呦 | 日本道精品一区二区三区 | 国产成在线观看免费视频 | 久久加勒比 | 99在线精品日韩一区免费国产 |