Web Service学习笔记:WebService特性和数组类型解析
现在开始学习Web服务,写下自己学习过程中的一些感受,拿出来与大家分享,欢迎批评指正。希望能给跟我一样初学Web服务的朋友一些帮助。
文章在我小站的地址:Web Service学习笔记:WebService特性和数组类型解析
昨天我写了前段时间的一些心得:http://www.cnblogs.com/VisualStudio/archive/2008/10/11/1308541.html,在创建Web服务时,会自动生成一段默认的代码:
[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)。
根据上面的解释,更改对应的属性,来看看效果,下面是我做的例子
在浏览器中生成,下面是效果:(左边是修改过后的效果,右边是原来的效果)
(二)数据类型
Web服务可以使用基本的数据类型,但除了这些还可以使用数据和基本类型的ArrayLists,由于Web服务是通过XML与客户端之间传递的,那么无论使用参数或者返回值。
注:使用数组的主要限制是,必须在设计的时候,你就要知道数组中元素的个数,如果元素的数量是动态的,那么就应该使用ArrayList。
ArrayList包含在System.Collection命名空间中,所以要使用它,必须引用。
我做了个例子来试验这种说法,还是用我在上一篇文章中的二维数组。
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方法,它的参数是字符串(学生的名字),该字符串跟二维数组中存储的学生名字进行比较(是姓还是姓名中包含的字符串,这个不考虑),服务会返回所有包含匹配字符串的所有信息。
代码如下:
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进行了排序。
这是我昨天晚上学习的东西,今天写写,都是些小东西,希望高手能教教我!我在这先谢谢了!
出处:http://VisualStudio.cnblogs.com/
个人网站:H2站长论坛
本文版权归作者和博客园还有H2站长论坛共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。