簡體   English   中英

Asp.net中的異步Web服務

[英]Asynchronous webservice in Asp.net

如何在asp.net中設置異步Web服務?

我想調用web服務將一些數據發布到數據庫,但我不關心響應是否失敗或成功。

我只能使用.net 2.0或3.5,它可以是vb或c#。

在visual studio中創建服務引用時,單擊“高級...”按鈕並選中“生成異步操作”。 然后,您可以選擇對Web服務進行異步調用。

以下是對公共Web服務的同步和同一異步調用的示例。

// http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl
using(var wf = new WeatherForecasts.WeatherSoapClient())
{
    // example synchronous call
    wf.GetCityForecastByZIP("20850");

    // example asynchronous call
    wf.BeginGetCityForecastByZIP("20850", result => wf.EndGetCityForecastByZIP(result), null);
}

調用BeginXxx並不對結果做任何事情可能很誘人,因為你不關心它。 你實際上會泄漏資源。 重要的是每個BeginXxx呼叫都與相應的EndXxx呼叫匹配。

即使你有一個調用EndXxx的回調,這是在線程池線程上觸發的,並且一旦BeginXxx調用完成,它就可以自由完成調用BeginXxx的原始線程(它不等待響應)。

Web服務通常用於請求/響應樣式服務。 也就是說,有一個簡單的機制來執行異步實現: http//msdn.microsoft.com/en-us/library/aa480516.aspx 有一些方法可以解雇並忘記webservices: http//blogs.x2line.com/al/archive/2007/05/21/3108.aspx使用SoapDocumentMethod上的OneWay屬性。

聽起來沒有任何理由說Web服務必須是同步的。 去異步以獲得最佳性能,特別是如果某些任務可能長時間運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM