[英]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.