动态网站web开发 PHP、ASP还是ASP.NET
这是一个经常被提出的问题,并且它很容易把人们带入争论Linux还是Windows的歧途。这样的争论事实上反映出了对于相互竞争的Web开发技术要进行并行分析是多么困难的一件事情,而这一难度同时因为开发人员对任何可比较操作系统的不同意见而大大增加。 基本理论――特点概述 第二点,由于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.NET 对于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 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; ?>
' 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>
// 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 } } ?> 连接数据库
<% '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制作静态网站的模板框架
- 下一篇:一个简单的自动发送邮件系统(三)