ASP.NET与PHP构建web程序的方法的优缺点(5)

http://www.itjxue.com  2015-07-17 01:58  来源:未知  点击次数: 

作出选择

假定您还没有决定选用 PHP,我可以断言 PHP 的优势远远超过它的弱点。(请参见表 1 中的概要。)这些优势归结为价格、速度和效率、安全性、跨平台适用性和开放源代码机遇。它唯一的弱点是缺少一种纯粹和完美的 OOP 实现,不过,这是一个很小的缺点。虽然语言结构的确有帮助,但好的编码最终是由实践、执行、好的习惯和规范带来的。

 

表 1

 

价格。在此,我们不应简单地考虑初始投资 — 对 PHP 而言,这很明显是免费的 — 还应考虑实施、维护和调试的成本。对 PHP 而言,您可能需要购买 Zend 优化引擎。然而,使用 ASP,您将从一开始就进行投资,而且您还要为附加的技术 — 例如,执行图形处理的库 — 支付费用。但从长远来看,PHP 将不会逼迫您升级并向您收取更多的许可费用。接触过复杂许可的每一个人都知道,很多公司花费大量的时间和金钱仅是为了确保其顺应性。此外,当在获得错误修复的时间上,您得到的反应也有所不同。这当然将转化成时间,时间又将转化成总体开发的成本。

速度和效率。正如我先前提到的,ASP.NET 是一个允许您使用各种编程语言的框架。此外,它据称拥有一个极好的面向对象模型。尽管所有这些都是真的,但在考虑到速度时,它却是不利的。基于以上原因,在 ASP.NET 中运行 ASP 页面与在 PHP 引擎中运行等效的 PHP 页面相比需要执行更多代码。PHP 是一种“快速粗糙”的解决方案,是为完成工作而设计的解决方案。虽然自 2.0 和 3.0 版本以来为其增强了许多强健性,但它仍然保留着核心的优化的高速方法。

速度不是唯一要考虑的因素。内存使用率也很重要。

安全性。ASP.NET 运行在 IIS 上,而 IIS 已被攻击了无数次 — 正如每隔一周的 IT 新闻报告所证实的。它已经成为这样一种负担,实际上,尽管其耗巨资进行销售宣传,但许多 IT 专业人员仍然拒绝用 IIS Web 服务器来开放他们的网络。而 PHP 使用 Apache。Apache 拥有已被证明的速度、可靠性和稳固的安全性的记录。请浏览 www.securityfocus.com,以获取更多信息。

跨平台适用性。ASP.NET 在 IIS 上运行,并且开始在 Apache 上运行(Apache 能够在许多平台上运行)。PHP 从一开始就设计用于和 Apache 一起工作,因此您拥有许多可供选择的已被证明和可靠的服务器平台。

开放源代码机遇。开放源代码并不只靠一些异想天开的编程人员或想要节省一些许可费用的公司来开展。当您处理软件本身的错误时,开放源代码可能成为真正的天赐之物。

在使用 PHP 或 ASP.NET 的情况下,您都会有一个大的用户群,他们使用软件并且可能遇到错误。使用 ASP.NET,这些错误必须通过一个官方程序来通知、修复、测试,并在一个新的补丁或版本中消除。然而,PHP 补丁可以快速地得到修补并发布。目睹开放源代码发展的任何人都知道,新的版本和补丁通常在几天内而不是像商业软件一样在几个星期或几个月内推出。如果这不够快,那么您通常可以自己来修补问题(如果必要的话)。

---------------------------------------------------------------

Sean Hull 是他公司 iHeavy Inc. 的高级顾问,该公司位于纽约市。他专注于开放源代码技术与商业技术(如 Oracle)的集成,并已服务于多家成功的纽约公司。

Imports System
Imports System.Data
Imports System.Data.OracleClient
Imports Microsoft.VisualBasic

Class Sample

Public Shared Sub Main()

Dim oraConn As OracleConnection = New OracleConnection("Data Source=MyOracleServer;Integrated Security=yes;")

Dim oraCMD As OracleCommand = New OracleCommand("SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER", oraConn)

oraConn.Open()

Dim myReader As OracleDataReader = oraCMD.ExecuteReader()

Do While (myReader.Read())
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", myReader.GetInt32(0), myReader.GetString(1))
Loop

myReader.Close()
oraConn.Close()
End Sub
End Class

class oracle_object {
protected $theDB;
protected $user;
protected $pass;
protected $db;

function __construct($u, $p, $d) {
$this->user = $u;
$this->pass = $p;
$this->db = $d;
  }

function db_open () {
$theDB  =  @OCILogon($this->user,  $this->pass,  $this->db);
db_check_errors($php_errormsg);
  }

function db_close() {
@OCILogoff($theDB);
db_check_errors($php_errormsg);
  }

function __destruct () {
print ("so long...");
  }

<?php

class blue {

function openFile ($inFile) {
if (file_exists ($inFile)) {
# code to open the file here
} else {
throw new Exception
 ("Cannot open file:$inFile");
    }
  }
}

$blueObj = new blue ();

try {
$blueObj->openFile ('/home/shull/file.txt');

} catch (Exception $myException) {
echo $myException->getMessage ();

# rest of exception handling code here
}

# rest of blue methods here

?> 

(责任编辑:IT教学网)

更多

推荐ASP.NET教程文章