白刃之战:PHP vs. ASP.NET(节选)-架构比较

原创 2003年09月01日 08:59:00

作者:Robert Lair and Jason Lefebvr Intensity Software, Inc.

翻译:EasyChen Exlcsoft.com

概观

开发界正在进行的一个争论是PHPASP中哪一个平台更适合网站开发。这场争论由于微软的ASP.net带来的巨大变化而进入了新时期。ASP 3.0比起来,ASP.NET采用了全新的设计,有着很多新的特性和优点。究竟ASP.NET 会给PHPASP之间的争论带来什么样的影响呢?本文将为你提供这个问题的答案的相关信息。

架构比较

PHP

PHP4.0Zend Technologies的开源引擎Zend Engine为核心。当用户浏览器向一个由PHP实现的网络服务器发出请求时,这个请求被传给Zend Engine,它将对php脚本进行编译。如果编译顺利, 编译后的代码将被传递给生成发送给客户端的最终HTML代码的Zend Engine Executor从开发者角度看,PHP 4.0的框架既有优点也有缺点。

因为PHP是开源的,所以它得到了很多不同平台和web服务器的支持。虽然比以前的PHP引擎大,Zend Engine仍然是轻便和强壮的。作为扩展,PHP也支持面向对象,允许用户建立自己的类和对象。但是,由于某些原因,PHP不是真正的面向对象开发环境。最好的一个例子是类成员函数和属性的作用域。PHP中,一个类中的所有变量可以从外部读写,这使得类的实现无法隐藏。

另外,PHP不是强类型语言(就是说,如果你比较字符4和整数4,结果是相同的),这在架构大型程式时带来问题,也使得程式的调试变得困难。使得调试更为困难的是,你甚至不需要声明变量,这和关掉explicit 选项的ASP很像。如果PHP在脚本中遇到新的变量,它只会静静的创建它。

虽然被认为是宽松的PHP框架的灵活性,不过大概每个开发者在一些情况下都会花数小时去解决由这个特性导致的BUG对象在PHP中是语言级变量。它们在很大程度上被当作简单变量类型处理。(就像整型和字符型变量一样)当进行像变量赋值和将对象作为参数传递给函数的操作时,整个对象被复制。这将导致低效。另外,不可预知的运行时行为会经常发生。

PHP缺少一些其它绝大多少现代开发框架拥有的关键元素。其中最重要的一个是结构化异常捕捉。虽然可以给进程错误注册一个error handler,对于语言本身来说并不方便。由于"try . . . catch"错误捕捉的缺席,很多PHP开发者完全忘记了错误捕捉或者在很窄的范围中使用。

ASP.NET

ASP.NET的核心是Microsoft .NET框架。这个框架提供了common language runtime (CLR)和类库,ASP.NET就建立在这之上。

