偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

建立ASP.NET Web服務(wù)步驟詳解

開發(fā) 后端
本文從創(chuàng)建Web服務(wù)、在Windows Forms 中調(diào)用Web服務(wù)、異步調(diào)用服務(wù)等方面介紹了建立ASP.NET Web 服務(wù)的步驟。

建立ASP.NET Web服務(wù)步驟(1):創(chuàng)建Web服務(wù)

新建-項(xiàng)目-Web-Asp.net服務(wù)應(yīng)用程序,把HelloWorld給刪除,ReverseString方法,如下:

代碼:

  1. using System;  
  2. using System.Collections;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Linq;  
  6. using System.Web;  
  7. using System.Web.Services;  
  8. using System.Web.Services.Protocols;  
  9. using System.Xml.Linq;  
  10.  
  11. namespace WebService2  
  12. {  
  13.     /// < summary>  
  14.     /// Service1 的摘要說明  
  15.     /// < /summary>  
  16.     [WebService(Namespace = "http://tempuri.org/")]  
  17.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  18.     [ToolboxItem(false)]  
  19.     // 若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務(wù),請取消對下行的注釋。  
  20.     // [System.Web.Script.Services.ScriptService]  
  21.     public class Service1 : System.Web.Services.WebService  
  22.     {  
  23.  
  24.         [WebMethod]  
  25.         public string ReverseString(string message)  //新建這個(gè)方法  
  26.         {  
  27.             char[] arr = message.ToCharArray();  
  28.             Array.Reverse(arr);  
  29.             message = new string(arr);  
  30.             return message;  
  31.         }  
  32.     }  

測試服務(wù):

測試服務(wù) 

點(diǎn)擊方法,輸入abcde,點(diǎn)調(diào)用

輸入abcde,點(diǎn)調(diào)用 

測試結(jié)果:

測試結(jié)果 

返回xml,edcba 測試正確。

建立ASP.NET Web服務(wù)步驟(2):在Windows Forms 中調(diào)用Web服務(wù)

新建Windows Forms 工程,注意上面服務(wù)不要關(guān),干脆雙開VS吧,免得出問題。項(xiàng)目-添加服務(wù)引用,地址中輸入Web服務(wù)的地址,上例:http://localhost:1241/Service1.asmx,如果Web服務(wù)已經(jīng)發(fā)布,請?zhí)顚懓l(fā)布的地址。

找到服務(wù)后確定:

找到服務(wù)后確定 

在Form上加入兩個(gè)TextBox,一個(gè)Button,雙擊Button,編寫事件。

代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9.  
  10. namespace WindowsFormsApplication9  
  11. {  
  12.     public partial class Form1 : Form  
  13.     {  
  14.         public Form1()  
  15.         {  
  16.             InitializeComponent();  
  17.         }  
  18.  
  19.         private void button1_Click(object sender, EventArgs e)  
  20.         {  
  21.             ServiceReference1.Service1SoapClient ws = new ServiceReference1.Service1SoapClient();  
  22.             textBox2.Text = ws.ReverseString(textBox1.Text);  
  23.         }  
  24.     }  

運(yùn)行結(jié)果:

運(yùn)行結(jié)果 

建立ASP.NET Web服務(wù)步驟(3):異步調(diào)用服務(wù)

由于web服務(wù)在網(wǎng)絡(luò)上使用,所以如果網(wǎng)速不好,或服務(wù)器端忙很長時(shí)間沒有相應(yīng)的話,那么執(zhí)行調(diào)用的程序?qū)⒆枞?,以至界面卡死,不能相?yīng)。如何在調(diào)用服務(wù)的時(shí)候不阻塞呢?就是采用異步調(diào)用服務(wù)的方式。服務(wù)端不用修改,只修改客戶端就可以了。

首先,在解決方案管理器的Service Reference中,右鍵該引用,點(diǎn)配置服務(wù)引用。如下畫面:

異步調(diào)用服務(wù) 

選中【生成異步操作】,確定。

代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9.  
  10. namespace WindowsFormsApplication9  
  11. {  
  12.     public partial class Form1 : Form  
  13.     {  
  14.         public Form1()  
  15.         {  
  16.             InitializeComponent();  
  17.         }  
  18.  
  19.           
  20.         private void button1_Click(object sender, EventArgs e)  
  21.         {  
  22.             //ServiceReference1.Service1SoapClient ws = new ServiceReference1.Service1SoapClient();  
  23.             //textBox2.Text = ws.ReverseString(textBox1.Text);  
  24.               
  25.             ServiceReference1.Service1SoapClient client = new ServiceReference1.Service1SoapClient();  
  26.             //client.ReverseStringCompleted += new EventHandler< ServiceReference1.ReverseStringCompletedEventArgs>(client_ReverseStringCompleted);   
  27.             client.ReverseStringCompleted += client_ReverseStringCompleted;  //簡易寫法  
  28.             client.ReverseStringAsync(textBox1.Text);              
  29.         }  
  30.         private void client_ReverseStringCompleted(object sender, ServiceReference1.ReverseStringCompletedEventArgs e)   
  31.         {   
  32.             textBox2.Text = e.Result;   
  33.         }          
  34.     }  

為了讓測試更加逼真,可以在服務(wù)器端,加入演示,模擬服務(wù)器或網(wǎng)絡(luò)的延時(shí)。

服務(wù)端代碼:

  1. using System;  
  2. using System.Collections;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Linq;  
  6. using System.Web;  
  7. using System.Web.Services;  
  8. using System.Web.Services.Protocols;  
  9. using System.Xml.Linq;  
  10.  
  11. namespace WebService2  
  12. {  
  13.     /// < summary>  
  14.     /// Service1 的摘要說明  
  15.     /// < /summary>  
  16.     [WebService(Namespace = "http://tempuri.org/")]  
  17.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  18.     [ToolboxItem(false)]  
  19.     // 若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務(wù),請取消對下行的注釋。  
  20.     // [System.Web.Script.Services.ScriptService]  
  21.     public class Service1 : System.Web.Services.WebService  
  22.     {  
  23.  
  24.         [WebMethod]  
  25.         public string ReverseString(string message)  //新建這個(gè)方法  
  26.         {  
  27.             char[] arr = message.ToCharArray();  
  28.             Array.Reverse(arr);  
  29.             message = new string(arr);  
  30.  
  31.             System.Threading.Thread.Sleep(5000);//為了證明異步的效果特添加延時(shí)  
  32.  
  33.             return message;  
  34.         }  
  35.     }  

運(yùn)行結(jié)果:在等待服務(wù)器返回的時(shí)間內(nèi),界面沒有卡死,證明異步調(diào)用成功。

建立ASP.NET Web服務(wù)步驟(4):ASP.NET客戶程序

上面是在Windows Forms 里完成的Web服務(wù)調(diào)用,現(xiàn)在用ASP.NET來調(diào)用相同的服務(wù)。

基本與Windows Forms類似,首先添加Web服務(wù)引用,然后添加代碼如下:

  1. using System;  
  2. using System.Configuration;  
  3. using System.Data;  
  4. using System.Linq;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.HtmlControls;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.WebControls.WebParts;  
  11. using System.Xml.Linq;  
  12.  
  13. public partial class _Default : System.Web.UI.Page   
  14. {  
  15.     protected void Page_Load(object sender, EventArgs e)  
  16.     {  
  17.  
  18.     }  
  19.     protected void Button1_Click(object sender, EventArgs e)  
  20.     {  
  21.         ServiceReference1.Service1SoapClient  client = new ServiceReference1.Service1SoapClient();  
  22.         TextBox2.Text = client.ReverseString(TextBox1.Text);  
  23.     }  

運(yùn)行結(jié)果:

ASP.NET客戶程序 

建立ASP.NET Web服務(wù)步驟(5):類的傳遞

上面的例子是簡單是數(shù)據(jù)類型,現(xiàn)在試一下傳遞一個(gè)自定義類。

服務(wù)器端代碼:  

  1. using System;  
  2. using System.Collections;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Linq;  
  6. using System.Web;  
  7. using System.Web.Services;  
  8. using System.Web.Services.Protocols;  
  9. using System.Xml.Linq;  
  10.  
  11. namespace WebService2  
  12. {  
  13.     public enum TemperatureType  
  14.     {  
  15.         Fahrenheit,  
  16.         Celsius  
  17.     }  
  18.  
  19.     public enum TemparatureCondition  
  20.     {  
  21.         Rainy,  
  22.         Sunny,  
  23.         Cloudy,  
  24.         Thunderstorm  
  25.     }  
  26.  
  27.     public class GetWeatherRequest  
  28.     {  
  29.         public string City;  
  30.         public TemperatureType TemperatureType;  
  31.     }  
  32.  
  33.     public class GetWeatherResponse  
  34.     {  
  35.         public TemparatureCondition Condition;  
  36.         public int Temperature;  
  37.     }  
  38.  
  39.     /// < summary>  
  40.     /// Service1 的摘要說明  
  41.     /// < /summary>  
  42.     [WebService(Namespace = "http://tempuri.org/")]  
  43.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  44.     [ToolboxItem(false)]  
  45.     // 若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務(wù),請取消對下行的注釋。  
  46.     // [System.Web.Script.Services.ScriptService]  
  47.     public class Service1 : System.Web.Services.WebService  
  48.     {  
  49.  
  50.         [WebMethod]  
  51.         public string ReverseString(string message)  //新建這個(gè)方法  
  52.         {  
  53.             char[] arr = message.ToCharArray();  
  54.             Array.Reverse(arr);  
  55.             message = new string(arr);  
  56.  
  57.             System.Threading.Thread.Sleep(5000);//為了證明異步的效果特添加延時(shí)  
  58.  
  59.             return message;  
  60.         }  
  61.  
  62.         [WebMethod]  
  63.         public GetWeatherResponse GetWeather(GetWeatherRequest req)  
  64.         {  
  65.             GetWeatherResponse resp = new GetWeatherResponse();  
  66.             Random r = new Random();  
  67.             int celsius = r.Next(-20, 50);  
  68.  
  69.             if (req.TemperatureType == TemperatureType.Celsius)  
  70.                 resp.Temperature = celsius;  
  71.             else 
  72.                 resp.Temperature = (212 - 32) / 100 * celsius + 32;  
  73.  
  74.             if (req.City == "Redmond")  
  75.                 resp.Condition = TemparatureCondition.Rainy;  
  76.             else 
  77.                 resp.Condition = (TemparatureCondition)r.Next(0, 3);  
  78.  
  79.             return resp;  
  80.         }  
  81.  
  82.     }  

客戶端代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8. using WindowsFormsApplication10.ServiceReference1;//加上,認(rèn)識一下需要傳遞的參數(shù)類,以及返回的類。  
  9.  
  10. namespace WindowsFormsApplication10  
  11. {  
  12.     public partial class Form1 : Form  
  13.     {  
  14.         public Form1()  
  15.         {  
  16.             InitializeComponent();  
  17.         }  
  18.  
  19.         private void label2_Click(object sender, EventArgs e)  
  20.         {  
  21.  
  22.         }  
  23.  
  24.         private void button1_Click(object sender, EventArgs e)  
  25.         {  
  26.             GetWeatherRequest req = new GetWeatherRequest();//有了最上面那個(gè)using這下找到這個(gè)類了吧,不然肯定找不到。  
  27.  
  28.             if (radioButton1.Checked)  
  29.             {  
  30.                 req.TemperatureType = TemperatureType.Celsius;  
  31.             }  
  32.             else 
  33.             {  
  34.                 req.TemperatureType = TemperatureType.Fahrenheit;  
  35.             }  
  36.  
  37.             req.City = textBox1.Text;  
  38.  
  39.             Service1SoapClient client = new Service1SoapClient();  
  40.             GetWeatherResponse resp = client.GetWeather(req);  
  41.  
  42.             textBox2.Text = resp.Condition.ToString();  
  43.             textBox3.Text = resp.Temperature.ToString();  
  44.               
  45.  
  46.         }  
  47.     }  

運(yùn)行結(jié)果:

類的傳遞 

【編輯推薦】

  1. 學(xué)習(xí)C#消息:循序漸進(jìn)
  2. 解惑答疑:C#委托和事件
  3. 學(xué)習(xí)C#實(shí)現(xiàn)HTTP協(xié)議:多線程文件傳輸
  4. 進(jìn)一步接觸C#委托與事件
  5. 淺析四種C#轉(zhuǎn)換的區(qū)別
責(zé)任編輯:book05 來源: cnblogs
相關(guān)推薦

2009-07-28 15:53:43

ASP.NET Web

2009-07-23 15:18:30

創(chuàng)建XML Web服務(wù)ASP.NET

2009-07-28 16:29:06

XML Web服務(wù)ASP.NET構(gòu)造

2009-07-28 17:34:28

ASP.NET XML

2009-07-20 17:27:01

配置ASP.NET

2009-07-29 16:08:07

ASP和ASP.NET

2009-07-23 15:11:43

XML Web服務(wù)方法ASP.NET

2009-07-22 16:25:41

ASP.NET AJA

2009-07-28 16:57:50

ASP.NET Ses

2009-08-05 11:14:33

ASP.NET ISA

2009-07-24 10:14:22

ASP.NET開發(fā)

2009-07-29 12:55:44

ASP.NET身份驗(yàn)證

2009-04-20 13:34:27

ASP.NET視頻教程Web開發(fā)

2009-08-10 18:43:05

ASP.NET安裝步驟

2009-07-23 13:19:51

2009-07-24 15:31:45

ASP.NET學(xué)習(xí)

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-07-28 10:43:23

Web服務(wù)器ASP.NET

2009-07-29 17:16:47

2009-07-23 13:09:23

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號