当前位置:中国站长下载文章中心网页编程.NET编程 → 从 PHP 迁移到 ASP.NET

从 PHP 迁移到 ASP.NET

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 9:47:28
相比,ASP.NET 提供了更多用于缓存和管理数据的方法,从而使开发人员可以针对自己应用程序的性能需要选择相应的方法和策略。
  
  页面缓存
  缓存某个页面请求的 HTML 输出是减少 Web 应用程序的负载的一种常用方法。PHP 本身不支持页面缓存,但是可以通过编程的方式或下载第三方软件包来执行此操作。通常可以在服务器上通过多种方法执行页面缓存,这些方法可用于缓存编译的代码,直至将页面输出写出到一个单独的文件中(该文件将随代码的更新而更新)。
  
  在 ASP.NET 中,可以通过低级别的 OutputCache API 或高级别的 @ OutputCache 指令来执行页面缓存。启用输出缓存后,将在对页面进行第一个 GET 请求时创建输出缓存条目。后续的 GET 或 HEAD 请求将由输出缓存条目支持,直到缓存的请求过期。
  
  输出缓存将检查页面的过期策略和验证策略。如果页面位于输出缓存中并标记了过期策略(指示该页面自缓存时开始 60 分钟后过期),则 60 分钟后,该页面将从输出缓存中删除。如果在过期后收到另一个请求,将执行页面代码并再次缓存该页面。这种过期策略称为绝对过期,即页面在某个时间之前有效。
  
  除了对整个页面进行输出缓存外,ASP.NET 还提供了一个简单方法,使您可以只缓存页面的特定部分。这种方法称为拆分缓存。您可以使用用户控件 (User Control) 来指定页面区域,并使用前面介绍的 @ OutputCache 指令将这些区域标记为缓存区域。该指令指定了用户控件的输出内容在服务器上缓存的时间(以秒为单位)以及影响这一时间的任何可选条件。
  
  有关 ASP.NET 的输出缓存的详细信息,请参阅 Caching ASP.NET Pages。
  
  数据缓存
  在 PHP 中,可以通过多种方法以编程方式将查询结果缓存到环境中,但 PHP 本身并未提供这种方法。在 PHP 中,可以创建数据缓存类或系统。对于少量信息,只需使用 Session 变量和/或 Cookie;对于大量或复杂的信息,可以创建您自己的数据缓存类。但问题是,当处理包含很多类型的复杂数据时,这种方法的效率会很低且容易出错,在一定程度上会加大编程的难度。
  
  ASP.NET 通过 Page.Cache 对象提供了一个系统范围的数据缓存方法,可用于数据集 (DataSet)、数组、集合、XML 对象等。对于需要更复杂功能的应用程序,ASP.NET 缓存还支持三种特定类型的缓存:过期、清理以及文件和关键项相关性。
  
  过期类型的缓存使开发人员可以控制缓存项目的过期时间。可以将该时间定义为特定的时间(例如 01:00),也可以将其定义为相对于上次使用项目时的时间,例如自上次访问该项目时开始 20 分钟后过期。过期后的项目将从缓存中删除,以后再试图检索该项目时,将返回空值(除非再次将其插入到缓存中)。
  清理类型的缓存会在内存不足时尝试删除不经常使用或不重要的项目。开发人员可以控制清理的执行方式,并且可以在将项目插入到缓存中时向清理程序提供提示,以指示创建该项目的相对系统开销以及为使该项目有效而必须对其进行访问的相对频率。
  文件和关键项相关性类型的缓存将基于某个外部文件或另一个缓存项目确定该缓存项目的有效性。如果相关项发生变化,缓存项目将失效并从缓存中删除。例如,假设您有一个较大的需要定期更新并下载给员工的报告,则可以在应用程序中使用此功能。应用程序处理文件和报告中的数据,然后缓存该数据并插入对该数据的来源文件(从该文件读取数据)的相关性。当该文件更新时,数据将从缓存中删除,应用程序可以重新读取它并重新插入更新的数据副本。
  ASP.NET 数据缓存为编程人员提供了许多不同的方法来管理应用程序并提高应用程序的响应速度和效率。有关详细信息,请参阅 Cache Class 文档以了解 Cache 对象。
  
  发送电子邮件
  PHPASP.NET 都为以编程方式发送电子邮件提供了内置的支持。要在此示例中使用 ASP.NET 发送电子邮件,您需要设置 IIS SMTP 服务。因为 .NET 中的内置邮件对象依赖于该服务包含的对象,所以您必须安装它。尽管如此,与 PHP 一样,.NET 也允许您使用任何 SMTP 服务器或邮件服务器。表 14 对这两种环境的基本语法进行了比较。
  
  表 14:发送电子邮件
  
  PHP Visual Basic .NET
  $to = "test@atnoaddress.com";
  $from =
  
  "me@nosuchaddress.com";
  
  $subject = "hi";
  
  $message = "just wanted to say
  
  hi";
  
  mail($to,$subject,$message,
  
  $from)
   Dim myMail As MailMessage = New
  MailMessage()
  
  myMail.From = "me@nosuchaddress.com"
  
  myMail.To = "test@atnoaddress.com"
  
  myMail.Subect = "hi"
  
  myMail.Body = "just wanted to say hi"
  
  SmtpMail.Send(myMail)
  
  
  XML 处理和 Web 服务
  在 PHP 中,为分析和处理 XML 所提供的内置支持功能非常薄弱。虽然开发人员可以用它来分析和处理 XML,但它不支持 DOM 分析(该分析尽管比 PHP 的 SAX 分析器速度慢,但更容易使用)。PHP 也不支持根据 DTD 或 XML SCHEME 对 XML 文档进行本地验证,它也不支持 XSL/XSLT 以及市场上许多 Web 应用程序常用的各种其他技术。虽然 PHP 可以通过很多 PHP 软件包完成许多与 XML 相关的任务,但 .NET 和 ASP.NET 为处理 XML 提供了广泛的内置支持。XML 是 .Net 平台的核心技术之一。有关 Web 服务的详细信息,请参阅 How ASP.NET Web Services Work。
  
  .NET Framework 为 W3C 定义的所有 XML 建议提供了广泛的支持,此外还支持 XSL/XSLT、XPath、XQuery 以及各种其他技术,例如用于 Web 服务的 UDDI、WSDL 以及 SOAP。
  
  虽然可以在 PHP 中创建 XML-RPC 类型的机制,但创建 Web 服务(使开发人员能够使用常用协议和标准来交换数据和过程并将其用于查找、数据绑定和描述)。.NET 为 Web 服务和相关技术(如 SOAP、WSDL 和 UDDI)提供了广泛的支持。使用 .NET,开发人员还可以轻松地创建和开发 Web 服务。例如,以下代码将创建一个简单的 hello world Web 服务:
  
  <%@ WebService Language="VB" Class="HelloWorld" %>
  
  Imports System
  Imports System.Web.Services
  
  Public Class HelloWorld :Inherits WebService
  
   <WebMethod()> Public Function SayHelloWorld() As String
   Return("Hello World")
   End Function
  
  End Class
  
  利用 .NET Framework SDK,您可以使用命令行 Web 服务描述语言工具 (WSDL.exe) 生成代理类。要为上述示例创建一个名为 HelloWorld.cs 的代理类,可以输入:
  
  WSDL http://someDomain.

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页