Asp.Net 和 AJAX.Net 的区别第1/2页

原文:
http://www.microsoft.com/china/msdn/library/webservices/asp.net/us0501ASPNETPerformance.mspx?mfr=true

适用于:
AJAX(异步 JavaScript 和 XML)
Microsoft AJAX.NET
Microsoft ASP.NET

摘要:了解如何将 AJAX(异步 JavaScript 和 XML)用于您的 Microsoft ASP.NET 应用程序,使其互动性更强、响应更及时。

下载本文的代码示例 AjaxASPNETCS.msi(使用 C# 语言)

下载本文的代码示例 AjaxASPNETVB.msi(使用 Visual Basic 语言)

本页内容
简介
什么是 AJAX?
用于 ASP.NET 的 AJAX
手头的 AJAX
AJAX 与您
结论

简介

自从开始 Web 编程以来,在 Web 应用程序和桌面应用程序之间一直存在着许多取舍。例如,人们通常认为 Web 应用程序提供的用户界面类型没有桌面应用程序提供的用户界面类型那样丰富。另一方面,Web 应用程序是独立的平台,其开发机制比较简单。提供响应更及时的应用程序看似是一项简单的任务,但对于 Web 开发人员来说却是一直以来需要攻克的领域。

传统意义上,只能通过向 Web 服务器提交新的请求来检索对用户输入所做的响应。在某些情况下,开发人员可以使用 JavaScript 在客户端上加载所有响应,从而提供更好的用户体验。此技术的常见示例是基于所选国家/地区来动态加载一系列州或省。遗憾的是,在很多情况下,不将所有响应都返回或加载到 JavaScript 要更好。返回操作会使过多的 UI 断开连接,或在客户端上需要过量的数据,这经常导致生成不易读的 JavaScript。AJAX 提供了一种新的中间选择,能够在维持及时响应和灵活性的同时利用基于服务器的应用程序。

返回页首

什么是 AJAX?

AJAX 是 Asynchronous JavaScript And XML(异步 JavaScript 和 XML)的缩写,它不是一项技术,而是很多技术的集合。AJAX 使用通信技术(通常为 SOAP 和 XML)发送和接收对服务器的异步请求/响应,然后利用显示技术(JavaScript、DOM、HTML 和 CSS)处理响应。如今,使用 AJAX 的应用程序是合法的,因为多数浏览器都支持这项必需的技术。有关 AJAX 更详细的定义,请访问 AJAX Wikipedia entry(英文)。

AJAX 到底是什么?AJAX 使您能够通过 JavaScript 调用执行服务器端方法,而不需要刷新浏览器。将它视为发生于用户后台的小型请求/响应。如果您仍不清楚 AJAX 是什么,请看 Google 上的两个常见示例:Google Suggests(英文)和 Google Maps(英文)。如果您不熟悉 AJAX,这两个应用程序的响应会使您有点兴奋。

返回页首

用于 ASP.NET 的 AJAX

很多因素促使 AJAX 应运而生。您可能不想花费几个小时或几天来了解 AJAX 的内部原理,而是更希望现在就开始创建启用了 AJAX 的应用程序,来满足现有需求(如果您确实想知道 AJAX 内部工作原理,我肯定不是可以询问的人)。开发人员可以用来快速入门的工具有很多。不过我们将特别关注由 Michael Schwarz 编写的源代码开放的免费 Ajax.NET。Ajax.NET 考虑到所有的实现细节是基于 .NET 的,并且能够被扩展。Microsoft ASP.NET 2.0 通过客户端回调功能(英文)引入了独具特色的异步回调,并且最近宣布(英文)代号为“Atlas”的 AJAX 正在实现中。

术语可能有些混乱,但是当我介绍 AJAX 时,就是在介绍从客户端异步调用服务器端函数的整体框架。提到 Ajax.NET 时,我是指能够帮助您创建利用 AJAX 框架的解决方案的特定实现。

要了解有关 ASP.NET 2.0 客户端回调功能的详细信息,请访问 Bertrand Le Roy 的博客(英文)。

返回页首

手头的 AJAX

本文的剩余部分将使用 Ajax.NET 着重介绍三个利用 AJAX 功能的有意义的示例。本指南将包含以 Microsoft C# 和 Microsoft Visual Basic .NET 编写的代码,有时同时提供这两种代码,有时仅提供其中一种代码。实现所有这一切的代码很容易,C# 开发人员能够很容易地遵循仅以 Visual Basic .NET 编写的代码,反之亦然!本文包含的示例 C# 和 Visual Basic .NET 项目可供下载,并提供工作代码和运行代码。在学习示例以前,首先需要了解如何安装和使用 Ajax.NET。

Ajax.NET

AJAX.NET 文档(英文)和网站(英文)对开发人员快速入门非常有用。在介绍使用此技术的一些具体示例之前,我们将简要回顾您所需要知道的核心步骤。

首先从 AJAX.NET 项目网站(英文)上下载并解压缩 AJAX 文件,然后按照您的喜好在 Visual Basic .NET 或 C# 中创建新的 ASP.NET 项目,再向 AJAX.dll 文件添加引用(英文)。唯一的额外配置步骤是在 元素中(位于 web.config 文件中)添加以下代码。







...
...


为了使服务器端函数在 JavaScript 中可用,必须做两件事情。首先,要使用的函数必须标有 Ajax.AjaxMethodAttribute。其次,在页加载事件期间,必须通过调用 Ajax.Utility.RegisterTypeForAjax 来注册包含这些函数的类。听起来似乎有些复杂,但请不必担心;实际上只需要在代码中多加两行。让我们看一个示例。

//C#
public class Sample :System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
//注册我们感兴趣的包含服务器端函数
//的类
Ajax.Utility.RegisterTypeForAjax(typeof(Sample));
}
[Ajax.AjaxMethod()]
public string GetMessageOfTheDay()
{
return "Experience is the mother of wisdom";
}
}
'VB.NET
Public Class Sample
Inherits System.Web.UI.Page
Private Sub Page_Load(sender AsObject, e As EventArgs)
Handles MyBase.Load
'注册我们感兴趣的包含服务器端函数
'的类
Ajax.Utility.RegisterTypeForAjax(GetType(Sample))
End Sub
 _
Public Function GetMessageOfTheDay() As String
Return "Experience is the mother of wisdom"
End Function
End Class

以上示例首先告知 Ajax.NET 在 Sample 类中查找友好的 Ajax 方法。它正好是与实际页相同的类,但是它可以是任意 .NET 类,或可以注册多个类。然后,Ajax.NET 将浏览指定的类,来查找标有 AjaxMethodAttribute 的所有方法,其中 Sample 类有一个 GetMessageOfTheDay

完成后,剩下唯一要做的就是在 JavaScript 中使用它。Ajax.NET 自动创建与注册的类具有相同名称的 JavaScript 变量(在本例中将为 Sample),它提供与 AjaxMethod 具有相同名称的函数(在本例中为 GetMessageOfTheDay)。如下所示。


除了 JavaScript 回调函数以外,JavaScript GetMessageOfTheDay 还需要与其服务器端对应部分相同的参数(在此情况下,没有参数),以便在完成时执行并传递响应。在此,我们看到 AJAX 在工作时的异步特性,因为对 GetMessageOfTheDay 的调用不阻碍执行其他 JavaScript 代码,也不阻碍用户继续在页上进行操作。完成服务器端处理时,Ajax.NET 调用指定的回调函数 GetMessageOfTheDay_CallBack,并向其传递由服务器端返回值组成的响应。

服务器端代码和 JavaScript 代码之间的映射可能有些混乱。图 1 简要显示了服务器端代码和 JavaScript 代码,以及两者之间的映射。

Asp.Net 和 AJAX.Net 的区别第1/2页_第1张图片

1:服务器端代码和 JavaScript 代码之间的映射

当然令人感兴趣的 Ajax.NET 还有更多内容值得介绍,例如对 .NET 类型的支持和丰富的回调响应(它不仅仅是值)。以下示例将会重点介绍某些功能,希望帮助您理解 AJAX 如何帮助您创建成功的应用程序。

示例 1:链接的下拉列表

本文的开始简要地讨论了用于链接两个 DropDownList 的两种传统方法。当选定的索引更改时,返回页;或者将所有可能的数据加载到 JavaScript 数组并动态显示。希望您可以看到 AJAX 如何替代这两种解决方案。

首先,让我们来看一下我们的数据界面,并从该数据界面驱动示例。我们的数据访问层将提供两种方法:第一种方法将检索系统支持的国家/地区的列表,第二种方法将获取国家/地区 ID 并返回州/省的列表。由于这是纯数据访问,因此我们只需要使用方法。

//C#
public static DataTable GetShippingCountries();
public static DataView GetCountryStates(int countryId);
'VB.NET
Public Shared Function GetShippingCountries() As DataTable
Public Shared Function GetCountryStates(ByVal countryId As Integer)
As DataView

现在,让我们转到相反面,创建简单的 Web 窗体。




Page_Load 事件同样简单,和前述的 Web 窗体一样。我们使用数据访问层来检索可用的国家/地区,并将其绑定到 countriesDropDownList 中。

//C#
if (!Page.IsPostBack)
{
countries.DataSource = DAL.GetShippingCountries();
countries.DataTextField = "Country";
countries.DataValueField = "Id";
countries.DataBind();
countries.Items.Insert(0, new ListItem("Please Select", "0"));
}

通常,代码到此为止。首先,我们将创建要从 JavaScript 调用的服务器端函数。

'VB.NET
 _
Public Function GetStates (ByVal countryId As Integer) As DataView
Return DAL.GetCountryStates(countryId)
End Function

1 2 下一页 阅读全文
  • Asp.Net
  • AJAX.Net
  • 的区别

相关文章

  • Asp.Net 和 AJAX.Net 的区别第1/2页_第2张图片

    页面包含的处理

    页面包含的处理...
    2006-08-08
  • Asp.Net 和 AJAX.Net 的区别第1/2页_第3张图片

    C#语言初级入门介绍

    C#读作“C sharp”,它是Microsoft开发的一种新语言,结合了C/C++的强大功能和Visual Basic的易用性。从最初的语言规范即可看出,C#无论在语法、丰富的Web开发支持还是自动化的内存管理上都和Java非常相似。因此,如果你曾经用过C++或者Java,再来学习C#应该是相当轻松的。
    2008-04-04
  • Asp.Net 和 AJAX.Net 的区别第1/2页_第4张图片

    Asp.net中Request.Url的各个属性对应的意义介绍

    网络上关于Request.Url的说明已经很多也很丰富了,但是自己还是实践了一下,看看最终的结果与网络上的是否一致
    2012-05-05
  • Asp.Net 和 AJAX.Net 的区别第1/2页_第5张图片

    ASP.Net生成一个简单的图片

    ASP.Net生成一个简单的图片...
    2006-10-10
  • Asp.Net 和 AJAX.Net 的区别第1/2页_第6张图片

    IIS7 应用程序池的 托管管道模式与集成模式小结

    而 IIS 7 完全整合 .NET 之后,架构的处理顺序有了很大的不同(如下图),最主要的原因就是 ASP.NET 从 IIS 插件(ISAPI extension)的角色,进入了 IIS 核心,而且也能以 ASP.NET 模块负责处理 IIS 7 的诸多类型要求。
    2011-02-02
  • Asp.Net 和 AJAX.Net 的区别第1/2页_第7张图片

    ASP.NET与数据库相关技巧

    [红色]ASP.NET与数据库相关技巧...
    2006-10-10
  • Asp.Net 和 AJAX.Net 的区别第1/2页_第8张图片

    asp.net OleDbCommand 的用法

    asp.net下OleDbCommand的使用代码
    2008-04-04
  • Asp.Net 和 AJAX.Net 的区别第1/2页_第9张图片

    详解ABP框架中领域层的领域事件Domain events

    ABP是基于ASP.NET框架之上的Web开发框架(GitHub:https://github.com/aspnetboilerplate),这篇我们来详解ABP框架中领域层的领域事件Domain events,需要的朋友可以参考下
    2016-06-06
  • Asp.Net 和 AJAX.Net 的区别第1/2页_第10张图片

    Asp.Net常用函数

    Asp.Net常用函数...
    2007-03-03
  • Asp.Net 和 AJAX.Net 的区别第1/2页_第11张图片

    ASP.NET 入门的五个步骤

    ASP.NET 入门的五个步骤...
    2007-01-01

最新评论

你可能感兴趣的:(Asp.Net 和 AJAX.Net 的区别第1/2页)