7-4所講內(nèi)容xml簡介、webservice_第1頁
7-4所講內(nèi)容xml簡介、webservice_第2頁
7-4所講內(nèi)容xml簡介、webservice_第3頁
7-4所講內(nèi)容xml簡介、webservice_第4頁
7-4所講內(nèi)容xml簡介、webservice_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、1.1 XML 簡介標記語言(Markup Language)特指一系列約定好的標記來對電子文檔進行標記,以實現(xiàn)對電子文檔的語義、結(jié)構(gòu)以及格式的定義。在 ASP.NET 開發(fā)中,最常用的標記語言就是 HTML, HTML 標記語言定義了 HTML 文檔的語義、結(jié)構(gòu)以及格式,以便在不同的瀏覽器中所呈現(xiàn)的內(nèi)容是一致的。XML 標記語言與 SGML 和 HTML 都屬于標記語言,標記語言的發(fā)展如圖所示: XML 標記語言不僅具備了 SGML 標記語言強大的擴展性,同樣也具備 HTML 標記語言的易用性。不僅如此,ASP.NET 還將 XML 作為應用程序數(shù)據(jù)存儲和傳輸?shù)闹匾椒ā?在當今互聯(lián)網(wǎng)中,W

2、eb 應用已經(jīng)成為一種分布式組件技術(shù)。傳統(tǒng)的 Web 應用技術(shù)解決的問題是如何讓人使用 Web 提供的應用,而當今的 Web 應用技術(shù)是要解決如何讓應用程序使用Web 應用。由于 Web 應用能夠跨平臺、跨語言的為應用程序提供服務,所以 Web 應用和 XML 應用的前景是非常廣闊的。 注意:這里所說的 Web 應用的跨平臺是針對瀏覽器而言,Windows 能夠瀏覽一個 Web 應用,而 Linux 同樣可以瀏覽一個 Web 應用。 1.2 讀寫 XMLXML 和 HTML 都是基于 SGML(Standard Generalized Markup Language,標準通用標記語言)的,但是

3、 XML 和 HTML 卻有著很大的區(qū)別,這些區(qū)別不僅僅在于格式上的區(qū)別,還在于使用性、可擴展性等等。 1.2.1 XML 與 HTMLXML 標記語言和 HTML 標記語言有著極大的不同,在應用程序開發(fā)中,XML 標記語言能夠適應于大部分的應用程序環(huán)境和開發(fā)需求。這些需求是 HTML 標記語言無法做到的,XML 標記語言和 HTML 標記語言的具體區(qū)別如下所示。 n HTML 標記是固定的,并且是沒有層次的,在 HTML 文檔中,用戶無法自行創(chuàng)建標簽, 例如這樣的標簽瀏覽器很可能解析不了,HTML 中標記的作用是描述數(shù)據(jù)的顯示方式,這種方式只能交付給瀏覽器進行處理,而 HTML 文檔中的標記

4、都是獨立存在的,沒有層次。 n XML 的標記不是固定的且是有層次的,在 XML 文檔中,用戶可以自行創(chuàng)建標簽,例如這樣的標簽,XML 標記不能夠描述網(wǎng)頁的外觀和內(nèi)容,XML 只能夠描述內(nèi)容的數(shù)據(jù)結(jié)構(gòu)和層次,在瀏覽器中瀏覽 XML 文檔,也可以發(fā)現(xiàn) XML 標記是有層次的。 在 Visual Studio 中,.NET Framework 提供了 System.XML 命名空間,該命名空間提供了一組可擴展類使得開發(fā)人員能夠輕松的讀、寫、以及編輯 XML 文本。 1.2.2 創(chuàng)建 XML 文檔使用 Visual Studio 能夠創(chuàng)建 XML 文檔,創(chuàng)建和使用 XML 文檔無需 XML 語法分析

5、器來專門負責分析語法,在.NET Framework 中已經(jīng)集成了可擴展類。右擊現(xiàn)有項,單擊【添加新項】選項,選擇 XML 文件,如圖所示: 創(chuàng)建完成后,就需要向 XML 文檔中編寫 XML 標記,以下是一個完整的 XML 文檔示例。 【示例 1】創(chuàng)建 XML 文檔。 武漢電腦城 123456789 J.Dan Bill Gates 武漢電腦城 123456789 Bill Gates 上述 XML 文檔使用了自定義標記對商城進行了描述,包括商城所在地、商城名稱、電話號碼以及負責人等。編寫 XML 文檔時,開發(fā)人員能夠自定義標簽進行文檔描述,但是在 XML 文檔的頭部必須進行 XML 文檔聲明

