龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

AJAX 应用程序体系结构(第2部分)(1)(3)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
ASP.NET AJAX 中的服务 通过 ASP.NET AJAX Extensions 实现脚本服务有两种方式――使用特殊类型的 ASP.NET Web 服务和通过页面方法。前一种情况下,您只需设计和构

ASP.NET AJAX 中的服务

通过 ASP.NET AJAX Extensions 实现脚本服务有两种方式――使用特殊类型的 ASP.NET Web 服务和通过页面方法。前一种情况下,您只需设计和构建一个链接到 ASMX 资源的类:

<%@ WebService Language="C#"
CodeBehind="~/App_Code/TimeService.cs"
Class="IntroAjax.WebServices.TimeService" %>

该类可以选择从 WebService 类继承,并且必须用新的 ScriptService 属性加以修饰:

[ScriptService]
public class TimeService : System.Web.Services.WebService
{
...
}

每个可调用脚本的方法均声明为公共方法,并标记有通常的 WebMethod 属性。

页面方法只不过是在单个 ASP.NET 页面上下文中定义的公共、静态方法,每个方法都标记为 WebMethod。只能从宿主页面中调用它们。除了存储不同之外,对 Web 服务或页面方式的调用均由 ASP.NET AJAX 环境以相同方式进行处理。

您必须清楚,AJAX 服务代表后端的一部分。从 WS-* Web 服务意义上讲,它们并不是公共 Web 服务,Web 服务都是通过 WSDL 脚本完整记录并可通过携带 SOAP 数据的 POST 命令进行访问。AJAX 服务是真正的本地服务,通常在调用它们的同一个应用程序中进行定义。然而,它们也可以在不同的 Web 应用程序甚至不同的网站上,前提是它们位于同一个域。

通过启用 ASP.NET AJAX 运行时以接受对服务的调用,ScriptService 属性扮演了一个关键角色。如果没有 ScriptService 属性,当您试图进行调用时,服务器上就会引发异常。图 2 显示当一个 AJAX 页面链接到未标记该属性的服务时所返回的消息。注意,图中显示的页面永远不会显示给任何用户。当连接到声明使用此类服务的 ASP.NET AJAX 页面时,您确实会收到全部该标记。该标记返回 HTTP 500 错误代码,因为 ASP.NET 内部机制拒绝处理缺少该属性的 ASP.NET Web 服务进行的脚本调用。

精彩图集

赞助商链接