基礎拾遺------webservice詳解

來源:互聯網
上載者:User

標籤:

基礎拾遺

基礎拾遺------webservice詳解

基礎拾遺------redis詳解

基礎拾遺------反射詳解

基礎拾遺------委託詳解

基礎拾遺------介面詳解

基礎拾遺------泛型詳解

前言

  工作當中常用的服務介面有三個wcf,webservice和webapi.首先第一個接觸的就是webservice,今天大致總結一下。

1.webservice概念相關1.1.Web Service也叫XML Web Service WebService

  是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在 Web上提供的軟體服務,使用WSDL檔案進行說明,並通過UDDI進行註冊。

1.2.XML:(Extensible Markup Language)擴充型可標記語言。

  面向短期的臨時資料處理、面向全球資訊網絡,是Soap的基礎。它被設計的宗旨是描述資料(XML),而非顯示資料(HTML)。後面單獨部落格進行詳細介紹。

1.3.Soap:(Simple Object Access Protocol)簡單對象存取協議。

  是XML Web Service 的通訊協定。其指導理念是“唯一一個沒有發明任何新技術的技術”。當使用者通過UDDI找到你的WSDL描述文檔後,他通過可以SOAP調用你建立的Web服務中的一個或多個操作。SOAP是XML文檔形式的 調用方法的規範,它可以支援不同的底層介面,像HTTP(S)或者SMTP。

<?xml version="1.0"?><soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header>  <m:Trans xmlns:m="http://www.w3schools.com/transaction/"  soap:mustUnderstand="1">234  </m:Trans></soap:Header>  <soap:Body>  <m:GetPrice xmlns:m="http://www.w3schools.com/prices">    <m:Item>Apples</m:Item>  </m:GetPrice></soap:Body></soap:Envelope>

 

1.4.WSDL:(Web Services Description Language) Web服務描述語言

  WSDL 檔案是一個 XML 文檔,用於說明一組 SOAP 訊息以及如何交換這些訊息。大多數情況下由軟體自動產生和使用。

  • Types - 資料類型定義的容器,它使用某種類型系統(一般地使用XML Schema中的類型系統)。
  • Message - 通訊訊息的資料結構的抽象類別型化定義。使用Types所定義的類型來定義整個訊息的資料結構。
  • Operation - 對服務中所支援的操作的抽象描述,一般單個Operation描述了一個訪問入口的請求/響應訊息對。
  • PortType - 對於某個訪問進入點類型所支援的操作的抽象集合,這些操作可以由一個或多個服務存取點來支援。
  • Binding - 特定連接埠類型的具體協議和資料格式規範的綁定。
  • Port - 定義為協議/資料格式綁定與具體Web訪問地址組合的單個服務存取點。
  • Service- 相關服務存取點的集合。
  • WSDL 描述了 Web服務的三個基本屬性:

    (1)服務所提供的操作

    (2)如何訪問服務

    (3)服務位於何處(通過 URL 來確定就 OK 了)

1.5.UDDI (Universal Description, Discovery, and Integration)

  是一個主要針對Web服務供應商和使用者的新項目。在使用者能夠調用Web服務之前,必須確定這個服務內包含哪些商務方法,找到被調用的介面定義,還要在服 務端來編製軟體,UDDI是一種根據描述文檔來引導系統尋找相應服務的機制。UDDI利用SOAP訊息機制(標準的XML/HTTP)來發布,編輯,瀏覽 以及尋找註冊資訊。它採用XML格式來封裝各種不同類型的資料,並且發送到註冊中心或者由註冊中心來返回需要的資料。

2. .net webservice

  上面的理論知識就算您不清楚,想要使用webservice還是沒有任何難度的,不信您往下看。

2.1.建立webservice(vs2013)  2.1.1.建立一個webservice項目(檔案->建立->項目->C#->Web服務應用程式)

  建完這個工程,我們將看到一個叫ServiceDome.asmx的檔案,就先常見webfrom一樣它類似與aspx,我們直接開啟cs代碼檔案即可,asmx檔案至今沒考慮過他有什麼用.如果你什麼都還沒做的話,將看見一個被注釋掉的helloworld的WebMethod,把注釋去掉,在運行,你就可以得 到最簡單的webservice運行執行個體了.點擊"helloworld"將執行其方法.顯然,這個函數對我們的意義只在於宏觀的瞭解了下web服務的寫 法.

  2.1.2.WebMethodAttribute詳解

[WebMethod(Description="備忘資訊")]     public string HelloWorld()     {      return "Hello World";     } 

  如上,WebMethodAttribute此特性是表示可以從遠程 網頁用戶端調用該方法。

  其中WebMethod包括以下6個屬性

  (1)Description: 

    是對webservice方法描述的資訊。就像webservice方法的功能注釋,可以讓調用者看見的注釋。

  (2).EnableSession:

    指示webservice否啟動session標誌,主要通過cookie完成的,預設false。

 

public static int i=0;[WebMethod(EnableSession=true)]public int Count(){i=i+1;return i;} 

  如上Count()回和儲存的session類似把資訊保留下來。

  (3)MessageName:

    主要實現方法重載後的重新命名.

[WebMethod]public int Add(int i, int j) {return i + j;}[WebMethod(MessageName="Add2")]public int Add(int i, int j, int k) {return i + j + k;}} 

  (4).TransactionOption:

    指示 XML Web services 方法的事務支援。

  (5).CacheDuration:

    Web支援輸出快取,這樣webservice就不需要執行多遍,可以提高訪問效率,而CacheDuration就是指定緩衝時間的屬性。

public static int i=0;[WebMethod(EnableSession=true,CacheDuration=30)]public int Count(){i=i+1;return i;}

  (6).BufferResponse:

    配置WebService方法是否等到響應被完全緩衝完,才發送資訊給請求端。普通應用要等完全被緩衝完才被發送的!只有當已知 XML Web services 方法將大量資料返回到用戶端時,才需要將 BufferResponse 設定為 false。對於少量資料,將 BufferResponse 設定為 true 可提高 XML Web services 的效能。當 BufferResponse 為 false 時,將對 XML Web services 方法禁用 SOAP 延伸模組名。

2.2.實現webservice

  特性說完就要說我們的webserviece服務介面的實現了,其實對於他的實現和我們實現一個類沒有太大的區別。、

        [WebMethod]        public string SynCardToDreams(int start, int end)        {            try            {                DateTime begin = DateTime.Now;                UserSignService userService = new UserSignService();                bool ret = userService.SynChroCardToDreams(start, end);                DateTime endTime = DateTime.Now;                double total = (endTime - begin).TotalMinutes;                string retmsg = ret ? "同步成功" : "同步失敗";                return "本次同步用時 " + total + "分鐘;" + retmsg;            }            catch (Exception ex)            {                return "同步失敗:" + ex.ToString();            }        }
2.3.調用webservice

在要使用服務的項目處右擊加入服務參考

然後在程式當中直接執行個體化調用此方法即可:

  //調用方法    TestServiceReference.TestServiceSoapClient testService = new TestServiceReference.TestServiceSoapClient();    int result = testService.Add(1, 2);

前端調用

<script type="text/javascript">    $(function () {        $.ajax({            type: ‘POST‘,            url: ‘TestService.asmx/ADD‘,            data: ‘{ A: 4,B:4}‘,            dataType: ‘json‘,            contentType: "application/json",            success: function (data) {                alert(data.d);            }        });    });</script>
 3.修改webservice服務地址:

3.1修改設定檔

<?xml version="1.0" encoding="utf-8" ?>  <configuration>      <configSections>      </configSections>      <system.serviceModel>          <bindings>              <basicHttpBinding>                  <binding name="PointStoreServiceSoap" />              </basicHttpBinding>          </bindings>          <client>              <endpoint address="http://localhost:25548/WebServiceDom.asmx"                  binding="basicHttpBinding" bindingConfiguration="PointStoreServiceSoap"                  contract="PointStoreService.PointStoreServiceSoap" name="PointStoreServiceSoap" />          </client>      </system.serviceModel>  </configuration> 

 

基礎拾遺------webservice詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.