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

基礎拾遺

基礎拾遺------特性詳解javascript

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

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

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

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

基礎拾遺------接口詳解ajax

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

基礎拾遺-----依賴注入json

基礎拾遺-----數據註解與驗證api

基礎拾遺-----mongoDB操做緩存

基礎拾遺----RabbitMQ

前言

  工做當中經常使用的服務接口有三個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:Envelope
xmlns: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文檔元素的結構圖
  • 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此特性是表示能夠從遠程 Web 客戶端調用該方法。

  其中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> 
相關文章
相關標籤/搜索