services|web|window|xml XML Web services 是 Visual Studio 的一個新功能,它提供在松耦合環境中使用標準協議(如 HTTP、XML、XSD、SOAP 和 WSDL)交換訊息的功能。可以結構化和類型化這些訊息或對這些訊息進行鬆散定義。因為 Web 服務基於標準協議,所以 Web 服務應用程式可以與各種不同的實現、平台和裝置通訊。有關更多資訊,請參閱Managed 程式碼中的 XML Web services。
可以使用 Web 服務增強 Windows 表單功能。串連 Windows 表單和 Web 服務與調用 Web 服務方法一樣簡單,這些方法在伺服器上進行處理,然後返回方法調用的結果。
有兩種類型的 Web 服務方法:同步和非同步。當調用同步 Web 服務方法時,調用方等待 Web 服務響應後再繼續執行操作。當調用非同步 Web 服務方法時,可以在等待 Web 服務響應的同時繼續使用調用線程。這使得您能夠在用戶端應用程式中有效地使用現有的線程集合。有關使用同步和非同步 Web 服務方法的更多資訊,請參閱使用Managed 程式碼訪問 XML Web services。
同步 Web 服務方法
調用同步 Web 服務方法包括調用該方法;等待在伺服器上進行的計算並返回一個值;然後再繼續執行 Windows 表單中的其他代碼。
建立 XML Web services
- 建立 Web 服務應用程式。有關更多資訊,請參閱建立Managed 程式碼中的 XML Web services。
- 在方案總管中,用按右鍵 .asmx 檔案並選擇“查看代碼”。
- 建立執行相加的 Web 服務方法。以下 Web 服務方法將兩個整數相加,然後返回兩者的和:
4. ' Visual Basic
5. <WebMethod()> Public Function WebAdd(ByVal x As Integer, ByVal y As Integer) As Integer
6. Return x + y
7. End Function
8.
9. // C#
10. [WebMethod]
11. public int WebAdd(int x, int y)
12. {
13. return x + y;
}
- 建立另一個執行相乘的 Web 服務方法。以下 Web 服務方法將兩個整數相乘,並返回兩者的積:
15. ' Visual Basic
16. <WebMethod()> Public Function WebMultiply(ByVal x As Integer, ByVal y As Integer) As Integer
17. Return x * y
18. End Function
19.
20. // C#
21. [WebMethod]
22. public int WebMultiply(int x, int y)
23. {
24. return x * y;
}
- 從“產生”菜單中,選擇“產生解決方案”。也可以瀏覽到在此項目中建立的 .asmx 檔案,以便瞭解 Web 服務的更多資訊。現在就可以從 Windows 表單調用 Web 服務了。
同步調用 XML Web services
- 建立新的 Windows 應用程式。有關更多資訊,請參閱建立 Windows 應用程式項目。
- 添加對上面建立的 Web 服務的引用。詳細資料,請參閱添加和移除 Web 參考。
- 從工具箱中,添加三個 TextBox 控制項和兩個 Button 控制項。文字框用於數字,按鈕則用於計算和調用 Web 服務方法。
- 按以下方式設定控制項的屬性:
控制項
屬性
文本
TextBox1
Text
0
TextBox2
Text
0
TextBox3
Text
0
Button1
Text
相加
Button2
Text
相乘
- 用按右鍵該表單並選擇“查看代碼”。
- 將 Web 服務的執行個體建立為類成員。需要知道建立上述 Web 服務所在的伺服器名稱。
7. ' Visual Basic
8. ' Replace
localhost below with the name of the server where
9. ' you created the Web service.
10. Dim MathServiceClass As New
localhost.Service1()
11.
12. // C#
localhost.Service1 MathServiceClass = new
localhost.Service1();
- 為 Button1 的 Click 事件建立事件處理常式。詳細資料,請參閱在“Windows 表單設計器”上建立事件處理常式。
14. ' Visual Basic
15. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
16. ' Create instances of the operands and result.
17. Dim x, y, z As Integer
18. ' Parse the contents of the text boxes into integers.
19. x = Integer.Parse(TextBox1.Text)
20. y = Integer.Parse(TextBox2.Text)
21. ' Call the WebAdd Web service method from the instance of the Web service.
22. z = MathServiceClass.WebAdd(x, y)
23. TextBox3.Text = z.ToString
24. End Sub
25.
26. // C#
27. private void button1_Click(object sender, System.EventArgs e)
28. {
29. // Create instances of the operands and result.
30. int x, y, z;
31. // Parse the contents of the text boxes into integers.
32. x = int.Parse(textBox1.Text);
33. y = int.Parse(textBox2.Text);
34. // Call the WebAdd Web service method from the instance of the Web service.
35. z = MathServiceClass.WebAdd(x, y);
36. textBox3.Text = z.ToString();
}
- 以相同方式為 Button2 的 Click 事件建立事件處理常式,並添加以下代碼。
38. ' Visual Basic
39. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
40. ' Create instances of the operands and result.
41. Dim x, y, z As Integer
42. ' Parse the contents of the text boxes into integers.
43. x = Integer.Parse(TextBox1.Text)
44. y = Integer.Parse(TextBox2.Text)
45. ' Call the WebMultiply Web service method from the instance of the Web service.
46. z = MathServiceClass.WebMultiply(x, y)
47. TextBox3.Text = z.ToString
48. End Sub
49.
50. // C#
51. private void button2_Click(object sender, System.EventArgs e)
52. {
53. // Create instances of the operands and result.
54. int x, y, z;
55. // Parse the contents of the text boxes into integers.
56. x = int.Parse(textBox1.Text);
57. y = int.Parse(textBox2.Text);
58. // Call the WebAdd Web service method from the instance of the Web service.
59. z = MathServiceClass.WebMultiply(x, y);
60. textBox3.Text = z.ToString();
}
- 按 F5 鍵運行應用程式。在前兩個文字框中輸入值。當按“添加”按鈕時,第三個文字框將顯示兩個值的和。當按“乘”按鈕時,第三個文字框將顯示兩個值的積。
注意 因為 Web 服務要在伺服器上執行個體化,所以伺服器需要花費一段時間來處理第一個 Web 服務調用。在應用程式中按這些按鈕時,要切記這一點。下面一節處理這種時間滯後。
非同步 Web 服務
當調用非同步 Web 服務方法時,應用程式在等待 Web 服務響應的同時繼續運行。這使得您能夠在用戶端應用程式中有效地使用資源。這種在 Windows 應用程式中實現 Web 服務的方法非常節省資源。
詳細資料,請參閱非同步訪問Managed 程式碼中的 XML Web services。