Web Service学习笔记:类和结构体解析

今天学习了Web服务的类和结构体一节,晚上写下自己所理解的内容,跟大家一起分享了。请批评指正。



Web服务能够把用户定义的类和结构体作为参数或者返回值,但是这里需要记住一些规则,是关于那些类变量可以在Web服务中使用的:

(1)所有类变量必须是基本数据类型或者基本数据类型的数组。

(2)所有类变量必须是公开的或者有一个公开时限的get和set访问器的属性。

为了理解在Web服务中使用类,我做了个实验。创建Web服务,在其中添加一个数组。

Code


下面我们要做的就是添加一个类,第一个类定义StuInfo,由五个字符串、一个StudentInfo类型的数组和一个公共属性组成。公共属性对应了一个私有的字符串。StudentInfo类则由一个名为intStuRank的学生排名和strStuCollege的学生所属学院组成。并添加以下的代码:

Code


注:其实在真是的程序中,不可能像这样设计。我们不会把一个拥有固定数量的学生信息记录放在StuInfo类中,而很可能需要使用一个集合。我们也可以把数据存储到数据库中,而不是填充一个数组。这样的话,Web方法返回的历史记录的数量则根据数据库查询返回的记录数量决定,这是一个例子,数据使用直接写入的数组,这样可以把精力集中在使用Web服务的类上。



在Web服务中,我们添加GetStuInfo方法,它使用了StuInfo类为传入的strStuNum返回的学生信息的历史数据。代码如下:

Code


在GetStuInfo方法中,在使用每个类之前都要初始化,遍历strStuInfo数组,找到数据然后返回。类变量是从数组总获得数据的,然后类自身会被返回。如果strStuNum学生学号没有在数组中找到,那么在一个GetStuInfo类的字段中会设置消息,然后被返回。

在浏览器中打开服务,调用GetStuInfo方法,

(1)输入数组中存在的学号(譬如200511020120),将会返回的结果如图:


 附件: 您所在的用户组无法下载或查看附件





(2)输入数组中不存在的学号(随便输了),将会返回的结果如图:


 附件: 您所在的用户组无法下载或查看附件



在Web服务返回的StuInfo对象中,好像私有字符串strInfo是不可见的。因此,公共方法必须有get和set访问器。如果我们修改了StuInfo类,初始化私有字符串的值,并且去掉set访问器,代码如下:

Code


然后,我们必须把GetStuInfo方法中给Info属性赋值的代码去掉,因为这个公共属性是只读的。


运行Web服务,然后在GetStuInfo方法中设置断点,来验证返回的StuInfo对象,那么调试器将会显示strInfo属性,但是,strInfo属性不会被Web服务返回,因为他没有被读写。


(一)创建发现文档



一旦创建完成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话的,大家将就将就吧)



 附件: 您所在的用户组无法下载或查看附件






(文/VisualStudio  出处/博客园)

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Web Service] 的这些文章也感兴趣:

WebService是“良药”还是“毒药”
在weblogic中异步调用webservice
ASP.NET创建Web服务之声明
用 SOAP 消息传递返回 ADO 记录集
Web Service学习笔记:类和结构体解析
有了Web Service,还需要.NET吗?
ASP.NET创建Web服务之发布和部署
如何创建和使用Web服务
动态调用WebServices
通过Web Services上传和下载文件