国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > XML > 正文

Xml WebService完全實(shí)例解析(二)

2024-09-05 20:55:47
字體:
供稿:網(wǎng)友
上篇文章介紹了些webservice的基本特性和我們例子的結(jié)構(gòu),這篇文章我們將開始具體的代碼編寫工作.

      這個(gè)專題主要講述的是webservice,因此這里我們的代碼以webservice相關(guān)為主,而其他工程,例如:servicegathersite,websitea等,只將簡(jiǎn)略介紹.

      在vs2003中,開發(fā)一個(gè)webservice并不是件困難的事,首先,我們新建一個(gè)webservice項(xiàng)目(文件->新建->項(xiàng)目->c#->web服務(wù)應(yīng)用程序)

      建完這個(gè)工程,我們將看到一個(gè)叫service1.asmx的文件,這就是webservice的標(biāo)準(zhǔn)文件,它也有ui的概念,不過我們一般不關(guān)注,因此,我們查看其cs代碼文件.如果你什么都還沒做的話,將看見一個(gè)被注釋掉的helloworld的webmethod,把注釋去掉,在運(yùn)行,你就可以得到最簡(jiǎn)單的webservice運(yùn)行實(shí)例了.點(diǎn)擊"helloworld"將執(zhí)行其方法.顯然,這個(gè)函數(shù)對(duì)我們的意義只在于宏觀的了解了下web服務(wù)的寫法.

      下面,我們將開始具體介紹webservice的寫法.在代碼文件里,如果我們寫了一個(gè)函數(shù)后,希望此函數(shù)成為外部可調(diào)用的接口函數(shù),我們必須在函數(shù)上面添上一行代碼[webmethod(description="函數(shù)的描述信息")],如果你的函數(shù)沒有這個(gè)申明,它將不能被用戶引用.如:

[webmethod(description="最簡(jiǎn)單的方法")]
  public string helloworld()
  {
   return "hello world";
  }

      這個(gè)函數(shù)就是外部可調(diào)用的接口函數(shù),對(duì)用戶來說相當(dāng)于一個(gè)api.如果某用戶在引用了這個(gè)服務(wù)后,他調(diào)用helloworld()方法,他就將獲得"helloworld"這個(gè)返回值.

       看到這里,我們是不是發(fā)現(xiàn),其實(shí)webservice并不是那么的神秘,它也不過只是個(gè)接口,對(duì)我們而言,側(cè)重點(diǎn)依然是接口函數(shù)的編寫.下面,我將給出我們的例子所需要的接口函數(shù).

  [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()) //如果執(zhí)行成功,存儲(chǔ)過程
   {
    cp.mydata.enforceconstraints=false; //不進(jìn)行格式嚴(yán)格檢查
    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)  //為所有元素加上站點(diǎn)名稱標(biāo)記
   {
     xmlelement link=xd.createelement("sitename");
     link.innertext=configurationsettings.appsettings["sitename"].tostring();
     roota.appendchild(link);

    }
    return xd;
   }
   else return null;
  }
 這是獲取資源站點(diǎn)信息的一個(gè)接口函數(shù).里面大部分的代碼,我想對(duì)于有一定asp.net基礎(chǔ)的朋友來說,都應(yīng)該是一看就明白,這里只說明下cstoreproc,這是我封裝的一個(gè)存儲(chǔ)過程類,主要功能是執(zhí)行各種類型的存儲(chǔ)過程.

         細(xì)心的朋友可能會(huì)發(fā)現(xiàn)這個(gè)函數(shù)的返回類型似乎比較特殊,是個(gè)xml的文檔.我們?cè)谇懊嬉呀?jīng)說過,webservice只能傳輸序列化數(shù)據(jù),xml顯然滿足條件,但比如hash表之類的非序列化數(shù)據(jù),是不能傳輸?shù)?xml使用最為廣泛,而且考慮到跨平臺(tái)應(yīng)用,所以這里我們只以xml數(shù)據(jù)的傳輸來示例.

         在下篇文章,我們將深入解析webservice的精髓---xml 數(shù)據(jù)傳輸.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 福泉市| 依兰县| 侯马市| 灵璧县| 雷山县| 龙川县| 寻乌县| 将乐县| 聂拉木县| 镶黄旗| 永川市| 眉山市| 巴青县| 丰顺县| 上思县| 灵山县| 长春市| 榆树市| 丹凤县| 德钦县| 秭归县| 上杭县| 石河子市| 徐州市| 双辽市| 太白县| 谷城县| 新余市| 深圳市| 留坝县| 柯坪县| 黄大仙区| 山阴县| 陈巴尔虎旗| 湘阴县| 上虞市| 汝阳县| 揭东县| 兴隆县| 呼伦贝尔市| 西丰县|