国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Web服務(wù)

2019-11-14 15:45:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  Web服務(wù)(Web Services),其實(shí)就是一種無(wú)須購(gòu)買并部署的組件,是一種被一次部署到Internet中然后到處可用的一種新型組件,所有應(yīng)用只需要能夠連入Internet,就可以使用和集成Web服務(wù)。

  Web服務(wù)基于一套描述軟件通信語(yǔ)法和語(yǔ)義的核心標(biāo)準(zhǔn)。xml提供表示數(shù)據(jù)的通用語(yǔ)法;簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)提供數(shù)據(jù)交換的語(yǔ)義;Web服務(wù)描述語(yǔ)言(WSDL)提供描述Web服務(wù)功能的機(jī)制。其他規(guī)范統(tǒng)稱為WS-*體系結(jié)構(gòu),用于定義Web服務(wù)發(fā)現(xiàn)、事件、附件、安全性、可靠的消息傳送、事務(wù)和管理方面的功能。

  Web服務(wù)提供了定義良好的接口,這些接口描述了它所提供的服務(wù),用戶可以通過(guò)這些接口來(lái)調(diào)用Web服務(wù)提供的功能。開發(fā)者可以通過(guò)把遠(yuǎn)程服務(wù)、本地服務(wù)和用戶代碼結(jié)合在一起來(lái)創(chuàng)建應(yīng)用程序。

  Web服務(wù)既可以在內(nèi)部由單個(gè)應(yīng)用程序使用,也可通過(guò)Internet公開供任意數(shù)量的應(yīng)用程序使用。由于可以通過(guò)標(biāo)準(zhǔn)接口訪問(wèn),因此Web服務(wù)使異構(gòu)系統(tǒng)能夠作為一個(gè)計(jì)算網(wǎng)絡(luò)協(xié)同運(yùn)行。

  Web服務(wù)正在開創(chuàng)一個(gè)分布式應(yīng)用程序開發(fā)的新時(shí)代。作為Internet的下一個(gè)革命性的進(jìn)步,Web服務(wù)將成為把所有計(jì)算設(shè)備鏈接到一起的基本結(jié)構(gòu)。

  Web服務(wù)的設(shè)計(jì)是基于兼容性很強(qiáng)的開放式標(biāo)準(zhǔn)。為了確保最大限度的兼容性和可擴(kuò)展性,Web服務(wù)體系被建設(shè)得盡可能通用。

Web服務(wù)的標(biāo)準(zhǔn)如下:

  1.WSDL:告訴客戶端一個(gè)Web服務(wù)中都提供了什么方法,這些方法包含什么參數(shù)、將要返回什么值以及如何與這些方法進(jìn)行交互。

  2.SOAP:在信息發(fā)送到一個(gè)Web服務(wù)之前,提供對(duì)信息進(jìn)行編碼的標(biāo)準(zhǔn)。

  3.HTTP:所有的Web服務(wù)交互發(fā)生時(shí)所遵循的協(xié)議。

  4.DISCO:該標(biāo)準(zhǔn)提供包含對(duì)Web服務(wù)的鏈接或以一種特殊的途徑來(lái)提供Web服務(wù)的列表。

  5.UDDI:這個(gè)標(biāo)準(zhǔn)提供創(chuàng)建業(yè)務(wù)的信息。

