WebService

前言

  自我感受WebService沒有太多東西,就簡單記錄一下。web

創建

  新建一個爲空的Web項目,添加一個Web服務,會自動生成一個asmx文件,右鍵該文件,選擇「設置爲起始頁」,雙擊該文件。瀏覽器

   /// <summary>
    /// WebService1 的摘要說明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要容許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消註釋如下行。 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }

  F5運行,會啓動默認瀏覽器,會打開一個網頁,裏面有一個鏈接「HelloWorld」,這個就是HelloWorld的方法,點擊進入另外一個界面,顯示「HelloWorld」,下面有一個「調用」按鈕,點擊出顯示一個XML格式的內容,這是返回string類型。spa

1 <string>Hello World</string>

新建方法

  如何返回的是實體,會是什麼樣子,先新建一個Company類,簡單定義Id,CompanyName和CompanyAddress屬性。code

 1     /// <summary>
 2     /// 公司
 3     /// </summary>
 4     public class Company
 5     {
 6         /// <summary>
 7         /// Id
 8         /// </summary>
 9         public int Id { get; set; }
10 
11         /// <summary>
12         /// 名稱
13         /// </summary>
14         public string CompanyName { get; set; }
15 
16         /// <summary>
17         /// 地址
18         /// </summary>
19         public string CompAddress { get; set; }
20     }

  從新定義一個GetCompanyList方法,[]裏面WebMethod,定義該方法是Web方法,()裏面Description是對該方法的一個描述,在網頁的Web方法先馬會有一段說明,及爲該內容。orm

 1         /// <summary>
 2         /// 獲得公司信息
 3         /// </summary>
 4         /// <returns></returns>
 5         [WebMethod(Description = "獲得公司信息")]
 6         public List<Company> GetCompanyList()
 7         {
 8             List<Company> compList = new List<Company>();
 9             compList.Add(new Company { Id = 1, CompanyName = "First", CompAddress = "北京" });
10             compList.Add(new Company { Id = 2, CompanyName = "Second", CompAddress = "天津" });
11             compList.Add(new Company { Id = 3, CompanyName = "Third", CompAddress = "河北" });
12             return compList;
13         }

  這樣會傳輸什麼呢,仍是XML格式blog

1 <ArrayOfCompany><Company><Id>1</Id><CompanyName>First</CompanyName><CompAddress>北京</CompAddress></Company><Company><Id>2</Id><CompanyName>Second</CompanyName><CompAddress>天津</CompAddress></Company><Company><Id>3</Id><CompanyName>Third</CompanyName><CompAddress>河北</CompAddress></Company></ArrayOfCompany>

  乍看,好像挺好的,沒什麼問題,可是若是成千上萬條大的數據會如何,XML會很大,傳輸的string也會很大,難道就沒有好的方法?Json出現了,Json把一些屬性名縮減爲一個簡短的代號,來傳輸,這樣就減小了不少,Json在這就很少說了,有時間再專門寫它。ip

  最後就是發佈,配置。在項目中右鍵「添加服務引用(S)」,填寫配置的地址,「轉到」能夠查看連接狀態,命名爲「TestService」,而後肯定,成功添加該服務。get

  代碼中webservice

 1             TestService.WebService1 testService = new TestService.WebService1();
 2             testService.GetCompanyListAsync();
 3             testService.GetCompanyListCompleted += (x,y) =>
 4                 {
 5                     //訪問webservice錯誤
 6                     if(y.Error != null)
 7                     {
 8                     }
 9                     else
10                     {
11                         //出錯
12                         if (y.Result == null)
13                         {
14                         }
15                         else
16                         {
17                             List<Company> CompanyList = new List<Company>();
18                             TestService.Company[] companyArray = y.Result;
19                             foreach (var tempComp in companyArray)
20                             {
21                                 Public.PublicBase.CompanyList.Add(new Company { Id = tempComp.Id, CompanyName = tempComp.CompanyName, CompanyAddress = tempComp.CompAddress });
22                             }
23      24                         }
25                     }
26                     27                 };

  就能夠取到具體的數據~string

相關文章
相關標籤/搜索