6、,示例代碼如下所示。 上述代碼在 XML 文檔頭部進行了聲明,表示該文檔是一個 XML 文檔,并且說明該文檔的版本為 1.0 的 XML 文檔,該文檔還可以包含一個 encoding 屬性,指明文檔中的編碼類型。聲明該文檔是一個 XML 文檔后,則需要在 XML 文檔中編寫根標記,這個標記可以是開發(fā)人員自定義標記名稱,在這里被命名為 Root,示例代碼如下。 上述代碼創(chuàng)建了一個根標記,在這里命名為 Root。在 XML 文檔中,所有的標記都應該被包含在一個根標記中,這樣不僅方便描述也方便查閱。XML 文檔中的根標記不能夠重復使用,如果重復使用則會提示異常。 在根標記內(nèi),應該編寫需要描述的信息的

7、標記。在這里,描述一個商城需要的一些屬性, 包括商城所在的州、所在地以及商城的主營類型等,通過 XML 標記語言可以自行創(chuàng)建標記來描述,示例代碼如下所示。 /地區(qū)描述 /位置描述 PC STORE/商城名稱 123456789/商城電話 J.Dan/商城銷售人員 Bill Gates PC STORE 123456789 J.Dan Bill Gates Windows Mobile Store 123456789 Bill Gates 上述代碼對商城的信息進行了描述,這些標簽的意義如下所示: ShopInformation:商城信息,包括 area 屬性來描述所在州或板塊,這里說明了是在 U

8、SA 地區(qū)。 Shop:商城在該板塊的所在州、省市等信息。Name:商城的名稱。 Phone:商城的聯(lián)系電話。 Seller:商城的銷售人員。 這些標簽都是用戶自定義的,XML 文檔允許開發(fā)人員自定義標簽并,另外,XML 文檔也不局限所要描述的對象格式。例如當上述代碼也可以編寫另外一種樣式時,同樣能夠被 XML 所識別,示例代碼如下所示。 技巧:良好的縮進能夠讓 XML 文檔更加方便閱讀,同時 XML 文檔是大小寫敏感的,對于 XML標記,標記頭和標記尾的大小寫規(guī)則必須匹配 1.2.3 XML 控件ASP.NET 中提供了針對 XML 讀寫的控件 XML 控件,XML 控件可以很好的解決 XM

9、L 文檔的顯示問題,如果需要瀏覽 XML 文檔的數(shù)據(jù),則只需要編寫 XML 控件中的 DocumentSource 屬性即可,示例代碼如下所示。 /另一種地區(qū)表示方式 PC STORE 123456789 J.Dan Bill Gates S.K/地區(qū)直接放在描述中 Windows Mobile Store 123456789 Bill Gates S Windows Mobile Store 123456789 Bill Gates 運行后如圖: 運行后會發(fā)現(xiàn) XML 文檔的內(nèi)容都顯示出來了,但是卻沒有層次感,因為 XML 控件并沒有把記錄分開,而是連續(xù)的呈現(xiàn) XML 文檔的內(nèi)容。如果需要按

10、照規(guī)范或開發(fā)人員的意愿呈現(xiàn)給瀏覽器,則必須使用 XSL 樣式表。 1.2.4 XML 文件讀取類(XmlTextReader)XmlTextReader 類屬于System.Xml 命名空間,XmlTextReader 類提供對 XML 數(shù)據(jù)的快速、單項、無緩沖的數(shù)據(jù)讀取功能,因為 XmlTextReader 類是基于流的,所以使用 XmlTextReader 類讀取 XML 內(nèi)容只能夠從前向后讀取,而不能逆向讀取。 因為 XmlTextReader 類的流形式,節(jié)約了讀取 XML 文檔的時間,也大量的節(jié)約了讀取XML 所需花費的內(nèi)存空間,當需要讀取 XML 節(jié)點時,只需要使用 XmlText

