|
系列文章导航:
现在开始学习Web服务,写下自己学习过程中的一些感受,拿出来与大家分享,欢迎批评指正。希望能给跟我一样初学Web服务的朋友一些帮助。
今天学习了Web服务的类和结构体一节,晚上写下自己所理解的内容,跟大家一起分享了。请批评指正。
Web服务能够把用户定义的类和结构体作为参数或者返回值,但是这里需要记住一些规则,是关于那些类变量可以在Web服务中使用的:
(1)所有类变量必须是基本数据类型或者基本数据类型的数组。
(2)所有类变量必须是公开的或者有一个公开时限的get和set访问器的属性。
为了理解在Web服务中使用类,我做了个实验。创建Web服务,在其中添加一个数组。
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"},
};
系列文章导航:
下面我们要做的就是添加一个类,第一个类定义StuInfo,由五个字符串、一个StudentInfo类型的数组和一个公共属性组成。公共属性对应了一个私有的字符串。StudentInfo类则由一个名为intStuRank的学生排名和strStuCollege的学生所属学院组成。并添加以下的代码:
public class StuInfo{
public string strStuNum;
public string strStuYear;
public string strStuCollege;
public string strStuClass;
public string strStuName;
public StudentInfo[] Information = new StudentInfo[2];
private string strInfo;
public string Info
{
set
{
strInfo = value;
}
get
{
return strInfo;
}
}
public class StudentInfo
{
public int intStuRank;
public string strStuCollege;
}
}
系列文章导航:
在Web服务中,我们添加GetStuInfo方法,它使用了StuInfo类为传入的strStuNum返回的学生信息的历史数据。代码如下:
[WebMethod(Description = "通过类返回学生信息的历史数据")]public StuInfo GetStuInfo(string strStuNum)
{
StuInfo stuinfo = new StuInfo();
//遍历数组,寻找strStuName
for (int i = 0; i < strStuInfo.GetLength(0); i++)
{
if (String.Compare(strStuInfo[i, 0], strStuNum, true) == 0)
{
stuinfo.strStuNum = strStuNum;
stuinfo.strStuYear = strStuInfo[i, 1];
stuinfo.strStuCollege = strStuInfo[i, 2];
stuinfo.strStuClass = strStuInfo[i, 3];
stuinfo.strStuName = strStuInfo[i, 5];
stuinfo.Info = "通过类返回学生相关信息";
//保存StuInfo数据
stuinfo.Information[0] = new StuInfo.StudentInfo();
stuinfo.Information[0].intStuRank = 5;
stuinfo.Information[0].strStuCollege = "人文法律学院";
stuinfo.Information[1] = new StuInfo.StudentInfo();
stuinfo.Information[1].intStuRank = 3;
stuinfo.Information[1].strStuCollege = "化工生物学院";
return stuinfo;
}
}
stuinfo.strStuNum = strStuNum;
stuinfo.strStuName = "没有找到人员";
return stuinfo;
}
系列文章导航:
(一)创建发现文档
一旦创建完成Web服务,负责开发Web服务使用程序的开发人员需要找到一种方法,从而能够了解服务器上有哪些Web服务可用,这些Web服务提供了那些方法,这些方法和属性可接受那些参数,以及这些Web方法的返回值是什么,这个过程叫做发现。
当然这是一个可选的过程,如果使用程序的开发人员了解Web服务文件的URL,那么这就不需要实施发现动作。
(1)利用查询字符串实现发现
开发者可以获得在服务器中的DISCO文件来创建一个客户端应用程序。如果需要查看这个文件,可以在Web服务的文件后面加上?disco,效果如下图:
(2)静态发现文件
如果Web服务的使用程序需要使用静态发现文件,那么Web服务开发人员必须创建一个静态发现文件。
虽然可以手工创建.disco文件,但是使用disco.exe命令行工具远比那样简单的多。打开命令行窗口(这里可不是在运行中打CMD的那个,而是Visual Studio 2008命令提示,从而可以获得正确的路径),然后键入与下面类似的命令(整行命令必须写在一行中):
disco Web服务的地址
如果想看DISCO工具的完整参数清单,键入:disco/? 命令。
(二)预编译程序集
典型的部署目录结构图(没装PS,用VISIO话的,大家将就将就吧)
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。