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

从 PHP 迁移到 ASP.NET(6)

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 8:39:35
     表 13:执行查询
  
  PHP Visual Basic .NET
  <?php
  //connect
  
  require_once('DB.PHP');
  
  $db=DB::connect
  
  ("mysql://mydbvie
  
  w:user@localhost/mydb");
  
  if (DB::iserror($db)) {
  
  die($db->getMessage());
  
  $sql = "select * from mytable";
  
  $q= $db->query($sql);
  
  if (DB::iserror($q)) {
  
  die($q->getMessage());
  
  }
  
  <tr>
  
  <td><?= $row[0] ?></td>
  
  <td><?= $row[1] ?></td>
  
  <td><?= $row[2] ?></td>
  
  </tr>
   <script runat="server">
  Sub Page_Load(Sender As Object, E As
  
  EventArgs)
  
  Dim myConnection As New
  
  SqlConnection("server=(local)\NetSDK;
  
  database=mydb;Trusted_Connection
  
  =yes")
  
  Dim myCommand As New
  
  SqlDataAdapter("select * from
  
  mytable", myConnection)
  
  Dim ds As New DataSet()
  
  myCommand.Fill(ds, "myDataset")
  
  myDataGrid.DataSource = myDataset
  
  myDataGrid.DataBind()
  
  End Sub
  
  </script>
  
  <%--- 输出结果 ---%>
  
  <form runat="server">
  
  <asp:DataGrid id="myDataGrid"
  
  runat="server" />
  
  </form>
  
  
  在 PHP 中,查询结果存储在一个称为 result set(结果集)的变量中,而在 ADO.NET 中,该变量称为 Dataset 对象。结果集是返回数据的只读视图,而 .NET Dataset 实际上是返回数据在内存中的读写视图,这使 .NET 开发人员能够轻松地处理从数据源返回的数据。
  
  输出数据时,ASP.NET 提供了若干方法,用于向用户或客户端显示数据。第一种方法与 PHP 类似,即使用 SQLDataReader 对象遍历结果集以写出我们要通过查询显示的数据。更常用的方法是 ASP.NET 的数据绑定(PHP 中没有与此对应的方法)。通过该方法,开发人员可以构建用户界面并显示可在应用程序中使用和重用的控件,还可以进一步根据数据和逻辑提取显示内容。数据绑定的语法很灵活,您不仅可以绑定到数据源,还可以绑定到简单的属性、集合、表达式,甚至是方法调用返回的结果。
  
  要使用数据绑定,您需要向某个数据识别服务器控件(例如 DataGrid)的 DataSource 属性指定某个数据源(例如查询结果)。您还可以选择为每个列提供一些附加的格式化信息并调用 DataBind() 方法。服务器控件将负责完成剩余的工作。
  
  例如,在表 13 中,我们使用了数据绑定语法输出查询结果,如下所示:
  
  <%--- 在页面中加载事件
  ---%>
  myDataGrid.DataSource = myDataset
  myDataGrid.DataBind()
  <%--- 输出结果 ---%>
  <asp:DataGrid id="myDataGrid"
   runat="server" />
  
  数据识别服务器控件将提供其他功能,例如支持对显示的数据进行分页或内联编辑。有关详细信息和示例,请参阅 Data Binding Server Controls。
  
  数据缓存和页面缓存
  
  对经常访问的数据进行缓存可以显著缩短站点的响应时间,因为不需要等待数据库查询便可进行页面处理。而缓存由页面请求生成的 HTML 可以进一步缩短响应时间,因为根本就无需处理缓存的页面。这两种环境均支持上述两种缓存策略,但与 PHP 相比,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 对象。
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。