11、Reader 類的 Read() 方法即可,示例代碼如下所示。 上述代碼使用 XmlTextReader 類的構(gòu)造函數(shù)創(chuàng)建了 XmlTextReader 對象,并通過使用XmlTextReader 類的 Read()方法進行 XmlTextReader 對象的遍歷。遍歷 XML 文檔后,需要使用 Close 方法進行 XmlTextReader 對象的關(guān)閉操作,這一點是非常重要的,如果不使用XmlTextReader 類的 Close 方法,則相應的 XML 文件正在被進程使用,只有使用了 Close 方法才能將相應的文件關(guān)閉掉。示例代碼如下所示。 rd.Close();/關(guān)閉 Reader

12、XmlTextReader 類遍歷 XML 文件運行結(jié)果如圖所示。 XmlTextReader rd = new XmlTextReader(Server.MapPath(XMLFile1.xml);/構(gòu)造函數(shù)while (rd.Read()/遍歷節(jié)點 Response.Write(Node Type is: + rd.NodeType +  );/輸出Node Response.Write(Name is: + rd.Name +  );/輸出Name Response.Write(Value is: + rd.Value +  );/輸出Value Response

13、.Write(); 在使用 XmlTextReader 類讀取 XML 文件中相應的節(jié)點時,XmlTextReader 類的 NodeType會檢查節(jié)點的類型,而 XmlTextReader 類的 Name 和 Value 會分別檢查節(jié)點的名稱和值,相應的 XML 代碼如下所示。 上述代碼中,使用 XmlTextReader 類進行讀取,則 Shop 節(jié)點的 NodeType 為 Element, Name 的值為 Shop,Value 的值為空。XML 文檔中不止以上幾種節(jié)點類型,XmlNodeType 也包括其他節(jié)點類型,這些類型如下所示。 Attribut:XML 元素的屬性。CDATA

14、:用于轉(zhuǎn)義文本塊,避免將文本塊識別為標記。Comment:XML 文檔的注釋。Document:作為文檔樹的根的文檔對象,可供每個 XML 文檔進行訪問。DocumentType:XML 文檔類型的聲明。Element:XML 元素。EndElement:當 XmlTextReader 達到元素末尾時返回。Entity: 實 體 聲 明 。 Text:元素的文本內(nèi)容。WhiteSpace:標記間的空白。XmlDeclaration:XML 節(jié)點聲明,它是文檔中的第一個節(jié)點。 在 XML 文檔中,空白標記和根節(jié)點的節(jié)點類型是不相同的,XmlTextReader 類讀取 XML 文件并遍歷節(jié)點類型

15、,根節(jié)點和空白節(jié)點遍歷后結(jié)果如下所示。 武漢電腦城 123456789 J.Dan Bill Gates 其中根節(jié)點的節(jié)點類型為 XmlDeclaration,Value 值為 version=1.0 encoding=utf-8。 1.2.5 XML 文件編寫類(XmlTextWriter)XmlTextWriter 類屬于 System.Xml 命名空間,同 XmlTextReader 類相同的是,XmlTextWriter 類同樣提供沒存,直向前的方式進行 XML 文件操作,但是與XmlTextReader 類操作相反,XmlTextWriter 類執(zhí)行的是寫操作。XmlTextWrit

16、er 類的構(gòu)造函數(shù)包括三種重載形式,分別為一個字符串、一個流對象和一個 TextWriter 對象。通過使用 XmlTextWriter 類可以動態(tài)的創(chuàng)建 XML 文檔,示例代碼如下所示。 【示例 2】創(chuàng)建 XML 文檔。 上述代碼創(chuàng)建了一個 XmlTextWriter 對象并通過 XmlTextWriter 對象編寫 XML 文檔,在使用 XmlTextWriter 類構(gòu)造函數(shù)時,可以指定編碼類型,或使用默認的編碼類型,若使用默認的編碼類型,參數(shù)傳遞 null 即可,默認編碼類型將為 UTF-8,示例代碼如下所示。 XmlTextWriter wr = new XmlTextWriter(

17、Server.MapPath(newXml.xml),null);/創(chuàng)建寫對象 使用了 XmlTextWriter 類創(chuàng)建對象后,則需要使用 XmlTextWriter 對象的 Formatting 方法指定輸出的格式,示例代碼如下所示。 XmlTextWriter wr = new XmlTextWriter( Server.MapPath(newXml.xml),null);/創(chuàng)建寫對象try wr.Formatting = Formatting.Indented;/格式化輸出 wr.WriteStartDocument();/開始編寫文檔 wr.WriteStartElement(Sho

18、pInformation);/編寫節(jié)點 wr.WriteStartElement(Shop); wr.WriteAttributeString(place, 北京); wr.WriteElementString(Name, 中關(guān)村); wr.WriteElementString(Phone, 123456); wr.WriteElementString(Seller, Guojing); wr.WriteEndElement();/結(jié)束節(jié)點編寫 wr.WriteEndElement();/結(jié)束節(jié)點編寫 Response.Write(操作成功); catch (Exception) Respon

19、se.Write(操作失敗); Node Type is:XmlDeclaration Nameis:xmlValue is:version=1.0 encoding=utf-8 Node Type is:WhitespaceNameis:Value is:wr.Formatting = Formatting.Indented;/格式化輸出 指定了輸出格式之后,則需要開始為 XML 文檔創(chuàng)建節(jié)點,在創(chuàng)建節(jié)點前,首先需要聲明XML 文檔,則必須輸出聲明,聲明 1.0 版本的xml 文檔代碼如下所示。 wr.WriteStartDocument();/開始編寫文檔 聲明文檔后就可以使用 Write

20、StartElement 進行節(jié)點的創(chuàng)建,創(chuàng)建節(jié)點代碼如下所示。 wr.WriteStartElement(Shop);/編寫節(jié)點 上述代碼創(chuàng)建了 Shop 節(jié)點,如果需要為該節(jié)點創(chuàng)建 place=“北京”屬性則需要使用WriteAttributeString 方法進行創(chuàng)建,示例代碼如下所示。 wr.WriteAttributeString(place, 北京); 創(chuàng)建了父節(jié)點之后,可以通過 WriteElementString 方法創(chuàng)建子節(jié)點,示例代碼如下所示。 wr.WriteElementString(Name, 中關(guān)村); 節(jié)點全部創(chuàng)建完成后,需要使用 WriteEndElement

21、方法進行尾節(jié)點的編寫,示例代碼如下所示。 wr.WriteEndElement();/結(jié)束節(jié)點編寫 一個 XML 文檔就編寫完畢了,編寫完成并不能自動的更新 XML 文檔,還需要使用 Flush方法進行數(shù)據(jù)更新,更新完畢后還需要關(guān)閉 XmlTextWriter 對象示例代碼如下所示。 wr.Flush(); /更新文件 wr.Close();/結(jié)束寫對象 使用 Flush 方法就能夠?qū)?XML 數(shù)據(jù)保存在文件中,運行后 XML 文檔結(jié)構(gòu)如下所示。 1.3 Web Services1.3.1 Web Services 基礎Web Services 即 Web 服務。所謂服務就是系統(tǒng)提供一組接口,

22、并通過接口使用系統(tǒng)提供的功能。與在 Windows 系統(tǒng)中應用程序通過 API 接口函數(shù)使用系統(tǒng)提供的服務一樣,在 Web 站點之間,如果想要使用其他站點的資源,就需要其他站點提供服務,這個服務就是 Web 中關(guān)村 123456 Guojing 服務。Web 服務就像是一個資源共享站,Web 站點可以在一個或多個資源站上獲取信息來實現(xiàn)系統(tǒng)功能。 Web 服務是建立可互操作的分布式應用程序的新平臺,它是一套標準,定義了應用程序如何在 Web 上實現(xiàn)互操作。在這個新的平臺上,開發(fā)人員可以使用任何語言,還可以在任何操作系統(tǒng)平臺上進行編程,只要保證遵循 Web 服務標準,就能夠?qū)Ψ者M行查詢和訪問。W

