Web API 2 (一)之Web Service簡介

来源:http://www.cnblogs.com/ITusk/archive/2016/06/13/5579962.html
-Advertisement-
Play Games

Web Service 是什麼? Web Service 也叫作XML Web Service,是一種網路化的,分散式的軟體系統,通常通過Http交付,可以跨編程語言和操作系統進行遠程調用操作,通常情況下,Web Service包括服務本身和客戶端,後者也被稱為消費者或請求者,可以通過網路訪問部署在 ...


Web Service 是什麼?

Web Service 也叫作XML Web Service,是一種網路化的,分散式的軟體系統,通常通過Http交付,可以跨編程語言和操作系統進行遠程調用操作,通常情況下,Web Service包括服務本身和客戶端,後者也被稱為消費者或請求者,可以通過網路訪問部署在伺服器提供的某種服務(通過調用Web服務對外公開的訪問介面)。其可以是網頁瀏覽器,一個桌面應用,更甚至是一個沒有圖形界面的應用程式

圖 1.1 一個Web 服務和它的一個客戶端

根據定義,Web服務和服務客戶端間通過HTTP進行交互,HTTP消息是基礎設施,這些HTTP消息被組合成描述Web服務特征的基本會話模式。常見的模式有4中,分別如下:

  • 如果Web服務的會話以期望的HTTP請求HTTP響應開始,那麼該模式被稱為 請求/處理 模式,是目前4種模式中占主導地位的一種模式
  • 如果會話以伺服器發出的一條期望從客戶端返回消息的HTTP消息開始,那麼該模式稱為 要求/響應
  • 從客戶端到伺服器的無響應消息,被稱為 單向模式
  • 從伺服器到客戶單的無響應消息,被稱為 通知模式

Web Service中的一些概念

SOAP:SOAP最初代表 簡單對象訪問協議(Simple Object Access Protocol),前面是我們說過Web Service 是通過HTTP進行交付的,Web服務和Web 服務客戶端間交互的信息是經過封裝的XML格式的數據,並增加了相應的HTTP報頭,而這些就被稱為SOAP協議,總的來說就是 SOAP協議 = HTTP協議 + XML格式的數據 

WSDL:Web服務描述語言(Web Service Description Language),這是基於XML 的一種用來描述Web Service 內定義的操作的名稱、說明信息、參數、返回值等信息的語言,它本身必須保證Web service 和Web 客戶端都必須能理解這種語言。一般情況下有開發工具自動生成。

XSD : xml Schema Definition ,從其全稱可以看出這也是一種基於XML的一種語言,它定義了一套標準的數據類型,Web Service就是使用XSD作為其數據類型系統的,Web Service中使用的數據最終都要被轉換為XSD格式來定義(功能類似於Net平臺的IL語言)

UDDIUDDI   是一種規範,它主要提供基於Web服務的註冊和發現機制, 是一種目錄服務,企業可以使用它對 Web services 進行註冊和搜索,當客戶端調用Web Service之前,必須知道Web Service的WSDL,Web Service的生產者可以通過兩種方式將WSDL 公開給其使用者,其一,將WSDL直接告訴其調用者,其二,將服務對應WSDL註冊到UDDI伺服器上。

Web Service 的一些特點

  • 語言透明性

    Web服務的服務及其客戶端可以不必使用同種編程語言來實現,語言透明性是 Web 服務互操作性的一個重要因素,即儘管使用不同的編程語言、不同的操作系統和硬體平臺,Web服務和其消費者之間可以無縫的銜接。

    假如使用C#寫了一個Web服務,如果想讓該服務可以讓使用Python或Java語言開發的客戶端來使用的話,那麼必須存在一個中間處理層來處理服務和客戶端之間不同的數據類型,XML可以作為這樣的一個中間層,因為它支持結構化的文檔交換和處理,另一個中間層是JSON(JavaScript Object Notation )

  • 模塊化設計

    Web服務設計師模塊化的,這使得新的服務可以有現有的服務組合而成。Web服務設計的指導原則是從非常簡單的服務操作和本質上並不複雜的功能開始,然後可以根據現實需求把這些操作組合成服務 

  • 無狀態性

    Web 服務由一些操作組成,每個操作都被實現為一個無狀態函數的調用(如果某個調用的返回值僅依賴於傳遞給他的參數,那麼該調用是無狀態的)

  • 開發基礎設施

    Web服務使用符合行業標準的、獨立於供應商的協議和HTTP、XML、JSON這些語言部署,所有的這一切都是普遍存在的,Web服務可以利用網路、數據格式、安全性和其它已經到位的基礎設施來降低其進入成本

使用Web Service的好處

  • 現代的軟體系統一般情況下都是由多種語言編寫的,這就造就了現代軟體開發中的一個重大的挑戰:系統集成,如何讓這些不同語言編寫的、運行在不同硬體平臺上的軟體系統進行交互?Web服務提供了一個相對簡單的答案。
  • 由於Web Service是基於模塊化的思想開發的,可以很大程度上提升代碼的復用率和軟體開發進度

Web Service在Net中使用的一個簡單小實例

  1. 打開 Visual Studio,新建項目àWebàASP.NET Web應用程式
  2. 在創建好的項目上右鍵à添加àWeb服務(asmx)

  3. 創建的firstWebService.asmx的文件如下
public class firstWebService : System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

{

return "Hello World";

}

[WebMethod(Description ="求和的方法")]

public int GetSum(params int[] arr)

{

int sum = 0;

foreach(int i in arr)

{

sum += i;

}

return sum;

}

} 
View Code

 

至此,一個簡單的Web Service 就算部署完成了,點擊啟動程式,在瀏覽器里可以查看到

接下來創建一個Web客戶端調用創建好的Web 服務,該例子只為演示,就創建一個最簡單的控制台應用程式Client

  1. 在創建好的控制台程式上右鍵 添加à服務引用

     

    在彈出的視窗中,將創建的Web 服務的URL粘到地址那一欄中,然後點擊確定

     

    創建完成後,咱們的Client的目錄結構如下:

     

5.寫代碼調用Web服務

 //需要導入服務所在的命名空間  using Client.ServiceReference1;
            firstWebServiceSoapClient c = new firstWebServiceSoapClient();
            string s = c.HelloWorld();

            Console.WriteLine(s);

            //調用求和函數GetSum(params int[] arr),但你會發現在這裡其參數類型變為了(ArrayOfInt),轉到定義可以看到該類繼承自List<Int>
            //因此這裡的實參要不參與下麵的方式添加,要麼 直接添加一個List<int>類型的集合
            int[] arr = new int[] { 1, 2, 3 };
            ArrayOfInt ar = new ArrayOfInt();

            int sum = c.GetSum(ar);
            Console.WriteLine("The SUM is :{0}",sum);
            Console.ReadKey();
View Code

6.至此,一個簡單的Web Service的構建和調用就全部完成了。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • <esri:InfoWindow x:Name="InfoWinMF" Placement="TopRight" Padding="15" Map="{Binding ElementName=mainmap}" ContentTemplate="{StaticResource GeneralData ...
  • Lambda表達式 簡化了匿名委托的使用,讓你讓代碼更加簡潔,優雅。據說它是微軟自c#1.0後新增的最重要的功能之一。 首先來看一下其發展 根據上面的發展歷程,可以感到Lambda表達式愈加簡化。 詳細介紹: ...
  • 回到目錄 關於邏輯刪除 對於邏輯刪除之前的做法是在實體類中加個欄位,一般是status,其中一種狀態是刪除,當然也有其它做法,如加個bool的欄位IsDeleted,這些其實都過於武斷,即它在基類裡加上後,所以實體類都會有這種特性,而對於現實的數據表,可能不顯示這種邏輯刪除的特性,如關係表,日誌表, ...
  • 背水一戰 Windows 10 之 動畫: PopInThemeAnimation - 控制項出現時的動畫, PopOutThemeAnimation - 控制項消失時的動畫, FadeInThemeAnimation - 控制項淡入的動畫, FadeOutThemeAnimation - 控制項淡出的動畫... ...
  • 本文參考Roslyn項目中的Issue:#259. 1. C# 7.0 新特性1: 基於Tuple的“多”返回值方法 簡而言之,【本地方法】就是在方法體內部定義一個方法。 其實咋眼一看,這個新特新並沒有什麼新意,因為目前大量C#的項目中,都可以使用delegate或基於delegate變形的各種方案 ...
  • 如果一個頁面中有很長的列表/內容,很多應用都會在用戶向下滾動時隱藏頁面的頭,給用戶留出更多的閱讀空間,同時提供一個方便的吸頂工具欄,比如淘寶中的店鋪頁面。 下麵是一個比較簡單的實現,如果有同學有更好的實現,歡迎留言,讓我們共同進步。 首先假設我們的頁面整體包含3部分; 結構代碼如下,為了區別清楚,我 ...
  • 最近看到滿大街的二維碼掃碼有驚喜,對二維碼也有過一些瞭解,想看看到底是什麼原理,在網上找了一些資料,自己弄了一個實例,採用的是MVC,貼出來分享一下 一維碼生成 Controller 1 <div class="col-md-4"> 2 <h2>一維碼生成</h2> 3 <div><input ty ...
  • 以前寫過一篇《單頁面多類型的多附件上傳》的文章,但是在實際項目中,這樣的並不多見,相比之下,多附件上傳卻經常用到。 而每次使用都要複製粘貼相關的代碼,雖然不麻煩,但用起來卻不太方便,一旦忘記某段代碼沒複製過來,頁面就會報錯。 於是,就想把現在用的這些代碼,變成一個用戶自定義控制項,這樣再次使用的時候就 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...