|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。 这是一个常常被提出的成绩,而且它很轻易把人们带入争辩Linux仍是Windows的邪路。如许的争辩现实上反应出了关于互相竞争的Web开辟手艺要停止并行剖析是何等坚苦的一件工作,而这一难度同时由于开辟人员对任何可对照操作体系的分歧定见而大大增添。
所以与其持续介入到如许的争辩中,咱们还不如来看看每项手艺关于特定Web开辟和运转情况所体现出的优势。虽然ASP和PHP的类似水平大于个中恣意一种与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则十分轻易上手――这类语法一样在Java、JavaScript和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――或称之为体现层――很大水平上离开了使用法式的贸易逻辑。虽然如许的分别也能够经由过程PHP和ASP来完成,但这并不是同ASP.NET一样属于本身手艺的次要局部。
ASP.NET的另外一优点是它完全的集成了对XML和Web办事的各类撑持。对.NET而言可使用十分普遍的平安和暗码体系库,这关于金融机构和企业数据使用法式尤其有效。就缺点而言,即便是具有丰厚经历的开辟人员也会发明利用.NET能够把本人弄懵懂。不思索开辟者关于所利用的编程言语的熟习水平,关于Web开辟人员来讲,在法式典范方面难度的大幅提拔能够会成为他们融入ASP.NET的次要妨碍。对ASP.NET使用法式来讲主机一样是个成绩,ASP.NET并未同ASP或PHP一样取得了主机供应商的普遍撑持,没法在统一级别上睁开竞争。
理论――言语对照
变量声明
在VBScript中(ASP和ASP.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"
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>
结论
选择ASP、PHP仍是ASP.NET将终究取决于使用法式的需求,和运转法式的体系情况。开辟人员关于类似编程言语或典范的熟习水平一样可以作为选择的要素。记住没有完善的办法和团体实践情形可以标明哪一种手艺是最好选择。好比,利用ASP.NET为一个Windows办事器创立一个单页面的表单邮件使用法式仿佛有些牛鼎烹鸡,但关于ASP来讲这是极佳的使用情况。假如一个站点需求同Linux Apache办事器上的mySQL数据库毗连,那末利用ASP或ASP.NET则会显得力所能及。假如可以提早具体思索用户的团体请求,那末开辟人员在这些互相竞争的手艺中停止选择的进程则已胜利了一半。
我先把我自己学习PHP的过程做一下概括: |
|