仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 708|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页设计在ASP.NET Atlas中挪用Web Service―处...

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:38:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。asp.net|web|毛病在本系列的上一篇(在ASP.NETAtlas中挪用WebService――先容及复杂使用)中,我们熟习了Atlas中挪用WebService的最基本办法,可是在实践开辟中,仅仅收回哀求并守候前往了局是不敷的,我们多数必要思索对毛病超时等的处置,也要同意用户作废操纵。侥幸的是,Atlas对WebService中的WebMethod的封装也充实思索到了这些需求。让我们举一个WebMethod的例子来讲明,比方,关于以下的WebMethod:
publicclassComplexWebService:System.Web.Services.WebService{
[WebMethod]
publicstringBadMethod(intdelayTime,boolthrowException)
{
//somethingsomething
}
}
Atlas发生的JavaScriptmashup将会有以下的署名:ComplexWebService.BadMethod(
delayTime,
throwException,
onMethodComplete,
onMethodTimeout,
onMethodError,
onMethodAborted,
userContext,
timeoutInterval,
priority,
useGetMethod,
);
注重到WebMethod中的两个参数依照按次作为了JavaScript办法的前两个参数,接上去另有一些分外的参数:
onMethodComplete:指定当该办法顺遂完成并前往时被触发的回调函数名,一样平常情形下您应当老是指定这个办法。
onMethodTimeout,:指定当该办法实行超不时被触发的函数名。
onMethodError:指定当该办法在实行中碰到非常时被触发的函数名。
onMethodAborted:制订当该办法实行时代被用户作废时被触发的函数名。
userContext:用户高低文工具,在上述四个函数中都能够会见到。
timeoutInterval:设定超时的工夫限定,单元毫秒,默许值仿佛为90000。一样平常情形下不必要变动。
priority:设定该办法的实行优先级。该优先级将被用于批量AJAX操纵(将鄙人一篇中提到)中。
useGetMethod:是不是接纳HTTPGET来发送哀求,默许为false。
上述这八个属性的按次必需依照指定的来。但偶然候我们只必要指定按次靠后的某个参数,就不能不同时誊写后面的参数。为此,Atlas特地为我们供应了另外一种挪用办法,将上述八个参数以dictionary的情势传给该办法。比方当我们只必要onMethodComplete和timeoutInterval参数时,能够如许写:
ComplexWebService.BadMethod(
delayTime,
throwException,
{
onMethodComplete:completeHandler,
timeoutInterval:10000
}
);
OK,让我们经由过程一个实例看看在一样平常情形下上述四种回调函数(onMethodComplete,onMethodTimeout,onMethodError和onMethodAborted)中的罕见处置。
起首让我们完成开首部分的WebService办法:
usingSystem;
usingSystem.Web;
usingSystem.Web.Services;
usingSystem.Web.Services.Protocols;
[WebService(Namespace="http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
publicclassComplexWebService:System.Web.Services.WebService{
[WebMethod]
publicstringBadMethod(intdelayTime,boolthrowException)
{
if(throwException)
{
thrownewException("Sorry,Idonotliketodothis!");
}
System.Threading.Thread.Sleep(delayTime);
return"Done!";
}
}
能够看到该办法有两个参数:delayTime指定该办法的延时,throwException指定该办法是不是掷出非常。经由过程把持这两个参数和挪用时的timeoutInterval参数,我们就能够摹拟完成,超时和非常的三种情形。
然后,在页面中到场ScriptManager并增加对这个WebService的援用:
<atlas:ScriptManagerID="ScriptManager1"runat="server">
<Services>
<atlas:ServiceReferencePath="ComplexWebService.asmx"/>
</Services>
</atlas:ScriptManager>
在ASPX页面上增加四个按钮,用来触发下述四种情形:<div>
ThisisaBADmethod,itcan:<br/>
<inputid="btnWorkFine"type="button"value="workfine"/>
<inputid="btnTimeOut"type="button"value="timeout"/>
<inputid="btnThrowException"type="button"value="throwanexception"/>
<inputid="btnCanceld"type="button"value="getcanceled"/>
</div>
一般完成,我们指定服务器端没有延时也没有非常,并给出了一个公道的(10秒)的超不时间:
functionbtnWorkFine_onclick(){
ComplexWebService.BadMethod(
0,
false,
onBadMethodComplete,
onBadMethodTimeout,
onBadMethodError,
onBadMethodAborted,
"btnWorkFine_onclick",
10000
);
}
functiononBadMethodComplete(result)
{
alert(result);
}
超时,指定服务器端延时3秒,但超不时间设置成为仅1秒:
functionbtnTimeOut_onclick(){
ComplexWebService.BadMethod(
3000,
false,
onBadMethodComplete,
onBadMethodTimeout,
onBadMethodError,
onBadMethodAborted,
"btnTimeOut_onclick",
1000
);
}
functiononBadMethodTimeout(request,userContext)
{
vartimeoutString="Thecallto"+userContext+"failedduetotimeout!";
alert(timeoutString);
}
非常,制订服务器端掷出非常。注重回调函数中可使用response参数失掉具体的毛病信息:
functionbtnThrowException_onclick(){
ComplexWebService.BadMethod(
0,
true,
onBadMethodComplete,
onBadMethodTimeout,
onBadMethodError,
onBadMethodAborted,
"btnThrowException_onclick",
10000
);
}
functiononBadMethodError(result,response,userContext)
{
varerrorString="Test"+userContext+"failed!";
if(result==null){
errorString+="Statuscode="+response.get_statusCode()+"";
}
else{
errorString+=
"Message="+result.get_message()+
"
stackTrace="+result.get_stackTrace();
}

alert(errorString);
}
用户作废,与一般完成相似,不外在收回哀求后立即利用request.abort()作废了操纵:
functionbtnCanceld_onclick(){
varrequest=ComplexWebService.BadMethod(
2000,
false,
onBadMethodComplete,
onBadMethodTimeout,
onBadMethodError,
onBadMethodAborted,
"btnCanceld_onclick",
10000
);
request.abort();
}
functiononBadMethodAborted(request,userContext){
varerrorString="Thecallto"+userContext+"failed,requestisaborted!";
alert(errorString);
}
不过你如果学.net的话,你就不要选os了,这课比较底层的。你可以旁听数据库加上软件构件和中间件。(webservices和面向服务的课也应该听一听)
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 20:25:07 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
海妖 该用户已被删除
板凳
发表于 2015-1-25 22:19:18 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
若天明 该用户已被删除
地板
发表于 2015-2-4 08:09:48 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-9 19:54:53 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
透明 该用户已被删除
6#
发表于 2015-2-27 19:47:42 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
小魔女 该用户已被删除
7#
发表于 2015-3-9 12:24:45 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
爱飞 该用户已被删除
8#
发表于 2015-3-16 22:08:40 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
莫相离 该用户已被删除
9#
发表于 2015-3-23 05:21:17 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-2 01:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表