Web Service学习笔记:WebService特性和数组类型解析

现在开始学习Web服务,写下自己学习过程中的一些感受,拿出来与大家分享,欢迎批评指正。希望能给跟我一样初学Web服务的朋友一些帮助。

文章在我小站的地址:Web Service学习笔记:WebService特性和数组类型解析

昨天我写了前段时间的一些心得:http://www.cnblogs.com/VisualStudio/archive/2008/10/11/1308541.html,在创建Web服务时,会自动生成一段默认的代码:

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(
false)]

 

下面就来讲讲WebService的几个特性,虽然VS插入了一个默认的WebService特性,但是他是可选的。它包含三个属性:Description属性,Name属性和Namespace属性。

(1)Description属性

光看单词的含义就可以了解到它是一个Web服务的描述。只要在WebService特性中,设置了Description属性,那么在浏览器中就会显示出Web服务的帮助信息,它在SOAP信息中是可用的,并用此提示Web服务的使用者,能更快的理解这项服务。

(2)Name属性

当用浏览器打开Web服务时,在浏览器的标题栏会显示Web服务的名称,而Name属性则是改变服务的名称,默认情况下,Name的值是你添加的服务文件名。

(3)NameSpace属性

Web服务是一个XML的命名空间,而XML是允许在XML文档中创建名称的,每一个WebService特性必须有一个XML命名空间,只有这样才能保证它为应用程序的唯一识别。

像上面的代码,VS默认添加的是 WebService(Namespace = "http://tempuri.org/") ,一般情况下,都要使用唯一的一个名称来定义命名空间,譬如说我小站的网址(这个地址可以不是一个有效的URL)。

根据上面的解释,更改对应的属性,来看看效果,下面是我做的例子

 

[WebService(Description="根据学生的某些信息获取学生的相关信息",Name="GetStudentInformation",Namespace=Http://www.h2bbs.com)]

 

在浏览器中生成,下面是效果:(左边是修改过后的效果,右边是原来的效果)

 

(二)数据类型

Web服务可以使用基本的数据类型,但除了这些还可以使用数据和基本类型的ArrayLists,由于Web服务是通过XML与客户端之间传递的,那么无论使用参数或者返回值。

注:使用数组的主要限制是,必须在设计的时候,你就要知道数组中元素的个数,如果元素的数量是动态的,那么就应该使用ArrayList。
ArrayList包含在System.Collection命名空间中,所以要使用它,必须引用。


我做了个例子来试验这种说法,还是用我在上一篇文章中的二维数组。

 

        //构造并填充info数组
        string[,] strStuInfo ={
                            
{"200511020120","贰零零五届","人文法律学院","社会工作","(1)班","贺无悔","1"},
                            
{"200511020121","贰零零五届","人文法律学院","社会工作","(1)班","贺梁需","2"},
                            
{"200511010122","贰零零五届","人文法律学院","法律专业","(1)班","贺陆磊","3"},
                            
{"200511010220","贰零零五届","人文法律学院","法律专业","(2)班","贺白灵","4"},
                            
{"200511010221","贰零零五届","人文法律学院","法律专业","(2)班","李剑付","5"},
                            
{"200511020222","贰零零五届","人文法律学院","社会工作","(2)班","李敬意","6"},
                            
{"200511100120","贰零零五届","化工生物学院","生物制药","(1)班","李黄兴","7"},
                            
{"200511100221","贰零零五届","化工生物学院","生物制药","(2)班","李蕾蕾","8"},
                            
{"200511100322","贰零零五届","化工生物学院","生物制药","(3)班","杜白冰","9"},
                            
{"200611120120","贰零零六届","化工生物学院","发酵工程","(1)班","杜书并","10"},
                            
{"200611120121","贰零零六届","化工生物学院","发酵工程","(1)班","杜小鱼","11"},
                            
{"200611120421","贰零零六届","化工生物学院","发酵工程","(4)班","杜声声","12"},
                         }
;

 

我想做的就是创建一个名叫GetAllStuInfo的Web方法,它的参数是字符串(学生的名字),该字符串跟二维数组中存储的学生名字进行比较(是姓还是姓名中包含的字符串,这个不考虑),服务会返回所有包含匹配字符串的所有信息。

代码如下:

 

        [WebMethod(Description = "返回查询学生名字中包含参数字符串的学生信息")]
        
public ArrayList GetAllStuInfo(string strStuName)
        
{
            ArrayList arrAllStuInfo 
= new ArrayList();

            
//遍历数组,寻找匹配的学生姓名
            for (int i = 0; i < strStuInfo.GetLength(0); i++)
            
{
                
if (strStuInfo[i, 5].IndexOf(strStuName.Trim()) >= 0)
                
{
                    arrAllStuInfo.Add(strStuInfo[i, 
1].ToString() +
                        strStuInfo[i, 
2].ToString() +
                        strStuInfo[i, 
3].ToString() +
                        strStuInfo[i, 
4].ToString() +
                        strStuInfo[i, 
5].ToString());
                }

            }

            arrAllStuInfo.Sort();
            
return arrAllStuInfo;
        }

 

 

 

代码解释:
GetAllStuInfo方法首先初始化一个ArrayList,然后遍历所有的存储的学生姓名,String类的IndexOf方法在字符串中搜索,寻找匹配的字符串,如果找到一个匹配,它会返回第一个匹配项的索引。如果没有找到,则会返回-1.如上图,为什么返回给客户端的结果跟数组中的顺序不同,是因为对ArrayList进行了排序。

这是我昨天晚上学习的东西,今天写写,都是些小东西,希望高手能教教我!我在这先谢谢了!

 

posted @ 2008-10-12 11:25  瞪着你的小狗  阅读(4727)  评论(9编辑  收藏  举报