搭建.Net WebApi並配置Swagger(一)

来源:https://www.cnblogs.com/zhongjyuan/p/12537200.html
-Advertisement-
Play Games

C#進階之WebAPI(一) 那麼首先第一點:什麼是WebAPI? 首先我們瞭解一下.net framework 的框架構成: 可以看到,WebAPI和mvc同屬於B/S模板框架的一種,官方對於WebApi的定義是:WebAPI是一個框架,可以輕鬆構建HTTP服務,覆蓋廣泛的客戶端,包括瀏覽器和移動 ...


C#進階之WebAPI(一)

那麼首先第一點:什麼是WebAPI?
    首先我們瞭解一下.net framework 的框架構成:

 

 

 

可以看到,WebAPI和mvc同屬於B/S模板框架的一種,官方對於WebApi的定義是:WebAPI是一個框架,可以輕鬆構建HTTP服務,覆蓋廣泛的客戶端,包括瀏覽器和移動設備,WebAPI是在.NetFramwork上構建RESTful程式的理想平臺。
    這裡有必要解釋一下什麼是RESTful: RESTful是一種設計風格,REST中的 get、post、put、delete來進行數據的增刪改查,如果開發人員的應用程式符合RESTful原則,那他的服務可被稱之為“Restful風格應用服務”。
 
然後我們瞭解一下:為什麼要使用WebAPI?
    在解釋這個問題之前我們需要首先知道一下.net為外部提供介面的方式有哪些?
    答:WCF、WebService、WebAp、一般處理程式。
      那來瞭解一下他們之間的區別:
        WebService:
            1:基於soap協議,數據格式是xml、
            2:只支持http協議、
            3:不是開源的,但是可以被任意一個瞭解xml的人使用、
            4:只能部署在iis上。
        WCF:
            1:基於soap協議,數據格式是xml、
            2:WCF是webservice的進化版,支持各種各樣的協議,像TCP、http、https、NamedPipes、MSMQ等、
            3:不是開源的,但是可以被任意一個瞭解xml的人使用、
            4:可以部署在應用程式中、IIS上或者Windows服務中。
        WebAPI:
            1:是一個簡單的構建http服務的新框架、
            2:在.net平臺上WebAPI是一個開源的、理想的、構建RESTful服務的技術、
            3:可以使用http的所有特點,(比如URIs、request/response頭、緩存、版本控制、多種內容格式)、
            4:支持mvc的特性,像路由、控制器、action、fiter、模型綁定、控制反轉、依賴註入、單元測試、
            5:可以部署在應用程式中、IIS上、
            6:是一個輕量級的框架,對各種終端的支持都很好、
            7:Response可以被webAPI的MediaTypeFormatter轉換成json、XML或者任何你想轉換的格式。
        一般處理程式:
            一般處理程式其實就是和頁面處理程式相區分開的,因為實現的是IhttpHandler介面,而且不需要繼承自Page類。所以沒有那麼多的事件需要處理,不必消耗太多資源,所以性能方面要比aspx高。
那麼回到這個問題,為什麼要使用WebApi?
        當你遇到下麵這些情況的時候,就可以考慮使用webAPI來構建你的服務了;
            1:需要webservice但是不需要soap、
            2:需要在已有的WCF服務基礎上建立non-soap-based http服務、
            3:只想發佈一些簡單的http服務,不想使用相對複雜的wcf配置、
            4:發佈的服務會被限制帶寬的設備訪問、
            5:希望使用開源框架,關鍵時刻可以自己調試或者自定義一下框架。
 
最後總結一下WebAPI和MVC之間的區別:WebAPI和MVC之間有什麼區別?
        相信使用過mvc和webapi的同學都會覺得這兩者太相似了,使用起來也差不多,但是既然是兩個框架,那肯定是有區別的,我對WebAPI和MVC的區別做了一下總結:
            1:MVC主要是用來構建網站的,既關心數據也關心頁面展示,而WebAPI只關心數據、
            2:WebAPI支持格式協商,客戶端可以通過Accept header通知伺服器期望的格式、
            3:WebApi支持Self Host,MVC目前不支持、
            4:WebAPI通過不同的http verb表達不同的動作(CRUD),MVC則通過Action名字表達動作、
            5:WebAPI內建於System.Web.Http 命名空間下,而MVC位於Systm.Web.Mvc命名空間下,因此路由等有些許不同、
            6:WebAPI非常適合構建移動客戶端服務。

 


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

-Advertisement-
Play Games
更多相關文章
  • 一, 創建工程,引入依賴 @目錄一, 創建工程,引入依賴創建工程工程間的關係的建立配置各個工程當中的 pow 配置信息,相關的依賴父工程(也就是總項目工程)的 pow 配置demo-module06-generate 模塊中pow 配置: Mybatis 逆向工程的 pow 配置demo-modul ...
  • 流程式控制制語句結構 目錄流程式控制制語句結構1.順序結構定義與特點示例2.分支結構2.1. if-else語句2.2. switch語句3.迴圈結構1. for迴圈2. while迴圈3. do-while迴圈使用場景和註意事項4.跳轉語句5.繪製程式流程圖基本步驟常用符號示例工具 1.順序結構 定義與特 ...
  • 多線程編程是每一個開發必知必會的技能,在實際項目中,為了避免頻繁創建和銷毀線程,我們通常使用池化的思想,用線程池進行多線程開發。 線程池在開發中使用頻率非常高,也包含不少知識點,是一個高頻面試題,本篇總結線程池的使用經驗和需要註意的問題,更好的應對日常開發和麵試。 如有更多知識點,歡迎補充~ 異常處 ...
  • Command,即命令,具體而言,指的是實現了 ICommand 介面的對象。此介面要求實現者包含這些成員: 1、CanExecute 方法:確定該命令是否可以執行,若可,返回 true;若不可,返回 false; 2、CanExecuteChanged 事件:發送命令(命令源)的控制項可以訂閱此事件 ...
  • 概述 由於工作需要,需要通過數據類型和方法名控制方法走向 用到的數據類型有8種(string,Int16,Int32,Int64,Boolean,Byte,Single,Double) 讀取的方法(參數一致,但是數據不同的泛型方法,返回值也是泛型)暫時只有11種,但肯定的是,後續一定會增加 原本計劃 ...
  • 前言 預計在 2024 年 11 月,C# 13 將與 .NET 9 一起正式發佈。今年的 C# 更新主要集中在 ref struct 上進行了許多改進,並添加了許多有助於進一步提高生產力的便利功能。 本文將介紹預計將在 C# 13 中添加的功能。 註意:目前 C# 13 還未正式發佈,因此以下內容 ...
  • Windows應用開發有很多場景需要動態獲取控制項顯示的圖像,即控制項轉圖片,用於其它界面的顯示、傳輸圖片數據流、保存為本地圖片等用途。 下麵分別介紹下一些實現方式以及主要使用場景 RenderTargetBitmap 控制項轉圖片BitmapImage/BitmapSource,在WPF中可以使用Ren ...
  • 一晃距C# 9發佈已經4年了,對於record關鍵字想必大家都不陌生了,不過呢發現還是有很多同學不屑於使用這個語法糖,確實,本質上 record 就是 class 的封裝,能用 record 書寫的類,那100%都是可以自己手擼出來的,但是呢有沒有考慮 別人可能一分鐘寫好的代碼你可能會需要數分鐘才能 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...