系列文章導航:
創建一個示例和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技術:類和結構體解析,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。