自我感受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