23、eb 服務的服務器端和客戶端都要支持行業(yè)標準協(xié)議 HTTP、SOAP 和 XML。 Web 服務中表示數(shù)據(jù)和交換數(shù)據(jù)的基本格式是可擴展標記語言(XML)。Web 服務以 XML 作為基本的數(shù)據(jù)通信方式,來消除使用不同組件模型、操作系統(tǒng)和編程語言的系統(tǒng)之間存在的差異。開發(fā)人員可以使用同使用組件創(chuàng)建分布式應用程序一樣的方法,創(chuàng)建不同來源的 Web 服務所組合在一起的應用程序。 網(wǎng)絡是多樣性的,要在 Web 的多樣性中取得成功,Web 服務在涉及操作系統(tǒng)、對象模型和編程語言的選擇時不能有任何傾向性。并且,要使 Web 服務像其他基于 Web 的技術(shù)一樣被廣泛采用,還必須滿足以下特性: 服務器端和客戶

24、端的系統(tǒng)都是松藕合的。也就是說,Web 服務與服務器端和客戶端所使用的操作系統(tǒng)、編程語言都無關(guān)。 Web 服務的服務器端和客戶端應用程序具有連接到 Internet 的能力。 用于進行通信的數(shù)據(jù)格式必須是開放式標準,而不是封閉通信方式。在采用自我描述的文本消息時,Web 服務及其客戶端無須知道每個基礎系統(tǒng)的構(gòu)成即可共享消息,這使得不同的系統(tǒng)之間能夠進行通信。Web 服務使用 XML 實現(xiàn)此功能。 1.3.2 Web 服務體系結(jié)構(gòu)要講到 Web Service 體系結(jié)構(gòu)就不得不提到SOA,SOA(Serveice-Oriented Architecture,面向服務的體系結(jié)構(gòu))是一個組件模型,它

25、將應用程序的不同功能單元(稱為服務)通過這 些服務之間定義良好的接口和契約聯(lián)系起來。 在 SOA 中,接口采用中立的方式定義,接口只聲明開發(fā)人員如何繼承和實現(xiàn)該接口,接口的聲明應該是中立的、不依賴于平臺、語言而實現(xiàn)的。接口相當于如何規(guī)定開發(fā)人員規(guī)范的進行 Web Service 能的實現(xiàn)。SOA 具有以下特點。 n SOA 服務具有平立的自我描述 XML 文檔。Web 服務描述語言(WSDL, Web Services Description Language)是用于描述服務的標準語言。 n SOA 服務用消息進行通信,該消息通常使用 XML Schema 來定義(也叫做 XSD, XML S

26、chema Definition)。 Web Service 體系結(jié)構(gòu)則采用了 SOA 模型,Web Service 模型包含三個角色,這三個角色包括服務提供者、服務請求者和服務注冊中心,如圖所示。 Web Service 體系結(jié)構(gòu) 其中,服務提供者也可以稱為服務的擁有者,它通過提供服務接口使 Web Service 在網(wǎng)絡上是可用的。服務接口是可以被其他應用程序訪問和使用的軟件組件,如果服務提供者創(chuàng)建了服務接口,服務提供者會向服務注冊中心發(fā)布服務,以注冊服務描述。相對于 Web Service 而言,服務提供者可以看作訪問服務的托管平臺。 服務請求者也稱為 Web Service 的使用者,

27、服務請求者可以通過服務注冊中心查找服務提供者,當請求者通過服務器中心查找到提供者之后,就會綁定到服務接口上,與服務提供者進行通信。相對于 Web Service 而言,服務請求者是尋找和調(diào)用提供者提供的接口的應用程序。 服務注冊中心提供請求者和提供者進行信息通信,當服務提供者提供服務接口后,服務注冊中心則會接受提供者發(fā)出的請求,從而注冊提供者。而服務請求者對注冊中心進行服務請求后,注冊中心能夠查找到提供者并綁定到請求者。 1.4 創(chuàng)建 Web 服務在 ASP.NET 中創(chuàng)建一個 Web 服務與創(chuàng)建一個網(wǎng)頁相似,但是 Web 服務沒有用戶界面,也沒有可視化組件,并且 Web 服務僅包含方法。We

28、b 服務可以在一個擴展名.asmx 的文件中編寫代碼,也可以放在代碼隱藏文件中。 注意:在 Visual Studio 中,.asmx 文件的隱藏文件創(chuàng)建在 App_Code 目錄下。 1.4.1 Web 服務文件在 Web 服務文件中包括一個 WebService 指令,該指令在所有 Web 服務中都是必需的。其代碼如下: Language 屬性:指定在 Web Services 中使用的語言。可以為.NET 支持的任何語言, 包括 C#、Visual Basic 和 JScript。該屬性是可選的,如果沒有設置該屬性,編譯器將根據(jù)類文件使用的擴展名推導出所使用的語言。 Class 屬性:指

