熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

在ASP.NET Atlas中調用Web Service

2013-11-13 10:09:32  來源: .NET編程 

  Atlas Framework中包含了對AJAX調用的封裝讓您可以很方便的在客戶端通過JavaScript調用服務器端方法在本篇文章中我將解釋一下如何使用Atlas調用服務器端Web Service

  使用Atlas我們只需要如下步驟即可調用服務器端Web Service


    在Web Service的方法上加上[WebMethod]屬性
    在ASPX頁面上的ScriptManager中添加對這個Web Service的引用

  只需以上兩步Atlas會在運行時為您生成相應的mash up讓您可在客戶端JavaScript中通過WebServiceClassNameServiceMethodName()調用該方法

  讓我們先來看一個最簡單的例子調用服務器端Web Service得到兩個數的和

  首先建立一個Web ServiceSimpleWebServiceasmx並在其中添加一個Service Method不要忘記標記為[WebMethod]哦


[WebMethod]
public int AddInt(int int int int)
{
    return int + int;
}

  然後再ASPX頁面上的ScriptManager中添加對該Web Service的引用


<atlas:ScriptManager ID=ScriptManager runat=server>
    <Services>
        <atlas:ServiceReference Path=SimpleWebServiceasmx />
    </Services>
</atlas:ScriptManager> 添加點HTML Code讓用戶輸入兩個整數
Pass simple type to web service  add the two integers:<br />
<input id=int type=text value= size= />+
<input id=int type=text value= size= />=
<input id=btnAddInt type=button value=? onclick=return btnAddInt_onclick() /><br />
<br />

  再書寫一點JavaScript當用戶點擊上面的按鈕時調用Web Method這裡要注意的是JavaScript中調用Web Method的格式前面兩個參數intint分別對應著Web Service聲明中的兩個參數後面一個參數onAddIntComplete表示方法成功返回時的Callback方法也就是所謂AJAX中的A同時需要注意的是$()方法等同於documentgetElementById()


function btnAddInt_onclick() {
    var int = $(int)value;
    var int = $(int)value;
    SimpleWebServiceAddInt(int int onAddIntComplete);
}
function onAddIntComplete(result) {
    $(btnAddInt)value = result;
}

  上面的例子僅僅傳遞簡單類型然而在現實世界中我們經常會需要傳遞一些復雜的類型讓我們看一個傳遞復雜類型的例子

  本例子同樣是一個加法不過這回操作的類型是復數讓我們先來看看C#中我們的復數的定義(作為示例這裡盡可能的簡化)注意我們應該提供自定義的復雜類型一個無參的構造函數以便於Atlas自動在C#類型和JavaScript類型中轉換



public class ComplexNumber
{
    private int real;

    public int Real
    {
        get { return real; }
        set { real = value; }
    }
    private int imag;

    public int Imag
    {
        get { return imag; }
        set { imag = value; }
    }
    public ComplexNumber(int real int imag)
    {
        thisreal = real;
        thisimag = imag;
    }
    public ComplexNumber()
    {
    }
}

  然後是實現復數加法的Web Method寫在同一個Web Service中


[WebMethod]
public ComplexNumber AddComplexNumber(ComplexNumber num ComplexNumber num)
{
    return new ComplexNumber(numReal + numReal numImag + numImag);
} 相應的ASPX頁面中也要添加一些HTML讓用戶輸入兩個復數
Pass complex type to web service  add the two complex numbers:<br />
(<input id=cplxr type=text value= size= />+
<input id=cplxi type=text value= size= />i) + (
<input id=cplxr type=text value= size= />+
<input id=cplxi type=text value= size= />i) =  
<input id=btnAddComplex type=button value=? onclick=return btnAddComplex_onclick() />
<br />

  然後是相應的JavaScript當用戶點擊上面的按鈕時執行這段JavaScript以調用Web Method


function btnAddComplex_onclick() {
    var cplx = {Real: $(cplxr)value Imag: $(cplxi)value};
    var cplx = {Real: $(cplxr)value Imag: $(cplxi)value};
    SimpleWebServiceAddComplexNumber(cplx cplx onAddComplextNumberComplete);
}
function onAddComplextNumberComplete(result) {
    $(btnAddComplex)value = resultRealtoString() +  +  + resultImagtoString() + i;
}

  浏覽器中運行一下初始化

  點擊第一個問號調用AddInt () Web Method計算+得到

  點擊第二個問號調用AddComplexNumber () Web Method計算(+i) + (+i)得到+i

  源代碼可以在此下載
 通過以上兩個示例您已經了解了如何與服務器端Web Service進行復雜通信但實際開發中往往還需要進行一些其它的處理例如對服務器的錯誤信息的處理對超時的處理對用戶取消操作的處理等等Atlas同樣提供了對以上需求的內建的支持在後續文章中我將全面介紹Atlas對Web Service的mash up中對上述復雜情況的處理


From:http://tw.wingwit.com/Article/program/net/201311/12741.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.