ASP.NET资源第一次被请求时,高层语言代码(像Microsoft Visual Basic® .NET 或者C#)被编译成Microsoft Intermediate Language (MSIL) code这个代码将由CLR运行以产生用于网页服务的机器代码。

ASP.NET强制开发者使用真正的面向对象方式进行程式设计。所有的对象都是真实的OO对象,支持如继承、多态(方法的重载)和封装的特性

另外,ASP.NET中的所有语言都是强类型的。举个例子,要比较整数4和字符4,你需要先将变量转换为整型,反之亦然。

ASP.NET采用事件驱动编程模型,这意味着,代码片断由在程式运行时可能发生的事件联系起来。

举例而言,在ASP.NET 页面中的Page_Load()事件放置当浏览器读取Web form将要运行的代码。有很多附加事件和ASP.NET Page object相联系,开发者可以在它们生命周期中的任何时间执行代码。同样的,一个Web form上的各个控件都有一系列可在触发时可执行代码的事件。比如,通过在一个Web form添加一个button,你可以添加一个方法(被叫做一个delegate)来在用户点击button时执行。几乎所有控件都有一个或者多个事件。

你可以访问MicrosoftQuickStart指南中提供的关于Class Browser的例子,可以在http://samples.gotdotnet.com/quickstart/aspplus/samples/classbrowser/vb/classbrowser.aspx在线运行它。

Easy注:这篇文章译自MSDN,是 白刃之战:PHP vs. ASP.NET 的一部分。文章的其他部分Easy将视事件和精力选译部分。

asp、php、asp.net、jsp介绍及优缺点比较

现在主流的网站开发语言不外乎asp、php、asp.net、jsp等 网页从开始简单的HTML到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新新的版本,以下分析各种语...
  • Long_Xiao_Yun
  • Long_Xiao_Yun
  • 2016年03月17日 09:16
  • 4804

ASP.NET实现三层架构网站创建流程

1.新建项目—>Visual C#—>Web—>ASP.NET空Web应用程序  或者  新建网站—>ASP.NET空网站 2.在解决方案处右击—>新建项目—>Windows—>类库,分别创建三层架...
  • u011028345
  • u011028345
  • 2017年05月02日 14:41
  • 2671

大型高性能ASP.NET系统架构设计

大型高性能ASP.NET系统架构设计   大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用...
  • xingxing513234072
  • xingxing513234072
  • 2014年06月24日 11:53
  • 958

ASP.NET之旅--深入浅出解读IIS架构

思考“为什么在地址栏输入 www.baidu.com就可以看到百度主页?”类似于思考“为什么苹果是往地上掉不是往天上飘?”。 对于普通访问者来说, 这就像每天太阳东边升起西边落下一样是理所当然的。 对...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2013年08月26日 08:35
  • 6105

MVC和三层架构的比较

以前涉及到.NET做项目,脑袋里面只有一个概念,那就是三层,最近学习了一种新的架构思想,那就是ASP.NET MVC+EF+EasyUI,我们的项目已经进行了一半了,对这个架构算是有了初步的认识。  ...
  • zjx86320
  • zjx86320
  • 2014年12月07日 21:09
  • 2016

VS2010构建ASP.NET三层架构实例演示(一)

本文是用vs2010+SQLSERVER2008来搭建一个基于三层架构的ASP.NET项目,
  • wujiaqi168
  • wujiaqi168
  • 2014年04月19日 10:32
  • 2978

基于多层架构的asp.net mvc项目的搭建

  • hulele2009
  • hulele2009
  • 2013年08月30日 15:09
  • 3662

在Linux上配置同时支持ASP.NET和PHP的服务器

注:本文只是个人研究以及试用使用的方法,可能不太严谨,如果犯了什么专业性的错误,还希望各位看官加以指正,谢谢。(´・ω・`) 环境简述 操作系统:Ubuntu Server x64 14.04...
  • Toshiya14
  • Toshiya14
  • 2015年10月08日 17:01
  • 1880

选择PHP还是 ASP.NET:你做了正确选择么?(个人观点,但是也是受了行业内大多数人得影响吧)

设想一下,如果你可以回到过去,改写你的技术生涯。哪些重要的时刻,你会想改变? 在2001年,我曾作为一家成功的网站咨询公司的共同合伙人,去处理有关 Classic ASP 的事情。当时,这些事情是很...
  • u014326381
  • u014326381
  • 2015年08月19日 23:20
  • 660

VS2010构建ASP.NET三层架构实例演示(二)

5、创建一个类库(Data)来连接数据库  步骤:文件--新建--项目,在弹出来的“新建项目”对话框中,已安装的模板中选择“Visual C#”--“类库”,名称:Data;解决方案:选择添加到解决...
  • wujiaqi168
  • wujiaqi168
  • 2014年04月19日 10:32
  • 1890
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:白刃之战:PHP vs. ASP.NET(节选)-架构比较
举报原因:
原因补充:

(最多只允许输入30个字)