蜘蛛爬网站,国内app开发商,手机软件制作网站平台,网站后台用什么软件做作者#xff1a;Dflying Chen #xff08;http://dflying.cnblogs.com/#xff09; 注#xff1a;Atlas中的Mashup极其复杂#xff0c;其中涉及众多的对象与架构#xff0c;为了写这篇文章#xff0c;我花了不少时间学习研究。同时#xff0c;关于这方面资源的匮乏简直…作者Dflying Chen http://dflying.cnblogs.com/ 注Atlas中的Mashup极其复杂其中涉及众多的对象与架构为了写这篇文章我花了不少时间学习研究。同时关于这方面资源的匮乏简直到了令人发指的地步。往往Google一下居然一条记录都没有……但Mashup在现今的AJAX程序中又是如此重要近一段时间内我也收到了好多朋友的消息希望我能介绍一下Mashup的心得这里我就斗胆献丑了。但目前为止我对Atlas中的Mashup也只是粗通皮毛所以这个系列中将仅仅通过一些实例应用来顺便说出我的理解其中一定有很多错误疏漏之处还请各位不吝斧正也欢迎大家探讨实际项目中遇到的问题。 对于传统的Web程序浏览器只与一台服务器进行通信并从这台服务器上得到所有信息。同时出于安全考虑页面上的JavaScript也只允许和同一台服务器通信。而随着目前Internet的发展越来越多的Web Service分散在互联网的各处作为开发人员的我们自然希望能够充分利用这些已经存在的Service这时我们就需要对远端的Web Service做以Mashup。这是一项常见的需求也是一项重复性很高的劳动幸运的是ASP.NET Atlas充分认识到了这一点并对此有着强大的内建支持。 Atlas通过引入一种新的HTTP模块——asbx文件其中b代表Bridge来实现对远端Web Service请求的Mashup。asbx文件其实是一个结构化的XML文档里面包含了对远端Web Service方法的封装当然您也可以同时指定一个CodeBehind CS文件用来对其进行一些复杂的控制。asbx文件和aspx文件位于同一台主机上。Atlas网站在编译的时候会根据asbx中的声明以及相应的CodeBehind文件如果存在将其编译并注册。这样当客户端JavaScript调用该asbx中定义的方法时asbx会将其转发给实际的Web Service并将返回结果会送给客户端起到一个Bridge的作用。而对于客户端就和直接调用 同一主机上的Web Service没什么不一样。 如果您安装过Atlas的msi文件并建立了一个Atlas Web Site那么下面的配置已经为您做好了。否则启用asbx的支持您需要如下的操作 在IIS的虚拟目录下按照下图所示添加.asbx文件的映射。 在web.config的sectionGroup段添加 section namewebServices typeMicrosoft.Web.Configuration.WebServicesSection / 在web.config的compilation段添加 buildProviders add extension.asbx typeMicrosoft.Web.Services.BridgeBuildProvider//buildProviders 在web.config的httphandlers段添加 add verb* path*.asbx typeMicrosoft.Web.Services.ScriptHandlerFactory validatefalse/ 在web.config的httpmodules段添加 add nameBridgeModule typeMicrosoft.Web.Services.BridgeModule/ 下面让我们通过一个最简单的示例学习Atlas中Mashup的基本概念和asbx文件的基本结构。 首先编写一个Web Service用来模拟在Internet上存在的一个服务。当然这个服务没什么实际用处仅仅是求两个integer的和 using System;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;[WebService(Namespace http://www.dflying.net/)][WebServiceBinding(ConformsTo WsiProfiles.BasicProfile1_1)]public class SimpleWebService : System.Web.Services.WebService{ [WebMethod] public int Add(int value1, int value2) { return value1 value2; }} 我将这个Web Service置于另外一台主机的IIS上注意我们应该更改web.config文件以允许通过HTTP GET对Web Service的访问而不仅仅是默认的POST webServices protocols add nameHttpGet/ /protocols /webServices 完成之后您可以在浏览器中测试一下访问http://dflyingchen/MyServices/SimpleWebService.asmx/Add?value11value22不要忘记更改前面相应的主机名如果你能得到下图所示的结果那么恭喜你Web Service没问题了。 下面就是最有“技术含量”的asbx文件了 ?xml version1.0 encodingutf-8 ?bridge namespaceTest classNameSimpleWebService proxy typeMicrosoft.Web.Services.BridgeRestProxy serviceUrlhttp://dflyingchen/MyServices/SimpleWebService.asmx/Add / method nameAdd input parameter namevalue1 / parameter namevalue2 / /input /method/bridge 注意到作为一个合法的XML文件asbx文件第一行是XML的声明。然后对于本asbx文件有如下部分 bridge段声明该mashup的namespace和class name。注意这两个属性代表的是客户端调用时所见的被mashup过的namespace和class name并不是远端Web Service的namespace和class name。 proxy段声明该mashup的类型这里我们指定为Microsoft.Web.Services.BridgeRestProxy相应的指定一个代表服务URL的stringhttp://dflyingchen/MyServices/SimpleWebService.asmx/Add 。 method段您可以添加多个method段每一个代表一个定义在上述URL中的服务。这里我们指定了Method的名称同样的它代表的仅是客户端调用的名称这样客户端将以namespace.classname.methodname()的方式调用该mashup。 input段其中通过parameter标记声明了该方法的参数。parameter标记中的name属性代表参数名注意这里声明的参数名要和远端Web Method的参数名保持一致。这里我们声明了两个参数与上面定义的Web Method的两个参数对应。 到此为止一个最简单的asbx文件就完成了。当然上述介绍与完备相距甚远。关于asbx文件中的其它可选声明目前并没有官方文档我只能在接下来的几个例子中根据使用情况适当介绍。 我们再来建立一个Atlas Page测试一下该mashup首先添加一个ScriptManager并添加对上述mashup的引用注意扩展名为asbx不要写习惯了就直接写成了asmx atlas:ScriptManager IDsm runatserver Services atlas:ServiceReference PathSimpleBridge.asbx / /Services/atlas:ScriptManager 然后添加一段HTML用来提供用户输入引发调用并显示结果 input idinput1 typetext value1 size3 /input idinput2 typetext value2 size3 /input iddoAdd typebutton valueAdd onclickreturn doAdd_onclick() /div idresult / 最后一小段JavaScript调用mashup方法 function doAdd_onclick() { var int1 $(input1).value; var int2 $(input2).value; Test.SimpleWebService.Add({value1: int1,value2: int2}, onAddComplete);}function onAddComplete(result) { $(result).innerHTML Result is: result;} 注意调用方法的签名是Test.SimpleWebService.Add()其中的每一部分都在asbx文件中有所声明。另外返回值是一个XML string这里为了简化就直接输出到页面上了。 浏览器中如下 示例程序源代码可以在此下载http://files.cnblogs.com/dflying/SimpleBridgeDemo.rar 在接下来的几个实例中我将对一些“真实有用”的Web Service进行mashup并应用到我们的程序中。 转载于:https://www.cnblogs.com/dflying/archive/2006/05/24/Atlas_and_Web_Service__Calling_Remote_Service_by_Creating_Mashup__Introduction_and_Basic_Demo.html