没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论























使用 ASP.NET AJAX 异步调用 Web Service 和页面中的类方法(0):目录
准备把《 程序设计 第 卷:客户端 相关》的第三章
《异步调用 和页面中的类方法》公布出来,希望对朋友们有所帮助。我也会不
停公布出本书的更多内容,想要看到哪部分的朋友,请参考目录后告诉我。
在第 章中,我们了解了 异步通讯层的架构以及功能,最后还借助客户端的
组件分别用 和 方法从服务器端取得了数据。虽然与最为原
始的 !" 方式相比, 组件已经为我们异步请求服务器带来了极大的便
利,可这部分代码仍旧不够直观简洁。特别是对于那些熟悉了 服务器端开发模型的
朋友而言,这些不算少的 # 配置以及服务器端“一反常态”的代码结构仍会让人望而却
步。
不过 的设计者考虑到了这个问题,并提供给我们一种称得上“完美”的解决方案
——先来回忆一下我们熟悉的调用静态 $%函数的方法吧:
[NameSpace].[ClassName].[MethodName](param1, param2 …);
而通过使用 异步通讯层为我们自动生成的代理,在客户端 # 中我们
也可以使用同样的语法调用定义在服务器端( 或 页面中)的方法!所
有复杂的对 组件各个属性的配置, 异步通讯层已经统
统为我们封装在了这些自动生成的代理中,不会让开发者感到一丝一毫的困惑。可以认为,作
为 框架的“用户”,这种封装方式极大地提高了我们开发者的用户体验。
本章就将详细介绍 异步通讯层所提供的这种强大的功能——自动为服务器端方
法生成客户端的代理。几乎任何一个 客户端应用程序都会频繁使用这个功能,
所以本章也将用示例程序完善地演示异步通讯层生成的客户端代理的种种使用方法与具体操作
细节。
第 3 章 异步调用 Web Service 和页面中的类方法
&'调用
&调用页面中的类方法
&&处理异步调用中的异常
&(保持用户上下文
&)异步通讯层生成的客户端代理类

&*使用 + 进行调用
&,服务器端和客户端数据类型的自动转换
&,'基本类型
&,枚举类型
&,&复杂类型
&,(泛型集合类型
&,)数组类型
&,*-. 和 -
&/以 方式序列化数据
&0小结
3.1 调用 Web Service
之所以 将 提高到了如此的重要位置上,让它几乎成为了
服务器端逻辑最受推荐的实现方式,是因为 天生就是纯粹为了
业务逻辑而设计的。我们都知道, 没有提供什么“花哨”的用户界面,而是心无旁
骛地专注于程序逻辑上的实现,这恰好和 客户端编程模型所倡导的“将表现层
和业务逻辑层彻底分开”的理念不谋而合——客户端的 框架用来处理程序所有
的界面、与用户交互功能,服务器端则仅仅提供纯粹的数据,不涉及任何表现样式。
借助于 异步通讯层所自动生成的 客户端访问代理,在表现层代
码,也就是 # 中调用 获取数据成为了一件异常简单的事情——其表现
出的优雅甚至让我们不敢相信:难道 !" 程序也能写得这么简单?
接下来就让我们通过一个简单的示例程序了解一下在 应用程序中使用
# 异步调用 的方法。出于演示的目的,程序的功能非常简单:用户在
页面的文本框中输入名字,然后点击旁边的按钮,如图 &1' 所示。

图 &1'用户在界面中输入自己的名字
程序将借助 异步通讯层以 !" 方式把用户的名字发送至服务器端的
。随后该 在服务器端根据用户的名字生成一段问候信息并发送回客户端,
客户端收到服务器响应之后,将把这段问候信息显示出来,如图 &1 所示。
图 &1程序显示出来自服务器的问候信息
让我们先从服务器端的 入手。新建一个名为 2#. 的
类并在其中声明一个普通的 方法——+..34。该方法将接受一个
名为 52 的参数,并生成一条问候信息返回:
! "#$#%#&'(&)"(&)
* PublicClass)
+ ,,Inherits-

. ,,/$
0 ,,PublicFunction-1))ByVal#As#As#
2 ,,,,Return#31))45678#
9 ,,EndFunction
: EndClass
这就是个普通的 ,没有任何不一样之处。注意不要忘记为 +..34方法添加
6789属性,这是每个 方法都必需的。
为了让 生成该 的客户端异步调用代理,进而允许我们在
# 代码中直接调用该方法,我们还要再为 2#. 类添加
6#9属性,这一部分才是 为 提供的附加功能(注意
代码中粗体部分):
//…………
[ScriptService]
//…………
public class SimpleWebService : System.Web.Services.WebService
{
//…………
}
提示:我们也可以直接为需要暴露给客户端的 方法添加6#9属性,
而不必将其添加到 类上。
6#9属性位于 2# 命名空间中,如果需要的话,还要
添加如下的 5: 语句:
下面列出完整的 2#. 代码如下,注意其中粗体部分:
Imports-
! Imports-
* Imports-
+ Imports-()
. Imports-
0
2
9 "#$#%#&'(&)"(&)
:

5 PublicClass)
,,Inherits-
! ,,/$
* ,,PublicFunction-1))ByVal#As#As#
+ ,,,,Return#31))45678#
. ,,EndFunction
0 EndClass
完成了 编写之后,我们来先行测试一下——开发过程中不断地进行阶段性测试
有助于尽快发现潜在的问题,并将其扼杀在萌芽中。如果一切顺利的话,那么测试该
时可以看到如图 &1& 所示的结果。
剩余63页未读,继续阅读
资源评论


fzg268
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