29、定實現(xiàn) Web Services 的類名,該服務在更改后第一次訪問 Web Services 時被自動編譯。該值可以是任何有效的類名。該屬性指定的類可以存儲在單獨的代碼隱藏文件中,也可以存儲在與 Web Services 指令相同的文件中。該屬性是 Web Services 必需的。 CodeBehind 屬性:指定 Web Services 類的源文件的名稱。 Debug 屬性:指示是否使用調(diào)試方式編譯 Web Services。如果啟用調(diào)試方式編譯 Web Services,Debug 屬性則為 true;否則為 false。默認為 false。在 Visual Studio 2010 中

30、,Debug 屬性是由 Web.config 文件中的一個輸入值決定的,所以開發(fā) Web Services 時,該屬性會被忽略。 1.4.2 Web 服務代碼隱藏文件在代碼隱藏文件中包含一個類,它是根據(jù) Web 服務的文件名命名的,這個類有兩個特性標簽,即 Web Service 和 Web Service Binding。在該類中還有一個名為 Hello World 的模板方法,它將返回一個字符串。這個方法使用 Web Method 特性修飾,該特性表示方法對于 Web 服務使用程序可用。 1Web Service 特性 對于將要發(fā)布和執(zhí)行的Web 服務來說,Web Service 特性是可

31、選的。可以使用Web Service特性為 Web 服務指定不受公共語言運行庫標識符規(guī)則限制的名稱。 Web 服務在成為公共之前,應該更改其默認的 XML 命名空間。每個 XML Web Services 都需要唯一的 XML 命名空間來標識它,以便客戶端應用程序能夠?qū)⑺c網(wǎng)絡上的其他服務區(qū)分開來。/可用于正在開發(fā)中的 Web 服務,已發(fā)布的 Web 服務應該使用更具永久性的命名空間。例如,可以將公司的 Internet 域名作為 XML 命名空間的一部分。雖然很多 Web 服務的 XML 命名空間與 URL 很相似,但是,它們無須指向 Web 上的某一實際資

32、源(Web 服務的 XML 命名空間是 URI)。 說明:對于使用 ASP.NET 創(chuàng)建的 Web 服務,可以使用 Namespace 屬性更改默認的 XML 命名空間。 例如,將 Web Services 特性的 XML 命名空間設置為 ,代碼如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; / / WebService 的摘要說明 / WebService(Name

33、space = /) WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1) / 若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務,請取消注釋以下行。 / System.Web.Script.Services.ScriptService public class WebService : System.Web.Services.WebService public WebService() 2Web Service Binding 特性 按 Web 服務描述語言(WSDL)的

34、定義,綁定類似于一個接口,原因是它定義一組具體的操作。每個 Web Service 方法都是特定綁定中的一項操作。Web Service 方法是 Web Service 的默認綁定的成員,或者是在應用于實現(xiàn)Web Service 類的Web Service Binding 特性中指定的綁定成員。Web 服務可以通過將多個 Web Service Binding 特性應用于 Web Service 來實現(xiàn)多個綁定。 注意:在解決方案中添加 Web 引用后,將自動生成.wsdl 文件。 3Web Method 特性 Web Service 類包含一個或多個可在 Web 服務開的公共方法,這些 We

35、b Service 方法以 Web Method 特性開頭。使用 ASP.NET 創(chuàng)建的 Web 服務中的某個方法添加此 Web Method特性后,就可以從遠程 Web 客戶端調(diào)用該方法。 Web Method 特性包括一些屬性,這些屬性可以用于設置特定 Web 方法的行為。語法如下: WebMethod(PropertyName=value) Web Method 特性提供一下屬性。 Buffer Response 屬性 Buffer Response 屬性啟用對 Web Service 方法響應的緩沖。當設置為 true 時,ASP.NET 在將響應從服務器向客戶端發(fā)送之前,對整個響應進

36、行緩沖。當設置為 false 時,ASP.NET 以 16KB 的塊區(qū)緩沖響應。默認值為 true。 Cache Duration 屬性 Cache Duration 屬性啟用對 Web Service 方法結(jié)果的緩存。ASP.NET 將緩存每個唯一參數(shù)集的結(jié)果。該屬性的值指定 ASP.NET 應該對結(jié)果進行多少秒的緩存處理。值為 0,則禁用對結(jié)果進行緩存。默認值為 0。 Description 屬性 /如果使用設計的組件,請取消注釋以下行 /InitializeComponent(); WebMethod public string HelloWorld() return Hello Wor

