Web服務下的非同步呼叫
通過非同步呼叫機制,可以提高程式的執行效率,同時,給使用者良好的介面體驗。
.net2.0下提供了很好的機制來支援Web服務的非同步呼叫。
下面通過一個例子來說明Web服務下怎樣實現非同步呼叫。
首先先建立一個Web服務專案
publicclass MyService : System.Web.Services.WebService{
public MyService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
publicstring HelloWorld() {
return"Hello World";
}
}
然後再建立一個控制檯程式
新增Web Reference,會在Web Reference下生成一個localhost的Web Reference.
然後能過wsdl/namespace:MyService http://localhost/非同步呼叫/service.asmx?wsdl生成MyService代理類,然後新增到控制檯程式中。
using System;using System.Collections.Generic;
using MyService;
namespace AnsyDemo
{
class Program
{
staticbool MyStatus =false;
staticvoid Main(string[] args)
{
System.Timers.Timer tr =new System.Timers.Timer();
tr.Interval =1000;
tr.Enabled =true;
tr.Elapsed
//localhost.MyService MySeriveObj = new AnsyDemo.localhost.MyService();
//Console.WriteLine("開始呼叫遠端Web服務");
//開始非同步呼叫遠端服務
MyService.MyService MyServiceObj =new MyService.MyService();
Console.WriteLine("開始呼叫遠端Web服務");
//開始非同步呼叫遠端服務
MyServiceObj.BeginHelloWorld(new AsyncCallback(MyHelloWord), MyServiceObj);
//int i = 0;
//while (Program.MyStatus != true)
//{
// i++;
// Console.WriteLine("等待Web服務呼叫結束....#" + i.ToString());
//}
//Console.WriteLine("遠端呼叫結束");
int j =0;
for (int i =1; i <100; i++)
{
j += i;
}
Console.WriteLine(j.ToString());
Console.ReadLine();
}
staticvoid MyHelloWord(IAsyncResult iar)
{
MyService.MyService MyServices = (MyService.MyService)iar.AsyncState;
Console.WriteLine(MyServices.EndHelloWorld(iar));
//結束遠端呼叫
Program.MyStatus =true;
}
privatestaticvoid OnTimeEven(object source, System.Timers.ElapsedEventArgs e)
{
if (MyStatus ==true)
{
Console.WriteLine("呼叫結束");
}
}
}
}
在這段程式中,定義了一個定時器,在一個固定的時間,來測試非同步呼叫是否完成。(當MyStatus=true時,非同步呼叫完成)
MyService.MyService MyServiceObj =new MyService.MyService();Console.WriteLine("開始呼叫遠端Web服務");
//開始非同步呼叫遠端服務
MyServiceObj.BeginHelloWorld(new AsyncCallback(MyHelloWord), MyServiceObj);
這裡首先例項化Web服務,然後通過代理類myservice,來非同步呼叫方法HelloWorld,AsyncCallback是一個委託,當非同步呼叫完成時,它會自動呼叫MyHelloWrod方法。
我們通過MyHelloWrod方法,來呼叫EndHelloWrold方法,然後呼叫完成,設定MyStatus的狀態為true,當計時器再次檢測MyStatus時,為true,則非同步呼叫完成。
staticvoid MyHelloWord(IAsyncResult iar){
MyService.MyService MyServices = (MyService.MyService)iar.AsyncState;
Console.WriteLine(MyServices.EndHelloWorld(iar));
//結束遠端呼叫
Program.MyStatus =true;
}
相關推薦
Web服務下的非同步呼叫
通過非同步呼叫機制,可以提高程式的執行效率,同時,給使用者良好的介面體驗。 .net2.0下提供了很好的機制來支援Web服務的非同步呼叫。 下面通過一個例子來說明Web服務下怎樣實現非同步呼叫。 首先先建立一個Web服務專案 publicclass MyService :
Anthem 非同步呼叫web服務
新增web服務應用 觸發事件: onclick="GetProductsList();" 客戶端js主體: function GetProductsList() { var maxamount = document.getElementBy
Nginx 在Windows下搭建靜態Web服務
ima serve TCP/UDP load lis 服務 mage tor ext 簡介 nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic T
【linux】linux 環境下 安裝禪道(轉載) -- 跟web服務器無關,無視apache、nginx!!!
sdn php 修改 鏈接 net 壓縮 操作 tps 數據庫 參考文章 鏈接 :https://blog.csdn.net/xinxin19881112/article/details/46813991 講的非常完美、透徹,不像其他的文章,都是抄襲的,沒一點註意事項和自己
server2016下搭建web服務器&三種虛擬主機實驗文檔
服務器角色 訪問 要去 images www size html system 管理器 安裝web服務器 首先打開server2016的服務器管理器,點擊添加角色和功能如圖所示: 開始之前默認下一步如圖所示: 安裝類型默認下一步選擇基於角色或基於功能的安裝如圖所示:
server2016下搭建web服務器&三種虛擬主機實驗
端口號 選擇 ado 實現 itl ice p地址 效果 info 搭建web服務器web服務器的搭建實現方式有如下三種:1、基於IP地址2、基於端口號(默認80端口,可修改)3、基於主機名(
微服務優化之非同步呼叫
微服務優化之非同步呼叫 原文連結 前一節《微服務優化之並行》,主要從並行的角度來提高微服務的響應時間,本節講一下微服務優化之非同步呼叫。非同步的前提是對依賴的RPC介面呼叫,不需要關心其執行結果,對資料沒有強一致性要求,只要能夠達到最終一致性就好。 該種情況下,實現方式一般有兩種: 第一
linux下設定web服務tomcat記憶體
linux下設定web服務tomcat記憶體 一,java.lang.OutOfMemoryError: Java heap space JVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定.JVM在啟動的時候會自動設定Heap siz
釘釘機器人呼叫函式計算實現serverless web服務:傳統門禁的簡單改造,懶惰癌的福音
本文通過釘釘機器人呼叫函式計算實現的serverless web服務,打通物聯網平臺,和樹莓派實時通訊。實現了將原有傳統的磁吸門禁,改造成可以由釘釘來控制開門的簡單應用。 場景 由於本部門擁有獨立封閉的空間,在大門口配置了磁吸玻璃門,因此規定在工作期間出入需要隨手關門,以保證工作環境的私密性和安全性
webservice呼叫國內飛機航班時刻表 WEB 服務
昨天幫朋友寫的一個呼叫國內航班時刻表的測試程式,折騰了我好一會的時間,打算把它分享出來,共大家參考,其中wsdl:http://ws.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl 這個是介面文件:http://ws.webxml
linux系統下開啟一個簡單的web服務
linux 下開啟一個簡單的web服務: 首先需要linux下安裝nodejs 然後建立一個test.js: vi test.js var http =require("http"); function hello(req,res
nginx下配置多個web服務
一、nginx簡介: Nginx("engine x")是一款是由俄羅斯的程式設計師Igor Sysoev所開發高效能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 在高連線併發的情況下,Nginx是Apache伺服器不錯的替代品。 二、niginx預設conf配置檔
C# Web Service 不使用服務引用直接呼叫方法
using Microsoft.CSharp; using System; using System.CodeDom; using System.CodeDom.Compiler; using System.IO; using System.Net; using System.Text; usi
Dubbo剖析-服務消費端非同步呼叫
一、前言 前面我們講解的無論是正常呼叫還是泛化呼叫也好,都是進行同步呼叫的,也就是服務消費方發起一個遠端呼叫後,呼叫執行緒要被阻塞掛起,直到服務提供方返回。本節來講解下非同步呼叫,非同步呼叫是指服務消費方發起一個遠端呼叫後,不等服務提供方返回結果,呼叫方法就返回了,也就是當前執行緒不會被阻塞,這就允許呼叫方
Go語言:REST Web服務呼叫
Dynamsoft部署了基於REST的條形碼服務。這裡分享下如何使用Go語言傳送包含BASE64影象資料的HTTP POST請求。 環境配置 IDE: JetBrain Gogland.Go 1.7.4.Windows 10.工作目錄結構: <GOPATH>
在centos linux下用django搭建web服務,提供api對句子進行情感分析
在centos linux下搭建web服務 這兩天因為實驗室和小米的專案需要我搭建一個web服務返回產品評論的情感極性概率,我一個伺服器小白只好從零摸索搭建伺服器,遇到了很多無從下手的問題,計算機真的令人崩潰2333,寫個部落格記錄一下。 使用到的工具:
Kubernetes下web服務的效能測試三部曲之三:橫向擴容
本章是《Kubernetes下web服務的效能測試三部曲》系列的終篇,之前我們用AB和JMeter兩種工具壓測了k8s環境下的Tomcat,並通過調整記憶體和CPU來驗證縱向擴容的效果,本章我們來驗證橫向擴容對吞吐量的影響; 本文地址:http://blog.
linux下搭建基本web服務
服務端配置:1.安裝一個可以提供Web功能軟體[[email protected] ~]# yum -y install httpd2.啟動httpd服務[[email protected] ~]# systemctl restart httpd[[ema
Altova XMLSpy軟體測試使用soap遠端呼叫web服務
1:點選SOAP(O)下的建立新的soap請求 2:選擇本地的.wsdl檔案或者 遠端的web服務 3:設定傳送資訊 將所要傳送的xml檔案配置 將 <![CDATA[ 所要傳送的xml引數 ]]> 代
Ajax程式:處理非同步呼叫中的異常(在客戶端呼叫Web Service代理時發生異常的處理辦法)
一個好的Web應用程式,強大的異常處理是少不了的。最近在學習Ajax的過程中,我總結了幾種不同情況下的處理非同步呼叫中異常的不同辦法;想分享給大家; 1,在客戶端呼叫Web Service代理時發生異