一個簡單的Webservice的demo,簡單模擬服務


  前段時間一直在學習WCF,匆匆忙忙的把《WCF全面解析》和《WCF服務編程》看了一遍,好多東西都不是很懂,又聽了一下WCF分布式開發的網絡教程,算是馬馬虎虎的明白點了。回顧了一下Webservice,將二者進行比較學習。考慮到以后的發展,當時決定學習WCF,希望自己在不久的將來能將WCF學的稍微精通點吧。這幾天又將Webservice看了一遍,回想當時學習Webservice處處碰到坑,由於沒人指點,連最基本地點發布都折騰好長時間,只能一點一點的填坑跳坑。這幾天閑了,想寫一個簡單的Webservice,希望能給當時和我一樣的人有所幫助,也當給自己做個筆記。簡單的demo,大牛可以繞道了,食品追溯

  先寫個WinForm調用的模擬服務的,下篇寫個WebForm下AJAX調用的。

  首先,新建一個空的web應用程序。文件—>新建—>項目,選擇Web下的ASP.NET 空 Web 應用程序。取名:MyWeb,如下圖:

  

  確定

  

  再添加Web服務,添加—>新建項—>Web—>Web 服務,取名:MyService.asmx。如下圖:

  

  添加Web服務完成

  

  在這里,模擬一個服務,類似於通過生日查詢上輩子是誰的的測試。數據庫添加點簡單的數據,如下圖:

  

  這里偷懶,我用EF了。添加—>新建項—>數據—>ADO.NET 實體數據模型,取名:DB.edmx。如下圖: 

  

  數據表已經建好了,選擇從數據庫生成,如下圖:

  

  下一步,連接屬性

  

  接着下一步

  

  選擇WhoAreYou表,完成

  

  在服務端寫服務,這里只簡單些個獲取名字的方法。服務端代碼:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Services;
 6 
 7 namespace MyWeb
 8 {
 9     /// <summary>
10     /// MyService 的摘要說明
11     /// </summary>
12     [WebService(Namespace = "http://tempuri.org/")]
13     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
14     [System.ComponentModel.ToolboxItem(false)]
15     // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消注釋以下行。 
16     // [System.Web.Script.Services.ScriptService]
17     public class MyService : System.Web.Services.WebService
18     {
19         muyiEntities db = new muyiEntities();
20         // 問:請用一句話概況你的職業
21         // 答:Hello World
22         [WebMethod]
23         public string HelloWorld()
24         {
25             return "Hello World";
26         }
27 
28         // Description是對服務方法的描述介紹
29         [WebMethod(Description = "模擬根據生日測試你上輩子是誰?")]
30         public string WhoAreYou(string birthday)
31         {
32             // 根據客戶端提供的生日,查詢數據庫,查出對應的人。
33             List<WhoAreYou> who = db.WhoAreYou.Where(u => u.Birthday == birthday).ToList();
34             // 本例模擬一個生日只對應一個人
35             WhoAreYou you = who[0];
36             //返回對應人名字
37             return you.Name;
38         }
39     }
40 }

  寫好以后,我們要發布到IIS上,先建立一個空網站。打開IIS,網站—>添加網站,輸入IP、端口。這里有兩個坑。首先,網站的名稱要和發布的web服務名稱一致,不然報錯,在發布服務時提示沒有MyService的站點。第二,應用程序池要選擇程序集4.0,如果是2.0,會提示錯誤。這是當時我做的時候遇到的兩個坑。

  

  建立好空站點后,我們將寫好的web服務發布到這里。首先生成一下,發布。將Web服務發布到我們剛在建立的網站。

  發布成功后瀏覽網站

  

  報錯,沒有添加默認文檔

  

  添加默認文檔

  

  雙擊打開,右鍵—>添加,或點擊右上角的添加,錄入服務的名字

  

  瀏覽,成功

  

  好了,現在可以調用服務了。為了區別,重新新建一個winform窗體項目

    

  添加服務引用

  

  在地址欄中填入Web服務地址,在這里注意命名空間,這里改為了MWS,是客戶端調用服務的命名空間。

  

  引用成功后,在引用文件夾下多出來了MWS,如下圖:

  

  打開窗體,后台,我們開始寫客戶端的調用代碼。

  

 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.Threading.Tasks;
 9 using System.Windows.Forms;
10 using WEBFORM.MWS;
11 
12 namespace WEBFORM
13 {
14     public partial class FormHello : Form
15     {
16         public FormHello()
17         {
18             InitializeComponent();
19         }
20 
21         private void btnTest_Click(object sender, EventArgs e)
22         {
23             if (txtBirthday.Text.Trim() == "")
24             {
25                 MessageBox.Show("請輸入生日");
26                 return;
27             }
28             string birthday = txtBirthday.Text;
29             MyServiceSoapClient ws = new MyServiceSoapClient();
30             txtName.Text = ws.WhoAreYou(birthday);
31         }
32     }
33 }

  F5運行

  

  點擊測試按鈕

  

  結束語:Stay Hungry. Stay Foolish.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM