日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

在ASP.NET Atlas中调用Web Service——创建Mashup调用远端Web Service(基础知识以及简单示例)...

發(fā)布時(shí)間:2023/11/29 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在ASP.NET Atlas中调用Web Service——创建Mashup调用远端Web Service(基础知识以及简单示例)... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
作者:Dflying Chen (http://dflying.cnblogs.com/)

注:Atlas中的Mashup極其復(fù)雜,其中涉及眾多的對(duì)象與架構(gòu),為了寫這篇文章,我花了不少時(shí)間學(xué)習(xí)研究。同時(shí),關(guān)于這方面資源的匱乏簡(jiǎn)直到了令人發(fā)指的地步。往往Google一下居然一條記錄都沒有……但Mashup在現(xiàn)今的AJAX程序中又是如此重要,近一段時(shí)間內(nèi),我也收到了好多朋友的消息,希望我能介紹一下Mashup的心得,這里我就斗膽獻(xiàn)丑了。但目前為止,我對(duì)Atlas中的Mashup也只是粗通皮毛,所以這個(gè)系列中將僅僅通過一些實(shí)例應(yīng)用來順便說出我的理解,其中一定有很多錯(cuò)誤疏漏之處,還請(qǐng)各位不吝斧正!也歡迎大家探討實(shí)際項(xiàng)目中遇到的問題。

對(duì)于傳統(tǒng)的Web程序,瀏覽器只與一臺(tái)服務(wù)器進(jìn)行通信,并從這臺(tái)服務(wù)器上得到所有信息。同時(shí)出于安全考慮,頁(yè)面上的JavaScript也只允許和同一臺(tái)服務(wù)器通信。而隨著目前Internet的發(fā)展,越來越多的Web Service分散在互聯(lián)網(wǎng)的各處,作為開發(fā)人員的我們自然希望能夠充分利用這些已經(jīng)存在的Service,這時(shí),我們就需要對(duì)遠(yuǎn)端的Web Service做以Mashup。這是一項(xiàng)常見的需求,也是一項(xiàng)重復(fù)性很高的勞動(dòng),幸運(yùn)的是,ASP.NET Atlas充分認(rèn)識(shí)到了這一點(diǎn),并對(duì)此有著強(qiáng)大的內(nèi)建支持。

Atlas通過引入一種新的HTTP模塊——asbx文件(其中b代表Bridge),來實(shí)現(xiàn)對(duì)遠(yuǎn)端Web Service請(qǐng)求的Mashup。asbx文件其實(shí)是一個(gè)結(jié)構(gòu)化的XML文檔,里面包含了對(duì)遠(yuǎn)端Web Service方法的封裝,當(dāng)然,您也可以同時(shí)指定一個(gè)CodeBehind CS文件用來對(duì)其進(jìn)行一些復(fù)雜的控制。asbx文件和aspx文件位于同一臺(tái)主機(jī)上。Atlas網(wǎng)站在編譯的時(shí)候會(huì)根據(jù)asbx中的聲明以及相應(yīng)的CodeBehind文件(如果存在)將其編譯并注冊(cè)。這樣當(dāng)客戶端JavaScript調(diào)用該asbx中定義的方法時(shí),asbx會(huì)將其轉(zhuǎn)發(fā)給實(shí)際的Web Service并將返回結(jié)果會(huì)送給客戶端,起到一個(gè)Bridge的作用。而對(duì)于客戶端,就和直接調(diào)用 同一主機(jī)上的Web Service沒什么不一樣。

如果您安裝過Atlas的msi文件,并建立了一個(gè)Atlas Web Site,那么下面的配置已經(jīng)為您做好了。否則,啟用asbx的支持,您需要如下的操作:

  • 在IIS的虛擬目錄下按照下圖所示,添加.asbx文件的映射。
  • 在web.config的sectionGroup段添加:
  • <section?name="webServices"?type="Microsoft.Web.Configuration.WebServicesSection"?/>
  • 在web.config的compilation段添加:
  • <buildProviders>
    ???
    <add?extension=".asbx"?type="Microsoft.Web.Services.BridgeBuildProvider"/>
    </buildProviders>

  • 在web.config的httphandlers段添加:
  • <add?verb="*"?path="*.asbx"?type="Microsoft.Web.Services.ScriptHandlerFactory"?validate="false"/>
  • 在web.config的httpmodules段添加:
  • <add?name="BridgeModule"?type="Microsoft.Web.Services.BridgeModule"/>

    下面讓我們通過一個(gè)最簡(jiǎn)單的示例學(xué)習(xí)Atlas中Mashup的基本概念和asbx文件的基本結(jié)構(gòu)。

    首先,編寫一個(gè)Web Service用來模擬在Internet上存在的一個(gè)服務(wù)。當(dāng)然,這個(gè)服務(wù)沒什么實(shí)際用處,僅僅是求兩個(gè)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;
    ????}

    }

    我將這個(gè)Web Service置于另外一臺(tái)主機(jī)的IIS上,注意:我們應(yīng)該更改web.config文件以允許通過HTTP GET對(duì)Web Service的訪問,而不僅僅是默認(rèn)的POST: <webServices>
    ??
    <protocols>
    ????
    <add?name="HttpGet"/>
    ??
    </protocols?>
    </webServices>

    完成之后,您可以在瀏覽器中測(cè)試一下,訪問:http://dflyingchen/MyServices/SimpleWebService.asmx/Add?value1=1&value2=2(不要忘記更改前面相應(yīng)的主機(jī)名),如果你能得到下圖所示的結(jié)果,那么恭喜你,Web Service沒問題了。

    下面就是最有“技術(shù)含量”的asbx文件了:

    <?xml?version="1.0"?encoding="utf-8"??>
    <bridge?namespace="Test"?className="SimpleWebService">

    ??
    <proxy?type="Microsoft.Web.Services.BridgeRestProxy"?
    ?????????serviceUrl
    ="http://dflyingchen/MyServices/SimpleWebService.asmx/Add"?/>

    ??
    <method?name="Add">
    ????
    <input>
    ??????
    <parameter?name="value1"?/>
    ??????
    <parameter?name="value2"?/>
    ????
    </input>
    ??
    </method>
    </bridge>

    注意到作為一個(gè)合法的XML文件,asbx文件第一行是XML的聲明。然后,對(duì)于本asbx文件,有如下部分:
  • bridge段,聲明該mashup的namespaceclass name。注意這兩個(gè)屬性代表的是客戶端調(diào)用時(shí)所見的被mashup過的namespace和class name,并不是遠(yuǎn)端Web Service的namespace和class name。
  • proxy段,聲明該mashup的類型,這里我們指定為Microsoft.Web.Services.BridgeRestProxy,相應(yīng)的,指定一個(gè)代表服務(wù)URL的string:http://dflyingchen/MyServices/SimpleWebService.asmx/Add 。
  • method段,您可以添加多個(gè)method段,每一個(gè)代表一個(gè)定義在上述URL中的服務(wù)。這里我們指定了Method的名稱,同樣的,它代表的僅是客戶端調(diào)用的名稱(這樣客戶端將以namespace.classname.methodname()的方式調(diào)用該mashup)。
  • input段,其中通過parameter標(biāo)記聲明了該方法的參數(shù)。parameter標(biāo)記中的name屬性代表參數(shù)名,注意這里聲明的參數(shù)名要和遠(yuǎn)端Web Method的參數(shù)名保持一致。這里我們聲明了兩個(gè)參數(shù),與上面定義的Web Method的兩個(gè)參數(shù)對(duì)應(yīng)。
  • 到此為止,一個(gè)最簡(jiǎn)單的asbx文件就完成了。當(dāng)然,上述介紹與完備相距甚遠(yuǎn)。關(guān)于asbx文件中的其它可選聲明,目前并沒有官方文檔,我只能在接下來的幾個(gè)例子中根據(jù)使用情況適當(dāng)介紹。

    我們?cè)賮斫⒁粋€(gè)Atlas Page測(cè)試一下該mashup,首先添加一個(gè)ScriptManager,并添加對(duì)上述mashup的引用,注意擴(kuò)展名為asbx,不要寫習(xí)慣了就直接寫成了asmx:

    <atlas:ScriptManager?ID="sm"?runat="server">
    ????
    <Services>
    ????????
    <atlas:ServiceReference?Path="SimpleBridge.asbx"?/>
    ????
    </Services>
    </atlas:ScriptManager>

    然后添加一段HTML,用來提供用戶輸入,引發(fā)調(diào)用并顯示結(jié)果; <input?id="input1"?type="text"?value="1"?size="3"?/>
    <input?id="input2"?type="text"?value="2"?size="3"?/>
    <input?id="doAdd"?type="button"?value="Add"?onclick="return?doAdd_onclick()"?/>
    <div?id="result"?/>

    最后,一小段JavaScript調(diào)用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;
    }

    注意調(diào)用方法的簽名是Test.SimpleWebService.Add(),其中的每一部分都在asbx文件中有所聲明。另外,返回值是一個(gè)XML string,這里為了簡(jiǎn)化,就直接輸出到頁(yè)面上了。

    瀏覽器中如下:

    示例程序源代碼可以在此下載:http://files.cnblogs.com/dflying/SimpleBridgeDemo.rar

    在接下來的幾個(gè)實(shí)例中,我將對(duì)一些“真實(shí)有用”的Web Service進(jìn)行mashup并應(yīng)用到我們的程序中。

    轉(zhuǎn)載于:https://www.cnblogs.com/dflying/archive/2006/05/24/Atlas_and_Web_Service__Calling_Remote_Service_by_Creating_Mashup__Introduction_and_Basic_Demo.html

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的在ASP.NET Atlas中调用Web Service——创建Mashup调用远端Web Service(基础知识以及简单示例)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。