SOAP

  在.NET中,客戶端在與Web服務(wù)交互時(shí)有下面三種協(xié)議能夠使用:

    1.HTTP GET:使用該協(xié)議與Web服務(wù)交互時(shí),會(huì)把客戶端發(fā)送的信息編碼后放在查詢字符串里,而客戶端獲取的Web服務(wù)的信息則是以一個(gè)基本的XML文檔的形式存在。

    2.HTTP POST:使用該協(xié)議與Web服務(wù)交互時(shí),會(huì)把參數(shù)放在請(qǐng)求體里面,而獲取的信息則是以一個(gè)基本的XML文檔的形式存在。

    3.SOAP:使用該協(xié)議與Web服務(wù)交互時(shí),請(qǐng)求和獲取的信息都是以XML形式存在。同HTTP GETHTTP POST一樣,SOAP也是運(yùn)行于HTTP之上,但它綁定信息則是采用一個(gè)更詳細(xì)的基于XML的語(yǔ)言來(lái)描述。

  盡管.NET有能力支持以上三種協(xié)議,但是為了安全,通常會(huì)限制使用前兩種協(xié)議。默認(rèn)情況下,.NET禁用HTTP GET,而且對(duì)于本地計(jì)算機(jī)限制HTTP POST。這意味著程序員可以使用前兩種協(xié)議測(cè)試Web服務(wù),但不能使用它們來(lái)訪問(wèn)一個(gè)遠(yuǎn)程計(jì)算機(jī)上的Web服務(wù)。可以在Web.Config文件里改變這些設(shè)置,但.NET不推薦這樣做。

  從本質(zhì)上來(lái)說(shuō),當(dāng)使用SOAP時(shí),程序員只需要簡(jiǎn)單的使用SOAP標(biāo)準(zhǔn)來(lái)編碼信息即可。

Web服務(wù)交互

  WSDLSOAP標(biāo)準(zhǔn)使得Web服務(wù)同客戶端的交互成為可能,但它們沒(méi)有說(shuō)明如何進(jìn)行交互。以下三個(gè)組件在Web服務(wù)同客戶端的交互中扮演重要角色:

    1.一個(gè)定制的Web服務(wù)類,該類提供一些功能。

    2.一個(gè)客戶端應(yīng)用程序,該程序使用上面組件的功能。

    3.一個(gè)代理類,該類扮演上面兩個(gè)組件間的接口角色。該代理類包含所有Web服務(wù)方法的說(shuō)明,而且根據(jù)選擇的協(xié)議處理所有與Web服務(wù)交互相關(guān)的細(xì)節(jié)問(wèn)題。

  實(shí)際交互過(guò)程的執(zhí)行步驟:

    1.客戶端創(chuàng)建一個(gè)代理類的實(shí)例。

    2.客戶端調(diào)用代理類的方法。

    3.在后臺(tái),代理類以恰當(dāng)?shù)男问桨l(fā)送信息到Web服務(wù),并且接收相應(yīng)的反應(yīng)信息。

    4.代理類返回調(diào)用代碼的結(jié)果。

  在使用交互過(guò)程中需要注意以下內(nèi)容:

    1.并不是所有的數(shù)據(jù)類型都支持方法參數(shù)和返回值。如大部分.NE類對(duì)象都不能在該交互過(guò)程中被傳遞(DataSet除外)。

    2.網(wǎng)絡(luò)調(diào)用花費(fèi)很少的但可計(jì)量的時(shí)間。如果需要在一行代碼中使用幾個(gè)Web服務(wù)方法,則這個(gè)延遲會(huì)被累加的。

    3.除非Web服務(wù)采用特殊步驟來(lái)記憶狀態(tài),狀態(tài)數(shù)據(jù)會(huì)被丟失的。這意味著程序員應(yīng)該把Web服務(wù)看成是一個(gè)無(wú)狀態(tài)的實(shí)用類,而該類包含很多程序員需要使用的方法。

    4.在與Web服務(wù)的交互中,會(huì)出現(xiàn)錯(cuò)誤且可能被中斷。程序員在構(gòu)建一個(gè)健壯的應(yīng)用程序時(shí)要考慮到很多因素。

