演练:从 Windows 窗体调用 XML Web services

80酷酷网    80kuku.com

  services|web|window|xmlXML Web services 是 Visual Studio 的一个新功能,它提供在松耦合环境中使用标准协议(如 HTTP、XML、XSD、SOAP 和 WSDL)交换消息的功能。可以结构化和类型化这些消息或对这些消息进行松散定义。因为 Web 服务基于标准协议,所以 Web 服务应用程序可以与各种不同的实现、平台和设备通讯。有关更多信息,请参阅托管代码中的 XML Web services。
可以使用 Web 服务增强 Windows 窗体功能。连接 Windows 窗体和 Web 服务与调用 Web 服务方法一样简单,这些方法在服务器上进行处理,然后返回方法调用的结果。
有两种类型的 Web 服务方法:同步和异步。当调用同步 Web 服务方法时,调用方等待 Web 服务响应后再继续执行操作。当调用异步 Web 服务方法时,可以在等待 Web 服务响应的同时继续使用调用线程。这使得您能够在客户端应用程序中有效地使用现有的线程集合。有关使用同步和异步 Web 服务方法的更多信息,请参阅使用托管代码访问 XML Web services。
同步 Web 服务方法
调用同步 Web 服务方法包括调用该方法;等待在服务器上进行的计算并返回一个值;然后再继续执行 Windows 窗体中的其他代码。
创建 XML Web services

  1. 创建 Web 服务应用程序。有关更多信息,请参阅创建托管代码中的 XML Web services。
  2. 在解决方案资源管理器中,用右键单击 .asmx 文件并选择“查看代码”。
  3. 创建执行相加的 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;
}
  1. 创建另一个执行相乘的 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;
}
  1. 从“生成”菜单中,选择“生成解决方案”。也可以浏览到在此项目中创建的 .asmx 文件,以便了解 Web 服务的更多信息。现在就可以从 Windows 窗体调用 Web 服务了。

同步调用 XML Web services
  1. 创建新的 Windows 应用程序。有关更多信息,请参阅创建 Windows 应用程序项目。
  2. 添加对上面创建的 Web 服务的引用。详细信息,请参阅添加和移除 Web 引用。
  3. 从工具箱中,添加三个 TextBox 控件和两个 Button 控件。文本框用于数字,按钮则用于计算和调用 Web 服务方法。
  4. 按以下方式设置控件的属性:

控件
属性
文本
TextBox1
Text
0
TextBox2
Text
0
TextBox3
Text
0
Button1
Text
相加
Button2
Text
相乘
  1. 用右键单击该窗体并选择“查看代码”。
  2. 将 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();
  1. 为 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();
}
  1. 以相同方式为 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();
}
  1. F5 键运行应用程序。在前两个文本框中输入值。当按“添加”按钮时,第三个文本框将显示两个值的和。当按“乘”按钮时,第三个文本框将显示两个值的积。

注意 因为 Web 服务要在服务器上实例化,所以服务器需要花费一段时间来处理第一个 Web 服务调用。在应用程序中按这些按钮时,要切记这一点。下面一节处理这种时间滞后。
异步 Web 服务
当调用异步 Web 服务方法时,应用程序在等待 Web 服务响应的同时继续运行。这使得您能够在客户端应用程序中有效地使用资源。这种在 Windows 应用程序中实现 Web 服务的方法非常节省资源。
详细信息,请参阅异步访问托管代码中的 XML Web services。
 

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: