Xml WebService完全实例解析(全)

添加人:iyond七级(3513分)   添加时间:2007-05-21    阅读次数:10454  收藏此教程
上一页介绍了些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 数据传输.

4页 第2上一页1234下一页
相关的教程: Web Service
收藏此教程

当前平均分: 1.7(3 次打分)

-5-4-3-2-1012345
评论主题
您的大名
您的评论
验证码 点击换一个验证码
知识库搜索: