程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 異步調用Web服務

異步調用Web服務

編輯:.NET實例教程

對於某些請求,調用WebMethod並返回結果的過程需要較長的時間,有時,不能控制從請求數據的web服務,也不能控制這些服務的性能或響應時間,因此,應該考慮異步使用web服務,發出異步請求的ASP.Net應用程序可以在其內部的SOAP請求等待響應的同時,執行其他編程任務,在ASP。NET應用程序完成其他任務後,在從WEB服務那裡獲得結果.

    要異步使用Web服務,可以使用BeginXXX,EndXXX方法,其中,XXX是你的Web方法名,另外,還可以使用IsCompleted來檢查Web服務是否已經完成.這是一種方法,本文將討論在.Net2.0中異步調用Web服務的另外一種方法,當新建一個WebMethod,在客戶端引用這個Web服務後,除了可以看到這個Web方法外,還可以看到 XXXAsync,XXX Completed著兩個方法,下面就應用這兩個自動生成的方法來異步調用Web服務:

首先新建一個web服務,用於返回SQL Server2000中Pubs數據庫的authors表的全部記錄,異步調用Web服務,web服務部分不需要做任何改動,下面是c#代碼:

[WebMethod]
    public DataSet BA_OperationClassGetList()
    ...{
        string strCon = "Persist Security Info=false;Initial Catalog=pubs;User Id=sa;PassWord=;server=127.0.0.1";
        string SQLString = "select * from authors";
        SqlConnection connection = new SqlConnection(strCon);
        DataSet ds = new DataSet();
        connection.Open();
        SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
        command.Fill(ds, "ds");
        return ds;
    }

下面我將講解怎麼在客戶端異步調用這個web服務,(以Winfom為例),首先添加該Web服務的引用,下面是客戶端全部源代碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
...{
    public partial class Form1 : Form
  ...{
        private localhost.WebService service;
        public Form1()
        ...{
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        ...{
            //開始異步調用
            service.BA_OperationClassGetListAsync();
        }
        private void service_BA_OperationClassGetListCompleted(object sender, localhost.BA_OperationClassGetListCompletedEventArgs e)
        ...{
            DataSet ds = (DataSet)e.Result;
            dataGridVIEw1.DataSource = ds.Tables[0];
        }
        private void Form1_Load(object sender, EventArgs e)
  ...{
            service = new WindowsApplication1.localhost.WebService();
            service.BA_OperationClassGetListCompleted += new WindowsApplication1.localhost.BA_OperationClassGetListCompletedEventHandler(service_BA_OperationClassGetListCompleted);
        }
    }
}

至此,這個異步使用web服務的代碼已經書寫完畢,我們就可以在等待這個web響應的同時可以顯示一個滾動條或者提供一個取消按鈕,可以隨時終止WEB響應.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved