本文从创建Web服务、在Windows Forms 中调用Web服务、异步调用服务等方面介绍了建立ASP.NET Web 服务的步骤。

树立ASP.NET Web服务过程(1):创立Web服务

新建-项目-Web-Asp.net服务应用程序,把HelloWorld给删去,ReverseString办法,如下:

代码:

  1. usingSystem;
  2. usingSystem.Collections;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Linq;
  6. usingSystem.Web;
  7. usingSystem.Web.Services;
  8. usingSystem.Web.Services.Protocols;
  9. usingSystem.Xml.Linq;
  10. namespaceWebService2
  11. {
  12. ///<summary>
  13. ///Service1的摘要阐明
  14. ///</summary>
  15. [WebService(Namespace="http://tempuri.org/")]
  16. [WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
  17. [ToolboxItem(false)]
  18. //若要答应运用ASP.NETAJAX从脚本中调用此Web服务,请撤销对下行的注释。
  19. //[System.Web.Script.Services.ScriptService]
  20. publicclassService1:System.Web.Services.WebService
  21. {
  22. [WebMethod]
  23. publicstringReverseString(stringmessage)//新建这个办法
  24. {
  25. char[]arr=message.ToCharArray();
  26. Array.Reverse(arr);
  27. message=newstring(arr);
  28. returnmessage;
  29. }
  30. }
  31. }

测验服务:

树立ASP.NET Web服务过程详解(asp.net web服务是基于什么创建的)  ASP.NET Web服务 第1张

点击办法,输入abcde,点调用

树立ASP.NET Web服务过程详解(asp.net web服务是基于什么创建的)  ASP.NET Web服务 第2张

测验成果:

树立ASP.NET Web服务过程详解(asp.net web服务是基于什么创建的)  ASP.NET Web服务 第3张

回来xml,edcba 测验正确。

树立ASP.NET Web服务过程(2):在Windows Forms 中调用Web服务

新建Windows Forms 工程,留意上面服务不要关,爽性双开VS吧,以免出问题。项目-增加服务引证,地址中输入Web服务的地址,上例:http://localhost:1241/Service1.asmx,假如Web服务现已发布,请填写发布的地址。

找到服务后确认:

树立ASP.NET Web服务过程详解(asp.net web服务是基于什么创建的)  ASP.NET Web服务 第4张

在Form上参加两个TextBox,一个Button,双击Button,编写事情。

代码:

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Drawing;
  6. usingSystem.Linq;
  7. usingSystem.Text;
  8. usingSystem.Windows.Forms;
  9. namespaceWindowsFormsApplication9
  10. {
  11. publicpartialclassForm1:Form
  12. {
  13. publicForm1()
  14. {
  15. InitializeComponent();
  16. }
  17. privatevoidbutton1_Click(objectsender,EventArgse)
  18. {
  19. ServiceReference1.Service1SoapClientws=newServiceReference1.Service1SoapClient();
  20. textBox2.Text=ws.ReverseString(textBox1.Text);
  21. }
  22. }
  23. }

运转成果:

树立ASP.NET Web服务过程详解(asp.net web服务是基于什么创建的)  ASP.NET Web服务 第5张

树立ASP.NET Web服务过程(3):异步调用服务

因为Web服务在网络上运用,所以假如网速欠好,或服务器端忙很长时刻没有相应的话,那么履行调用的程序将堵塞,以致界面卡死,不能相应。如安在调用服务的时分不堵塞呢?便是选用异步调用服务的办法。服务端不必修正,只修正客户端就能够了。

首要,在解决方案管理器的Service Reference中,右键该引证,点装备服务引证。如下画面:

树立ASP.NET Web服务过程详解(asp.net web服务是基于什么创建的)  ASP.NET Web服务 第6张

选中【生成异步操作】,确认。

代码:

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Drawing;
  6. usingSystem.Linq;
  7. usingSystem.Text;
  8. usingSystem.Windows.Forms;
  9. namespaceWindowsFormsApplication9
  10. {
  11. publicpartialclassForm1:Form
  12. {
  13. publicForm1()
  14. {
  15. InitializeComponent();
  16. }
  17. privatevoidbutton1_Click(objectsender,EventArgse)
  18. {
  19. //ServiceReference1.Service1SoapClientws=newServiceReference1.Service1SoapClient();
  20. //textBox2.Text=ws.ReverseString(textBox1.Text);
  21. ServiceReference1.Service1SoapClientclient=newServiceReference1.Service1SoapClient();
  22. //client.ReverseStringCompleted+=newEventHandler<ServiceReference1.ReverseStringCompletedEventArgs>(client_ReverseStringCompleted);
  23. client.ReverseStringCompleted+=client_ReverseStringCompleted;//简易写法
  24. client.ReverseStringAsync(textBox1.Text);
  25. }
  26. privatevoidclient_ReverseStringCompleted(objectsender,ServiceReference1.ReverseStringCompletedEventArgse)
  27. {
  28. textBox2.Text=e.Result;
  29. }
  30. }
  31. }

为了让测验愈加传神,能够在服务器端,参加演示,模仿服务器或网络的延时。

服务端代码:

  1. usingSystem;
  2. usingSystem.Collections;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Linq;
  6. usingSystem.Web;
  7. usingSystem.Web.Services;
  8. usingSystem.Web.Services.Protocols;
  9. usingSystem.Xml.Linq;
  10. namespaceWebService2
  11. {
  12. ///<summary>
  13. ///Service1的摘要阐明
  14. ///</summary>
  15. [WebService(Namespace="http://tempuri.org/")]
  16. [WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
  17. [ToolboxItem(false)]
  18. //若要答应运用ASP.NETAJAX从脚本中调用此Web服务,请撤销对下行的注释。
  19. //[System.Web.Script.Services.ScriptService]
  20. publicclassService1:System.Web.Services.WebService
  21. {
  22. [WebMethod]
  23. publicstringReverseString(stringmessage)//新建这个办法
  24. {
  25. char[]arr=message.ToCharArray();
  26. Array.Reverse(arr);
  27. message=newstring(arr);
  28. System.Threading.Thread.Sleep(5000);//为了证明异步的作用特增加延时
  29. returnmessage;
  30. }
  31. }
  32. }

运转成果:在等候服务器回来的时刻内,界面没有卡死,证明异步调用成功。

树立ASP.NET Web服务过程(4):ASP.NET客户程序

上面是在Windows Forms 里完结的Web服务调用,现在用ASP.NET来调用相同的服务。

根本与Windows Forms相似,首要增加Web服务引证,然后增加代码如下:

  1. usingSystem;
  2. usingSystem.Configuration;
  3. usingSystem.Data;
  4. usingSystem.Linq;
  5. usingSystem.Web;
  6. usingSystem.Web.Security;
  7. usingSystem.Web.UI;
  8. usingSystem.Web.UI.HtmlControls;
  9. usingSystem.Web.UI.WebControls;
  10. usingSystem.Web.UI.WebControls.WebParts;
  11. usingSystem.Xml.Linq;
  12. publicpartialclass_Default:System.Web.UI.Page
  13. {
  14. protectedvoidPage_Load(objectsender,EventArgse)
  15. {
  16. }
  17. protectedvoidButton1_Click(objectsender,EventArgse)
  18. {
  19. ServiceReference1.Service1SoapClientclient=newServiceReference1.Service1SoapClient();
  20. TextBox2.Text=client.ReverseString(TextBox1.Text);
  21. }
  22. }

运转成果:

树立ASP.NET Web服务过程详解(asp.net web服务是基于什么创建的)  ASP.NET Web服务 第7张

树立ASP.NET Web服务过程(5):类的传递

上面的比如是简单是数据类型,现在试一下传递一个自定义类。

服务器端代码:

  1. usingSystem;
  2. usingSystem.Collections;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Linq;
  6. usingSystem.Web;
  7. usingSystem.Web.Services;
  8. usingSystem.Web.Services.Protocols;
  9. usingSystem.Xml.Linq;
  10. namespaceWebService2
  11. {
  12. publicenumTemperatureType
  13. {
  14. Fahrenheit,
  15. Celsius
  16. }
  17. publicenumTemparatureCondition
  18. {
  19. Rainy,
  20. Sunny,
  21. Cloudy,
  22. Thunderstorm
  23. }
  24. publicclassGetWeatherRequest
  25. {
  26. publicstringCity;
  27. publicTemperatureTypeTemperatureType;
  28. }
  29. publicclassGetWeatherResponse
  30. {
  31. publicTemparatureConditionCondition;
  32. publicintTemperature;
  33. }
  34. ///<summary>
  35. ///Service1的摘要阐明
  36. ///</summary>
  37. [WebService(Namespace="http://tempuri.org/")]
  38. [WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
  39. [ToolboxItem(false)]
  40. //若要答应运用ASP.NETAJAX从脚本中调用此Web服务,请撤销对下行的注释。
  41. //[System.Web.Script.Services.ScriptService]
  42. publicclassService1:System.Web.Services.WebService
  43. {
  44. [WebMethod]
  45. publicstringReverseString(stringmessage)//新建这个办法
  46. {
  47. char[]arr=message.ToCharArray();
  48. Array.Reverse(arr);
  49. message=newstring(arr);
  50. System.Threading.Thread.Sleep(5000);//为了证明异步的作用特增加延时
  51. returnmessage;
  52. }
  53. [WebMethod]
  54. publicGetWeatherResponseGetWeather(GetWeatherRequestreq)
  55. {
  56. GetWeatherResponseresp=newGetWeatherResponse();
  57. Randomr=newRandom();
  58. intcelsius=r.Next(-20,50);
转载请说明出处
知优网 » 树立ASP.NET Web服务过程详解(asp.net web服务是基于什么创建的)

发表评论

您需要后才能发表评论