創(chuàng)建Web服務(wù)

  創(chuàng)建Web服務(wù)的步驟:

    1. 右鍵點(diǎn)擊網(wǎng)站名稱。在彈出的快捷菜單中選擇“添加新項(xiàng)”命令。

    2. 在彈出的“添加新項(xiàng)”選擇“已安裝模板”下的“Visual C#”模板,并在模板文件列表中選中“Web 服務(wù)”,然后在“名稱”文本框輸入該文件的名稱“WebService.asmx”,單擊“添加”按鈕。

    3. 在解決方案資源管理器中出現(xiàn)Web服務(wù)的文件。

  在asp.net中,所有的Web服務(wù)類都會(huì)繼承于System.Web.WebService類。該類包含一個(gè)構(gòu)造函數(shù),一般情況下可以不需要改構(gòu)造函數(shù)。

  WebMethod用來(lái)提供描述它所標(biāo)識(shí)的方法的接口,WebMethod的屬性如下:

    1.DescriptionWeb服務(wù)的方法的描述信息、對(duì)Web服務(wù)的方法的功能注釋。

    2.Enablesession:指示Web服務(wù)是否啟動(dòng)Session標(biāo)志,主要通過(guò)Cookie完成,默認(rèn)為false

    3.MessageName:主要實(shí)現(xiàn)方法重載后的重命名。

    4.TransactionOption:指示XML Web services方法的事務(wù)支持。

    5.CacheDuration:指定緩存時(shí)間的屬性。

    6.BufferResponse:配置Web服務(wù)的方法是否等到響應(yīng)被完全緩沖后,才發(fā)送信息給請(qǐng)求端。

  創(chuàng)建Web服務(wù)中的方法

    利用上述步驟創(chuàng)建Web服務(wù)WebService1.asmx,修改WebService1.asmx.cs中的代碼,如下:

 1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.SqlClient; 5 using System.Linq; 6 using System.Web; 7 using System.Web.Services; 8  9 namespace Webapplication110 {11     /// <summary>12     /// WebService1 的摘要說(shuō)明13     /// </summary>14     [WebService(Namespace = "http://tempuri.org/")]15     [WebServiceBinding(ConformsTo = WsiPRofiles.BasicProfile1_1)]16     [System.ComponentModel.ToolboxItem(false)]17     // 若要允許使用 ASP.NET Ajax 從腳本中調(diào)用此 Web 服務(wù),請(qǐng)取消注釋以下行。 18     // [System.Web.Script.Services.ScriptService]19     public class WebService1 : System.Web.Services.WebService20     {21 22         [WebMethod(Description="獲取學(xué)生信息")]23         public DataSet GetStudent(string name)24         {25             if (name == "")26                 return null;27             DataSet dataSet = new DataSet("Student");28             string connString = "Data Source=追風(fēng)的蝸牛;Initial Catalog=Student;Integrated Security=True";29             string sql = "select * from Student where stuName='" + name + "'";30             SqlConnection sqlConnection = new SqlConnection(connString);31             try32             {33                 SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sql, sqlConnection);34                 sqlConnection.Open();35                 sqlDataAdapter.Fill(dataSet);36                 return dataSet;37             }38             catch39             {40                 sqlConnection.Close();41                 return null;42             }43         }44     }45 }
View Code

  使用存在的Web服務(wù)

    右鍵單擊項(xiàng)目名稱,為項(xiàng)目添加服務(wù)引用,選擇此解決方案中的Web服務(wù),選擇剛剛創(chuàng)建的Web服務(wù)。

    添加頁(yè)面Default.aspx,添加一個(gè)DetailsView控件,Default.aspx.cs中的代碼如下:

 1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Linq; 5 using System.Web; 6 using System.Web.UI; 7 using System.Web.UI.WebControls; 8  9 namespace WebApplication110 {11     public partial class Default : System.Web.UI.Page12     {13         protected void Page_Load(object sender, EventArgs e)14         {15             WebService1 server1 = new WebService1();16             DataSet dataSet = server1.GetStudent("吳彤");17             if (dataSet != null)18             {19                 this.DetailsView1.DataSource = dataSet.Tables[0].DefaultView;20                 this.DetailsView1.DataBind();21             }22         }23     }24 }
View Code

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黎城县| 通化县| 濉溪县| 壤塘县| 灌南县| 景德镇市| 乌什县| 南陵县| 剑川县| 固安县| 隆林| 平遥县| 沅江市| 齐齐哈尔市| 闸北区| 东乡| 濮阳县| 许昌县| 裕民县| 龙江县| 南华县| 蒲城县| 新余市| 唐河县| 古田县| 榆林市| 宜兰县| 嵊泗县| 海南省| 石台县| 浪卡子县| 葵青区| 澄迈县| 和静县| 永福县| 武宁县| 额敏县| 固安县| 元阳县| 神木县| 民县|