37、ld; Description 屬性提供Web Service 方法的說明字符串。當在瀏覽器上測試 Web 服務時, 該說明將顯示在 Web 服務幫助頁上。默認值為空字符串。 Enable Session 屬性 Enable Session 屬性設置為 true,啟用 Web Service 方法的會話狀態(tài)。一旦啟用,Web Service 就可以從 HttpContext.Current.Session 中直接訪問會話狀態(tài)集合,如果它是從 Web Service 基類繼承的,則可以使用 Web Serive.Session 屬性來訪問會話狀態(tài)集合。默認值為 false。 Message Na

38、me 屬性 Web 服務中禁止使用方法重載。但是,可以通過使用 Message Name 屬性消除由多個相同名稱的方法造成的無法識別問題。 Message Name 屬性使 Web 服務能夠唯一確定使用別名的重載方法。默認值是方法名稱。當指定 Message Name 時,結(jié)果 SOAP 消息將反饋該名稱,而不是實際的方法名稱。 1.4.3 創(chuàng)建一個簡單的 Web 服務下面通過一個示例具體介紹如何創(chuàng)建 Web 服務。 【示例 3】創(chuàng)建簡單的 Web 服務。 本示例將介紹如何一個具有查詢功能的 Web 服務。 程序?qū)崿F(xiàn)的主要步驟如下。 (1) 新建 Web 服務的代碼隱藏文件,它包含了自動生成的

39、一個類,并生成一個名為 Hello World 的模板方法,該方法返回一個字符串。代碼如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; / / WebService 的摘要說明 / WebService(Namespace = /) WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1) / 若要允許使用 ASP.NE

40、T AJAX 從腳本中調(diào)用此 Web 服務,請取消注釋以下行。 / System.Web.Script.Services.ScriptService public class WebService : System.Web.Services.WebService public WebService() (2) 通過將可用的 Web Service 特性應用到實現(xiàn)一個 Web 服務的類上,開發(fā)者可以使用一個描述 Web 服務的字符串來設置該 Web 服務的默認 XML 命名空間,代碼如下: (3) 在代碼中添加自定義的方法 Select,代碼如下: WebMethod(Description =

41、 第一個測試方法,輸入學生姓名,返回學生信息) public string Select(string stuName) string strConn = ConfigurationManager.ConnectionStringsstrConn.ToString(); string sqlStr = select * from tb_StuInfo where stuName=+stuName+; SqlConnection conn = new SqlConnection(strConn); conn.Open(); SqlCommand cmd = new SqlCommand(sqlS

42、tr, conn); SqlDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); string strMessage = ; if (dr.Read() strMessage = 學生編號: + drstuID + ,; strMessage += 姓名: + drstuName + ,; strMessage += 性別: + drstuSex + ,; strMessage += 愛好: + drstuHobby + ,; else if (!String.IsNullOrEmpty(

43、stuName) strMessage = 請輸入姓名; else WebService(Namespace = /) /如果使用設計的組件,請取消注釋以下行 /InitializeComponent(); WebMethod public string HelloWorld() return Hello World; (4) 在“生成”菜單中選擇“生成網(wǎng)站”命令,生成 Web 服務。 (5) 在測試頁中輸入要查詢的學生姓顯示方法的返回結(jié)果。 擊“調(diào)用”按鈕即可調(diào)用 Web 服務的相應方法并 從上面的測試結(jié)果中可以看出,Web 服務的方法的返回結(jié)果是使用 XML 進行編碼的。 1.5 Web 服務的典型應用1.5.1 使用 Web 服務創(chuàng)建完 Web 服務,并對 Internet 上的使用者開放時,開發(fā)人員應該創(chuàng)建一個客戶端應用程序來查找 Web 服務,發(fā)現(xiàn)哪些方法可用,還要創(chuàng)建客戶端,并將合并到客戶端中。這樣,客戶端就可以如同實現(xiàn)本地調(diào)用一樣使用 Web 服務遠程。實際

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論