当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  深入Atlas 系列之客户端支持 2

 深入Atlas 系列之客户端支持 2

点击次数:20 次 发布日期:2008-11-26 11:09:07 作者:源代码网
源代码网推荐      第一种是:
源代码网推荐  
源代码网推荐    this.invoke第一种调用方式:
源代码网推荐  
源代码网推荐  1 this.invoke(
源代码网推荐  2 {
源代码网推荐  3  param1 : value1,
源代码网推荐  4  param2 : value2,
源代码网推荐  5  ……
源代码网推荐  6 },
源代码网推荐  7 {
源代码网推荐  8  onMethodComplete : ……,
源代码网推荐  9  onMethodTimeout : ……,
源代码网推荐  10  onMethodError : ……,
源代码网推荐  11  onMethodAborted : ……,
源代码网推荐  12  userContext : ……,
源代码网推荐  13  timeoutInterval : ……,
源代码网推荐  14  priority : ……,
源代码网推荐  15  useGetMethod : ……
源代码网推荐  16 });
源代码网推荐  
源代码网推荐    第二种是:
源代码网推荐  
源代码网推荐    this.invoke第二种调用方式:
源代码网推荐  
源代码网推荐  1 this.invoke(
源代码网推荐  2 {
源代码网推荐  3  param1 : value1,
源代码网推荐  4  param2 : value2,
源代码网推荐  5  ……
源代码网推荐  6 },
源代码网推荐  7 onMethodComplete,
源代码网推荐  8 onMethodTimeout,
源代码网推荐  9 onMethodError,
源代码网推荐  10 onMethodAborted,
源代码网推荐  11 userContext,
源代码网推荐  12 timeoutInterval,
源代码网推荐  13 priority,
源代码网推荐  14 useGetMethod);
源代码网推荐  
源代码网推荐    关于参数的含义,请参照this._invoke函数的分析。
源代码网推荐  
源代码网推荐    接下来分析this._invoke的代码,这才是真正工作的代码。
源代码网推荐  
源代码网推荐    this._invoke函数分析:
源代码网推荐  
源代码网推荐  1 // 参数定义:
源代码网推荐  2 // params:一个Dictionary,用key - value的方式保存即将传递给Web Services的参数
源代码网推荐  3 // onMethodComplete:调用完成时使用的回调函数
源代码网推荐  4 // onMethodTimeout:请求超时时使用的回调函数
源代码网推荐  5 // onMethodError:Web Services发生错误(例如抛出异常)时使用的回调函数
源代码网推荐  6 // onMethodAborted:请求被取消是使用得回调函数
源代码网推荐  7 // userContext:用户提供的任意参数,会在回调函数被执行时作为参数使用
源代码网推荐  8 // timeoutInterval:超时前所等待的时间,Number类型
源代码网推荐  9 // priority:优先级,Sys.net.WebRequestPriority枚举类型
源代码网推荐  10 // useGetMethod:是否使用HTTP GET方法,Boolean类型
源代码网推荐  11 this._invoke = function(params, onMethodComplete,
源代码网推荐  12 onMethodTimeout, onMethodError, onMethodAborted, userContext,
源代码网推荐  13 timeoutInterval, priority, useGetMethod) {
源代码网推荐  14
源代码网推荐  15 // 检测参数类型是否正确
源代码网推荐  16 window.debug.validateParameters("WebMethod.Invoke", arguments,
源代码网推荐  17 [
源代码网推荐  18 ["params", Object, true],
源代码网推荐  19 ["onMethodComplete", Function, true],
源代码网推荐  20 ["onMethodTimeout", Function, true],
源代码网推荐  21 ["onMethodError", Function, true],
源代码网推荐  22 ["onMethodAborted", Function, true],
源代码网推荐  23 ["timeoutInterval", Number, true],
源代码网推荐  24 ["priority", Number, true],
源代码网推荐  25 ["useGetMethod", Boolean, true]
源代码网推荐  26 ]);
源代码网推荐  27
源代码网推荐  28 // 使用Sys.Net.WebRequest对象进行AJAX请求
源代码网推荐  29 var request = new Sys.Net.WebRequest();
源代码网推荐  30
源代码网推荐  31 // 使用子类的addHeaders实现添加Header
源代码网推荐  32 this.addHeaders(request.get_headers());
源代码网推荐  33 // 使用子类的实现set_url实现设置url
源代码网推荐  34 request.set_url(this.get_url(params, useGetMethod));
源代码网推荐  35 // 使用子类的实现set_appUrl实现设置appUrl
源代码网推荐  36 request.set_appUrl(this.get_appUrl());
源代码网推荐  37
源代码网推荐  38 // 为了添加body,param不能为null
源代码网推荐  39 if (params == null) {
源代码网推荐  40  params = {};
源代码网推荐  41 }
源代码网推荐  42
源代码网推荐  43 // 使用子类的set_body实现设置body
源代码网推荐  44 request.set_body(this.get_body(params, useGetMethod));
源代码网推荐  45 // 将onComplete函数注册给Sys.Net.WebRequest的complete事件
源代码网推荐  46 request.completed.add(onComplete);
源代码网推荐  47 // 将onTimeout函数注册给Sys.Net.WebRequest的timeout事件
源代码网推荐  48 request.timeout.add(onTimeout);
源代码网推荐  49 // 将onAborted函数注册给Sys.Net.WebRequest的aborted事件
源代码网推荐  50 request.aborted.add(onAborted);
源代码网推荐  51
源代码网推荐  52 // 如果提供了timeoutInterval那么设置它
源代码网推荐  53 if (timeoutInterval) {
源代码网推荐  54  request.set_timeoutInterval(timeoutInterval);
源代码网推荐  55 }
源代码网推荐  56
源代码网推荐  57 // 如果priority不是Sys.Net.WebRequestPriority.High的话,
源代码网推荐  58 // 则设置WebRequest的Priority属性
源代码网推荐  59 if (priority >= 0) {
源代码网推荐  60  request.set_priority(priority);
源代码网推荐  61 }
源代码网推荐  62
源代码网推荐  63 // 获得methodName,为后面的onXXXX方法提供信息
源代码网推荐  64 var methodName = this.get_methodName();
源代码网推荐  65
源代码网推荐  66 request.invoke();
源代码网推荐  67
源代码网推荐  68 function onComplete(response, eventArgs) {
源代码网推荐  69  ……
源代码网推荐  70 }
源代码网推荐  71
源代码网推荐  72 function onTimeout(request, eventArgs) {
源代码网推荐  73  ……
源代码网推荐  74 }
源代码网推荐  75
源代码网推荐  76 function onAborted(request, eventArgs) {
源代码网推荐  77  ……
源代码网推荐  78 }
源代码网推荐  79
源代码网推荐  80 //返回Sys.Net.WebRequest对象,一般没有什么作用
源代码网推荐  81 return request;
源代码网推荐  82 }
源代码网推荐  
源代码网推荐    可以看出,Sys.Net.WebMethod是使用Sys.Net.WebReqeust来发出AJAX请求的。在Atlas应用中如果需要使用AJAX请求的话,应该全部使用Sys.Net.WebRequest,这个类不仅对于XMLHttpRequest进行了良好的封装,另外它使用了Sys.Net._WebRequestManager对于所有请求进行了全局地控制,使用了浏览器和HTTP协议的特性,提高了请求的效率。这一点几乎是微软介绍Atlas时都会着重强调的一点。
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华