加入收藏 社区论坛 网站地图
 

首 页 产品&服务 新闻中心 在线下载 技术文摘 客户服务 联系我们

4 淘宝搜狐屏蔽百度 百度竞
4 微软真正的问题是忽略了
4 欧盟反垄断机构正在调查
4 点燃初秋激情天思轻量级
4 国内企业接到Autodesk公
4 洪波:淘宝封百度爬虫赌
4 淘宝屏蔽百度 李开复做“
4 中关村“染指”番茄花园
4 微软:IE8的小手脚
4 传IBM将以约40亿美元收购
4 国产厂商仅四家 市场惨淡
4 分析师:谷歌Chrome不适合
4 红帽1亿美元收购Qumrane
4 破解软件 难逃宿命
4 微软、Google口水战 隐
4 马云的"冬天"并
4 中国超70%软件企业竞争力
4 金蝶软件被爆“邮件门”
4 软件盗版:己所不欲 勿施
4 趋势科技:手机防毒做8年
4 西门子被指滥用竞争对手
4 PC厂商市场争夺两极分化
4 VMware研发经理离职投奔
4 IDC建议软件商分离技术平
4 反流氓软件联盟复出:打
4 计算机世界:山寨U盘乱花
4 ISO回绝上诉批准微软OOX
4 移动互联网是PC商下一块
4 番茄花园办案警官透露案
4 微软OOXML成国标遭反对
4 广州拟建软件盗版"黑
4 垄断行业涨薪应该有“游
4 企业IT与业务融合有可能
4 反垄断第一案被法院裁定
4 商刊:谷歌推Chrome意在打
4 Chrome意不在IE而是摧毁
4 ISEC工程师大会年底将在
4 与番茄花园有染红果公司
4 谷歌推Chrome浏览器 坦承
4 微软称谷歌推Chrome很邪
4 法官称甲骨文破坏集体诉
4 谁为软件盗版最强国 韩国
4 易趣难撼淘宝 王雷雷辞去
4 "番茄园"案外案
4 消息称微软有意起诉谷歌
4 FoxitReader福昕阅读器V
4 IT行业:低价流行的背后
4 九招助软件信息企业“活
4 北京奥运的IT遗产
4 拒绝为烂番茄叫好

 

 
 
 

 

 
所在位置:

动态网站Web开发PHP、ASP还是ASP.NET

发布时间:2007-06-11 23:29:43   点击次数:        

  这是一个经常被提出的问题,并且它很容易把人们带入争论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一样获得了主机提供商的广泛支持,无法在同一级别上展开竞争。

共5页。 1 2 3 4 5 :
  
  实践——语言比较
  
  变量声明
  
  在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;
  
  ?>

共5页。 9 1 2 3 4 5 :
  

  变量收集
  
  在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;
  
  ?>
  
  

联系我们 |  人才招聘产品答疑关于我们产品论坛

Copyright ©  2004 - 2006 All Rights Reserved   北京智联时代科技有限公司  Tel:  010 - 51286090
QQ:1000631  点击这里给我发消息
京ICP备05011984号