一个webservice的初级例子
? ? ?首先,我们必须了解什么是webservice.就概念上来说,可能比较复杂,不过我们可以有个宏观的了解:webservice就是个对外的接口,里面有函数可供外部客户调用(注意:里面同样有客户不可调用的函数).假若我们是服务端,我们写好了个webservice,然后把它给了客户(同时我们给了他们调用规则),客户就可以在从服务端获取信息时处于一个相对透明的状态.即是客户不了解(也不需要)其过程,他们只获取数据.
[WebMethod(Description="最简单的方法")]
??public?string?HelloWorld() ??{ ???return?"Hello?World"; ??} ??? 这个函数就是外部可调用的接口函数,对用户来说相当于一个API.如果某用户在引用了这个服务后,他调用HelloWorld()方法,他就将获得"HelloWorld"这个返回值.
?[WebMethod(Description="查询以获取需要的课件信息")]
??public?XmlDataDocument?GetSiteAData(string?AssignName) ??{ ???DataSet?dsNorthwind?=?new?DataSet(); ??//Create?the?connection?string.??????????? ???String?sConnect; ???sConnect="Password=eaiuser;User?ID=eaiuser;Data?Source=eaitest";????? ????????? ???Create?a?connection?object?to?connect?to?the?northwind?db. ???OracleConnection?nwconnect?=?new?OracleConnection(sConnect); ????Create?a?command?string?to?select?all?the?customers?in?the?WA?region. ???String?sCommand?=?"Select?*?from?users"; ????Create?an?adapter?to?load?the?DataSet. ???OracleDataAdapter?myDataAdapter?=?new?OracleDataAdapter(sCommand,?nwconnect); ????Fill?the?DataSet?with?the?selected?records. ???myDataAdapter.Fill(dsNorthwind,"users"); ????Load?the?document?with?the?DataSet. ???XmlDataDocument?doc?=?new?XmlDataDocument(dsNorthwind);??? ?????Display?the?XmlDataDocument. ???doc.Save(Console.Out); ?????if(true)?如果执行成功,存储过程 ???{ ????XmlNode?root1=doc.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?doc; ???} ???else?return?null; } ? ?????????? 这是获取资源站点信息的一个接口函数.里面大部分的代码,我想对于有一定asp.net基础的朋友来说,都应该是一看就明白,这里只说明下CStoreProc,这是我封装的一个存储过程类,主要功能是执行各种类型的存储过程. ? 通过前面的介绍,大概应该知道怎么写webservice,怎么调用,接下是讲怎么使用webservice提供的服务.下面是一段代码,比较简单:
private?void?button1_Click(object?sender,?System.EventArgs?e)
??{ ???localhost.Service1?a=?new?WindowsApplication1.localhost.Service1(); ???a.HelloWorld(); ??? ???d.Url?=?""; ???d.GetSiteAData(); ???d.HelloWorld(); // ???string?strSearch?=?"123"; ???ServiceA.Service1?a?=?new?ServiceA.Service1(); ???ServiceB.Service1?b?=?new?ServiceB.Service1(); ???IAsyncResult?ar1; ???IAsyncResult?ar2; ???DataSet?ds=new?DataSet(); ???XmlNode?xmlNode1,xmlNode2; ???XmlDataDocument?xd=new?XmlDataDocument(); ???StringBuilder?xmlString1,xmlString2; ???--简单的异步调用 ???ar1=a.BeginGetSiteAData(strSearch,null,255)">null); ???ar2=b.BeginGetSiteAData(strSearch,255)">null); ???xmlNode1=a.EndGetSiteAData(ar1); ???xmlNode2=b.EndGetSiteAData(ar2); ???---------- ???if(xmlNode1==null&&xmlNode2==null)?--?????????????? ????????return; ???xmlString1=new?StringBuilder(xmlNode1.OuterXml); ???xmlString2=new?StringBuilder(xmlNode2.OuterXml); ???xmlString1=MakeNewXmlString(xmlString1,xmlString2);??生成新的xmlif(xmlString1.ToString().Equals("")) ????return?; ???xd.LoadXml(xmlString1.ToString()); ???ds.ReadXml(new?XmlNodeReader(xd)); ???dataGrid1.DataSource=ds.Tables[0] ??} ???生成新XML ??public?StringBuilder?MakeNewXmlString(StringBuilder?str1,StringBuilder?str2) ??{ ???str1=str1.Replace("",""); ???str2=str2.Replace("",""); ???str1.Append(str2.ToString()); ???return?str1; ??} 这段代码是在windows应用程序里运行的,如果是asp.net应用程序的话要改个地方: dataGrid1.DataSource=ds.Tables[0];后面加上dataGrid1.DataBand(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |