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

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

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

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

  

  肯定網絡

  

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

  

  添加Web服務完成學習

  

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

  

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

  

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

  

  下一步,鏈接屬性spa

  

  接着下一步

  

  選擇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.

相關文章
相關標籤/搜索