类和结构体解析

系列文章导航:

创建一个示例和WebMethod特性解析

WebService特性和数组类型解析

类和结构体解析

利用YAHOO公开API做天气预报Web服务

Webservice 的设计和模式

Remoting和Webservice的区别


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

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

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

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

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

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

        //构造并填充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"},
                         }
;

系列文章导航:

创建一个示例和WebMethod特性解析

WebService特性和数组类型解析

类和结构体解析

利用YAHOO公开API做天气预报Web服务

Webservice 的设计和模式

Remoting和Webservice的区别


下面我们要做的就是添加一个类,第一个类定义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;
        }

    }

系列文章导航:

创建一个示例和WebMethod特性解析

WebService特性和数组类型解析

类和结构体解析

利用YAHOO公开API做天气预报Web服务

Webservice 的设计和模式

Remoting和Webservice的区别


在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;
        }

系列文章导航:

创建一个示例和WebMethod特性解析

WebService特性和数组类型解析

类和结构体解析

利用YAHOO公开API做天气预报Web服务

Webservice 的设计和模式

Remoting和Webservice的区别



(一)创建发现文档

 

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

 

 

NET技术类和结构体解析,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。