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

來源:互聯網
上載者:User
web|xml 上篇文章介紹了些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 資料轉送.



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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