Atlas客户端实现对WebService的调用.doc_第1页
Atlas客户端实现对WebService的调用.doc_第2页
Atlas客户端实现对WebService的调用.doc_第3页
Atlas客户端实现对WebService的调用.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Atlas客户端实现对Web Service的调用在Web应用程序中,一个典型的设计模式是应用程序暴露出Web Service,并为用户提供用户界面。这样就构成了一个典型的N层架构:Web Service以及其暴露的数据信息构成了一个资源层。然后Web应用程序部分对这个资源层进行包装并提供给用户,即构成了表示层。为了让用户可以使用这些Web Service,开发者还需要创建一个运行于服务器端的应用程序,因为ASP.NET技术并不包含任何的可以完全在客户端为Web Service提供代理的实现。还需要创建一个Web应用程序,使用Visual Studio .NET或wsdl.exe生成Web Service的代理,并用该Web应用程序实现这个代理。在Atlas中,终于可以完全在客户端实现对Web Service的调用了。在创建Atlas客户端时,可以在ScriptManager的标签中添加元素,指向你的Web Service。稍后可以看到示例程序。理论上,Web Service非常适合用来完成被多个应用程序共同使用的业务逻辑。例如,在下面的示例程序中我将演示如何编写一个计算汽车价值的Web Service,汽车的价格将由它的生产厂商、型号以及出厂日期(用来计算折旧费用)决定。关于折旧费的计算比较有趣,因为折旧费用是与日期相关的,理论上这个计算将是一个存放在某台主机上的业务分析过程,所以它被设计成了Web Service。本示例中使用一个简单的算法:每年的折旧费用固定为2000美元。(当然,现实世界中计算折旧费将更为复杂。)这时,你可能会认为,客户端应用程序也能实现同样的功能。但问题在于每台计算机都有它自己的时钟,而折旧费用中对时间的计算应该基于一个标准的时钟。因此,在一个单独的地点进行这个计算是非常有必要的,同时因为允许远程调用,Web Service也就成为了最理想的实现技术。所以,若想看到客户端直接调用Web Service的实际效果,首先应该编写一个Web Service。在项目中添加一个新的Web Service,并将其命名为CarService.asmx。在此Web Service中添加一个名为getCarValue的WebMethod,代码如下:这个粗略的计算将本田汽车(Honda)的价格计为30000美元,如果型号为Pilot,则计为40000美元。其他厂家的汽车计为20000美元,如果型号为Pilot,则计为30000美元。每年的折旧费计为2000美元。接下来,创建一个Web Form,并将其命名为CalcCarValue.aspx。将一个Atlas ScriptManager控件拖放到CalcCarValue.aspx的设计器中,再添加三个HTML Input (Text)控件和一个Input (Button)控件,然后为上面三个Input (Text)控件分别添加标签Make、Model和Year,再分别指定这三个Input (Text)控件的id为txtMake、txtModel和txtYear。最后将按钮的text属性值设置为Get Value。设计器中的样子将如图3-15所示。图3-15 设计调用Web Service的客户端应用程序接下来,切换到这个Web Form的源文件视图,找到标签。在其中输入一个标签,并在这个标签中创建一个ServiceReference实例,指向CarService.asmx。代码如下所示:最后,编写调用Web Service代理的代码,并将页面上的那三个文本域的值传递给该Web Service。在设计视图中,双击Get Value按钮生成该按钮的事件处理函数。Visual Studio将自动切换至源文件视图(Source view),且光标将停留在Button1_onclick函数中。将下列代码添加到Button1_onclick函数中:在JavaScript中,可以用HTML控件所在的表单名作为前缀,加上该HTML控件的名称来得到这个控件的引用。在本示例中,表单名称为form1,因此通过form1.txtMake.value即可得到txtMake文本域中的值。Web Service代理的名称和Web Service本身的名称一致。在本示例中,Web Service的类名为CarService,因此它的代理的名称也为CarService。很多情况下Web Service将有一个以点号(.)分开的、层次化的名称(例如,MathFunctions.Services.DepreciationService),在这种情况下,它的代理也有着同样的名称。一种凭经验找到Web Service名称的方法是查看.asmx文件中的Class属性的值,它就是这个Web Service的名称。这时,你可能已经注意到了Web Service中定义的getCarValue方法仅仅接受3个参数,而在JavaScript的调用中却传入了5个参数。这两个附加的参数代表回调函数的名称,分别指向服务调用成功完成时执行的函数和服务调用超时时执行的函数。这种调用方式也将Ajax中异步特性的处理代码隐藏了起来。在本示例中,按照如下代码编写这两个回调函数:无论调用成功或超时,Web Service中定义的getCarValue方法都将返回一个值,包含在回调函数的result参数中。在本示例中,对于一次成功的请求/响应,result参数将包含经过计算后的该小汽车的价值。图3-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论