Xml WebService完全執行個體解析(2)

來源:互聯網
上載者:User
上篇文章介紹了些webservice的基本特性和我們例子的結構,這篇文章我們將開始具體的代碼編寫工作.
  
  這個專題主要講述的是webservice,因此這裡我們的代碼以Webservice相關為主,而其他工程,例如:ServiceGatherSite,WebSiteA等,只將簡略介紹.  

  在VS2003中,開發一個webservice並不是件困難的事,首先,我們建立一個webservice項目(檔案->建立->項目->C#->Web服務應用程式)
  
  建完這個工程,我們將看到一個叫Service1.asmx的檔案,這就是webservice的標準檔案,它也有UI的概念,不過我們一般不關注,因此,我們查看其cs代碼檔案.如果你什麼都還沒做的話,將看見一個被注釋掉的helloworld的WebMethod,把注釋去掉,在運行,你就可以得到最簡單的webservice運行執行個體了.點擊"helloworld"將執行其方法.顯然,這個函數對我們的意義只在於宏觀的瞭解了下web服務的寫法.
  
  下面,我們將開始具體介紹webservice的寫法.在代碼檔案裡,如果我們寫了一個函數後,希望此函數成為外部可調用的介面函數,我們必須在函數上面添上一行代碼[WebMethod(Description="函數的描述資訊")],如果你的函數沒有這個申明,它將不能被使用者引用.如:
  
  [WebMethod(Description="最簡單的方法")]
  public string HelloWorld()
  {
  return "Hello World";
  }
  
  這個函數就是外部可調用的介面函數,對使用者來說相當於一個API.如果某使用者在引用了這個服務後,他調用HelloWorld()方法,他就將獲得"HelloWorld"這個傳回值.
  
  看到這裡,我們是不是發現,其實webservice並不是那麼的神秘,它也不過只是個介面,對我們而言,側重點依然是介面函數的編寫.下面,我將給出我們的例子所需要的介面函數.
  
  [WebMethod(Description="查詢以擷取需要的課件資訊")]
  public XmlDataDocument GetSiteAData(string AssignName)
  {
  XmlDataDocument xd=new XmlDataDocument(); //
  DataSet ds=new DataSet();
  CStoreProc cp=new CStoreProc("SearchAssign");
  cp.AddParIn("@keywords",SqlDbType.VarChar,30,AssignName);
  cp.AddParOut("@res",SqlDbType.Int);
  if(cp.SelectProc()) //如果執行成功,預存程序
  {
  cp.myData.EnforceConstraints=false; //不進行格式嚴格檢查
  if((int)cp.GetReturnValue("@res")==-1)
  {
  string xml="<NewDataSet></NewDataSet>";
  xd.LoadXml(xml);
  return xd;
  }
  xd=new XmlDataDocument(cp.myData);
  XmlNode root1=xd.DocumentElement;
  XmlNodeList roots=root1.SelectNodes("list");
  foreach(XmlNode roota in roots) //為所有元素加上網站名稱標記
  {
  XmlElement Link=xd.CreateElement("SiteName");
  Link.InnerText=ConfigurationSettings.AppSettings["SiteName"].ToString();
  roota.AppendChild(Link);
  
  }
  return xd;
  }
  else return null;
  }
  這是擷取資來源站點點資訊的一個介面函數.裡面大部分的代碼,我想對於有一定asp.net基礎的朋友來說,都應該是一看就明白,這裡只說明下CStoreProc,這是我封裝的一個預存程序類,主要功能是執行各種類型的預存程序.
  
  細心的朋友可能會發現這個函數的傳回型別似乎比較特殊,是個xml的文檔.我們在前面已經說過,webservice只能傳輸序列化資料,xml顯然滿足條件,但比如hash表之類的非序列化資料,是不能傳輸的,xml使用最為廣泛,而且考慮到跨平台應用,所以這裡我們只以xml資料的傳輸來樣本.
  
  在下篇文章,我們將深入解析webservice的精髓---xml 資料轉送:)

From:IT實驗室

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.