网络编程
位置:首页>> 网络编程>> php编程>> 白 刃之战:PHP vs. ASP.NET(节选)-架构比较

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

  发布时间:2023-11-15 12:31:22 

标签:白,刃,刃之,之战,战P,PH,HP,Pv,vs,sA,AS,SP,PN,NE,ET,T(,(节,节选,选),)-,-架,架构,构比,比较,较

   作者:Robert Lair and Jason Lefebvr Intensity Software, Inc.
  翻译:EasyChen Exlcsoft.com
  概观
  开发界正在进行的一个争论是PHP和ASP中哪一个平台更适合网站开发。这场争论由于微软的ASP.net带来的巨大变化而进入了新时期。和ASP 3.0比起来,ASP.NET采用了全新的设计,有着很多新的特性和优点。究竟ASP.NET 会给PHP和ASP之间的争论带来什么样的影响呢?本文将为你提供这个问题的答案的相关信息。
  架构比较
  PHP
  PHP4.0以Zend 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时执行。几乎所有控件都有一个或者多个事件。
  
  你可以访问Microsoft在QuickStart指南中提供的关于Class Browser的例子,可以在http://samples.gotdotnet.com/quickstart/aspplus/samples/classbrowser/vb/classbrowser.aspx在线运行它。
  Easy注:这篇文章译自MSDN,是 * 之战:PHP vs. ASP.NET 的一部分。文章的其他部分Easy将视事件和精力选译部分。

0
投稿

猜你喜欢

  • 1.echo和print的区别PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但
  • MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。MySQL 是完全网络化
  • 本文实例讲述了PHP共享内存使用与信号控制。分享给大家供大家参考,具体如下:共享内存共享内存的使用主要是为了能够在同一台机器不同的进程中共享
  • 内容摘要:Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行
  • 微信小程序中使用地图(map)组件,通过点击(tap)获取经纬度,按照官方的回应,暂时是没法做到的,从地图组件API多有残缺判断,怀疑是个实
  • 工欲善其事,必先利其器。作为更专业的前端工程师,我们需要强劲的IDE协助我们写出规范、美观、漂亮的JavaScript代码,首先要作的就是对
  • 我的Windows 8.1 环境1.下载安装Python 2.7.6在Python官方网站中下载Python2.7.6的Windows安装包
  • html页面一般都会指定一个编码,如何获取到是处理html页面的第一步,因为错误的编码必然带来后面处理的问题。这里我用python的正则表达
  • 方法一一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数
  • 目前网络数据库的应用已经成为最为广泛的应用之一了,并且关于数据库的安全性,性能都是企业最为关心的事情。数据库渐渐成为企业的命脉,优化查询就解
  • ADO对象: Connection Command Recordset Record Stream ASP支持的对象很多,可以自己编写COM
  • 一、分工和流程在土豆网,以项目开发为核心,谁都可以带项目,担任项目经理。一个典型的土豆网项目中,当进入正式开发阶段,通常参与者包括:1名设计
  • <?php $search = array ("'<script[^>]*?>.*?</sc
  • 前言在laravel项目开发中,经常使用到公共函数,那如何在laravel配置全局公共函数呢??下面话不多说了,来一起看看详细的介绍吧方法如
  • 在本篇文章里,我们会使用一个简单的Web表单,它会列出某个目录下的一些XML文件。然后,我们会从这个目录里选择一个文件,将它发送到另一个We
  • 各位大家好!很荣幸能在这里和大家聊聊!(*^__^*) 嘻嘻……此处省略488字,切入正题。关于网页设计这个行业,在中国来讲这个行业并不成熟
  • 本文向大家分享23种JavaScript提高执行效率的小技巧、最佳实践等非常实用的内容。当然JavaScript的实用技巧不止这些,还有很多
  • 指定的代码页特性无效。 codepage属性:是指出网页的代码页 如果制作的网页脚本与WEB服务端的默认代码页不同,则必须指明代码页: 代码
  • 学习使用存储过程(Stored Procedure),是ASP程序员的必须课之一。所有的大型数据库都支持存储过程,比如Oracle
  • bootstrap自带的响应式导航栏是向下滑动的,有时满足不了个性化的需求,需要做一个类似于android drawerLayout 侧滑的
手机版 网络编程 asp之家 www.aspxhome.com