歡迎光臨
每天分享高質量文章

.NET Web開發技術棧

來源:小曾看世界

連結:https://www.cnblogs.com/1996V/p/7700087.html

有很多朋友有的因為興趣,有的因為生計而走向了.NET中,有很多朋友想學,但是又不知道怎麼學,學什麼,怎麼系統的學,為此我以我微薄之力總結歸納寫了一篇.NET web開發技術棧,以此幫助那些想學,卻不知從何起的朋友。

本文整理了當前企業web開發中的管理系統,商城等系統的常用開發技術棧。

C#常見運運算元


  • 一元運運算元(+、-、!、~、++、–)

  • 算術運運算元(*、/、%、+ 、 – )

  • 移位運運算元(<< 、>> )

  • 關係和型別測試運運算元(==、!=、、<=、>=、is 和 as)

  • 邏輯運運算元(&、^ 和 | )

  • 條件邏輯運運算元(&& 和 || )

  • 空合併運運算元(??)條件運運算元(它也稱為三元運運算元,?: )

  • 賦值運運算元(=、+=、-=、!=、/=、&=、|=)

C#常見陳述句塊


  • Try(用於捕捉在塊的執行期間發生的各種異常)

  • Checked 陳述句和 Unchecked(用於控制整型算術運算和轉換的上限溢位檢查背景關係)

  • Lock(獲取某個給定物件的互斥鎖,執行一個陳述句,然後釋放該鎖)

  • Using(獲取一個或多個資源,執行一個陳述句,然後釋放該資源)

C#常見類修飾符


  • abstract抽象類

  • sealed密封類

  • static靜態類

  • partial分部修飾

  • 訪問修飾符(public、protected、internal 和 private )


C#常用預處理指令


  • #region:指定一個可展開或摺疊的程式碼塊

  • #endregion:它標識著 #region 塊的結束

  • #define: 它用於定義一系列成為符號的字元

  • #undef:它用於取消定義符號

  • #if、#else、#elif、#endif:用於建立複合條件指令


委託


  • Delegate、Lambda、Action、Func、Predicate、事件EventArgs


泛型


  • 泛型類、泛型方法、泛型約束、泛型介面、逆變與協變


Linq


  • Linq to sql / Linq to DataSet / Linq to Object / Linq to Xml

  • 迭代器yield與懶載入Lazy


反射

  • 反射拼接SQL陳述句、反射轉換Json/Datatable…、序列化反序列化(ISerializable)、反射動態呼叫dll、反射動態配置擴充套件


常用類


  • IO類、Json.NET、Http輔助類(HttpClient、Restsharp、WebClient、WebRequest)、爬蟲類、檔案壓縮類、條形碼 、金額、時間、Assembly等類的實現


常用介面掌握


  • IEnumerable

  • IEnumerator

    實現Foreach

  • ICollection

  • IList

    集合

  • IComparable

  • IComparer

    實現比較方法

  • IDictionary

    鍵值對

  • IDisposable

    釋放非託管資源


資料層


原生的ADO.NET


  • Connections. 用於連線和管理針對資料庫的事務。

  • Commands. 用於發出針對資料庫的SQL指令。

  • DataReaders. 用於從SQL Server資料源讀取只進流的資料記錄。

  • DataSets. 用於針對結構型資料,XML資料和關係型資料的儲存,遠端處理和程式設計。

  • DataAdapters. 用於推送資料到DataSet,並針對資料庫協調資料。


ORM框架


  • EF

  • Dapper:最常見的輕量級ORM框架(開源)

  • Nhibernate:最常見的重量級ORM框架


非同步和多執行緒


Thread/ThreadPool/Task/Await/Async/Parallel…

多執行緒


  • 多執行緒中的同步、併發、異常等處理


TPL非同步


  • 非同步程式設計模型(APM)

  • 基於事件的非同步樣式(EAP)


資料結構


  • 演演算法

  • 線性表

  • 二叉樹

  • 棧與佇列


ASP.NET MVC框架


Routing路由

Binding模型系結


new ChildActionValueProviderFactory(),

new FormValueProviderFactory(),

new JsonValueProviderFactory(),

new RouteDataValueProviderFactory(),

new QueryStringValueProviderFactory(),

new HttpFileCollectionValueProviderFactory()


AOP面向切麵(常用特性(Attribute)及自定義特性)


元資料

驗證基類System.ComponentModel.DataAnnotations.ValidationAttribute

System.ComponentModel.DataAnnotations.CompareAttribute

System.ComponentModel.DataAnnotations.CustomValidationAttribute

System.ComponentModel.DataAnnotations.DataTypeAttribute

System.ComponentModel.DataAnnotations.MaxLengthAttribute

System.ComponentModel.DataAnnotations.MinLengthAttribute

System.ComponentModel.DataAnnotations.RangeAttribute

System.ComponentModel.DataAnnotations.RegularExpressionAttribute

System.ComponentModel.DataAnnotations.RequiredAttribute

System.ComponentModel.DataAnnotations.StringLengthAttribute

System.Web.Security.MembershipPasswordAttribute

.

Filter

IAuthenticationFilter(驗證過濾器 MVC5)驗證是否合理請求,是否合理使用者

IAuthorizationFilter(授權過濾器)

AuthorizeAttribute

RequireHttpsAttribute

ValidateAntiForgeryTokenAttribute

ChildActionOnlyAttribute

IActionFilter(動作過濾器-前-後)

ActionFilterAttribute

IResultFilter(結果過濾器-前-後)

ActionFilterAttribute

IExceptionFilter(例外過濾器)

HandleErrorAttribute(在FilterConfig就已被註冊)

RazorViewEngine檢視引擎

WebAPI


資料庫技術


資料庫服務端、客戶端、圖形介面管理工具、資料庫語言(PL-sql,T-sql,sql)、資料庫安全等概念

檢視、儲存過程、遊標、中間表、觸發器、計劃任務等常用技術

資料庫分庫、拆表、分散式、叢集、備份、故障調控等方案

資料庫三大正規化與反正規化

RBAC(Role-Based Access Control,基於角色的訪問控制)許可權模型

資料庫機制


索引


儲存引擎


事務


四大特性(ACID)


  • 原子性 Atomicity

  • 一致性 Consistency

  • 隔離性 Isolation

  • 持續性 Durability


併發產生的問題


  • 臟讀

  • 幻讀

  • 不可重覆讀


解決方案—隔離級別


  • 讀未提交Read uncommitted

  • 讀已提交Read committed (mssql、oracle)

  • 可重覆讀Repeatable read(mysql)

  • 序列化Serializable


鎖機制


  • 種類

  • 粒度

  • 加鎖方式

資料庫輔助工具:Power Designer、EZDML、ER Studio、Rose、Microsoft Visio…

關係型資料庫


  • Oracle

    最貴,功能最多,不開源,最安全…

  • Mysql

    免費,功能一般,開源,相對不安全…

  • MsSql(SqlServer)

    中等貴,支援平臺最少,不開源,使用最方便…

  • PostgreSQL

    與其他關係型資料庫相比,PostgreSQL獨特的地方是它支援高度需要的、完整的面向物件以及關係型資料庫的功能

  • Sqlite

    一個自包含的、基於檔案的資料庫,可移植性非常好


非關係型資料庫(Nosql-Not Only Sql)

  • MongoDb:是一個基於分散式檔案儲存的資料庫

  • Hbase:屬於hadoop(分散式系統)生態圈的元件,能儲存海量資料

  • Cassandra:優異的列式儲存NoSQL

  • Redis:基於記憶體的資料儲存系統,支援多種型別儲存,適用於高併發場合

  • Memcache:基於記憶體的資料儲存系統,高效能分散式記憶體快取服務,適用於高併發場合


面向服務架構SOA


透過服務整合來解決系統整合的一種思想

.

WSDL


  • Web Services Description Language是一個用來描述Web服務和說明如何與Web服務通訊的XML語言。為使用者提供詳細的介面說明書


UDDI


  • Universal Description,Discovery and Integration統一描述、發現和整合, 提供一種釋出和查詢服務描述的方法。UDDI 資料物體提供對定義業務和服務資訊的支援。

SOAP


Simple Object AccessProtocol,簡單物件訪問協議,基於XML 和 HTTP 用於在應用程式之間進行通訊的一種通訊協議

  • Web Services:基於SOAP協議,資料格式是XML

  • Wcf/Wcf Rest:可以不依賴於IIS,基於SOAP,支援多種通訊協議,但配置繁瑣

測試工具:SoapUI…

REST


REpresentational State Transfer ,表現層狀態轉移,是一種架構風格,提供了設計概念原則和約束。

RESTful

滿足這些原則和條件的就稱RESTful架構

  • Web API:RESTful的實現,一個用於構建HTTP服務的框架

  • 測試工具:Fiddler、Postman、Jmeter…


微服務


  • 是SOA的一種實現,更側重於元件化和服務化

JSON-RPC


  • Remote Procedure Call Protocol,遠端過程呼叫協議,高效能二進位制協議,比RESTful要高效(類似於Web Services的使用風格)


面向物件OOP

三大基本特性


  • 繼承,封裝,多型

  • 抽象類abstract和介面interface的各種用法及實現

  • Virtual、abstract、override、New、extern等關鍵字的含義及用法

  • 設計樣式的應用


六大基本原則(高內聚,低耦合)


  • 單一職責原則SRP(Single Responsibility Principle)

  • 開放封閉原則OCP(Open-Close Principle)

  • 裡式替換原則LSP(the Liskov Substitution Principle)

  • 依賴倒置原則DIP(the Dependency Inversion Principle)

  • 介面分離原則ISP(the Interface Segregation Principle)

  • 最少知識原則(Least Knowledge Principle)(也稱:迪米特原則)


23種設計樣式


  • 建立型

  • 結構型

  • 行為型


儲存


  • 瀏覽器自身快取技術(cache control,與伺服器約定,js /css等快取)

  • Session(SessionId)(會話,為了彌補http協議的無狀態特性)

  • Cookie(瀏覽器儲存,為了彌補http協議的無狀態特性)

  • Localstorage(Html5新特性 瀏覽器本地儲存,為了彌補Cookie儲存不足)

  • Application(伺服器全域性變數)

  • Static(依賴於IIS,行程回收會丟失)

  • Cache(伺服器快取)


軟體架構


MVC

  • ASP.NET MVC

MVP


事件模型


ASP.NET Web form


  • System.UI.Page

  • ViewState


Winform

MVVM

在.Net中(主要應用於WPF、Silverlight、WP7)


  • Prism – Brian Lagunas微軟產品經理,微軟MVP,一個跨平臺的桌面和移動MVVM開發框架,開源。

  • Catel – Catel是一個專註於MVVM(WPF,Silverlight,Windows Phone和WinRT)和MVC(ASP.NET MVC)的應用程式開發平臺。 Catel的核心包含一個IoC容器,模型,驗證,紀念,訊息中介,引數檢查等。

在前端中

  • Angular

  • Vue

  • Knockout

  • React


平臺


MONO


.Net Core


  • CoreCLR

  • CoreRT for .NET Core

  • .NET Core Base Class Library


.Net Framework


.NET Framework Base Class Library(BCL基類庫)

  • System.Web(ASP.NET的核心)

ASP.NET與IIS管道模型:

經典樣式IIS5/IIS6:


  • IIS管道模型

  • ASP.NET管道模型


整合樣式IIS7:


  • HttpContext


IIs的常用功能及使用及配置:


  • 請求篩選、失敗請求跟蹤等

.NET MVC生命週期

Httphandler、HttpModule、Globar的編寫及應用…


OWIN解耦


Open Web Server Interface for .NET,定義了一種中介軟體在管道中用於處理請求和相關響應的標準方式,是種規範,用於解耦Web 伺服器和Web 應用程式。

OWIN的實現:Katana(由微軟早期開發的開源OWIN元件集合)

OWIN Layer(定義的一系列層)

Application(應用程式)


Middleware(中介軟體)


  • Nanacy.Owin

  • WebApi

  • Signalr

  • FubuMVC

  • Simple.Web

  • DuoVia.Http


Server(服務)


  • Microsoft.Owin.Host.SystemWeb

  • Microsoft.Owin.Host.HttpListener

  • Helios

  • (Asp.Net5以後就是Microsoft.AspNet名稱空間)


Host(宿主)


  • IIS

  • Custom Host

  • OwinHost.exe

  • Node.Js(connect-owin)


.NET CLR(Commen Language Runtime)公用語言執行時


核心:公共語言基礎(Common Language Infrastructure,CLI),提供了定義的規範介面、與工具

  1. 專案原始碼被 .Net Framework編譯器( csc , C:WindowsMicrosoft.NETFramework4.0.30319csc.exe )編譯成EXE或者是DLL檔案。

  2. 2.被CSC編譯後的EXE/DLL檔案叫做 IL檔案。Intermediate Language (IL)中間語言,在.Net中,稱之為 Microsoft IL(MSIL)微軟中間語言(右鍵對專案進行生成的時候實際上就是這一步)

  3. 3.CLR會將MSIL透過JIT(Just In Time)編譯器進行第二次編譯,將其編譯成本地平臺的CPU指令。(如果擁有能在Linux執行的CLR,程式碼就能跨平臺執行)

C#原始碼——(CSC編譯器)——MSIL檔案(dll/exe)——(CLR中的JIT編譯器)——CPU執行


Http協議


OSI網路通訊


物理層


以二進位制資料形式在物理媒體上傳輸資料


資料鏈路層

傳輸有地址的幀,錯誤檢測功能


網路層

為資料包選擇路由

IP,ICMP,RIP…


傳輸層

提供端對端的介面

TCP、UDP…


會話層

建立或解除與其它接點的聯絡


表示層

資料格式化,程式碼轉換,資料加密


應用層

HTTP,FTP,SMTP…


Http狀態碼


  • 1xx:資訊提示,表示請求已被成功接受,繼續處理,請求範圍100~101

  • 2xx:成功,伺服器成功響應請求,請求範圍200~206

  • 3xx:重定向,請求範圍300~305

  • 4xx:傳送一些伺服器無法受理的東西

  • 5xx:一條有效請求,但伺服器掛了

常用HTTP訊息頭(Http Header)


Request請求頭

Authorization:Basic base64646464646464=== (驗證)

Accept-Encoding:gzip (指定瀏覽器可以支援的web伺服器傳回內容壓縮編碼型別)

Cache-Control:max-age=60(指定請求和響應遵循的快取機制,max-age為 當前60秒內再次訪問不會去伺服器請求)

Cookie:ZJF(該請求域名下的所有cookie值一起傳送給web伺服器)

Content-Type:application/x-www-form-urlencoded(是以什麼格式來傳輸,請求的與物體對應的MIME資訊)

Accept:text/plain(指定客戶端能夠接收的內容型別)

Range:bytes=0-999(常用作斷點續傳,設定請求的指定範圍,伺服器則傳回Content-Range: bytes 0-999)

Referer: (當前請求來源的網頁地址)

Origin: (和Referer差不多,只存在於POST請求)

Host:: (指定請求的伺服器的域名和埠號)

User-Agent::Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36(當前客戶端的資訊)

Expect:100-continue(握手失敗,請求頭域型別不匹配,由此導致的API介面呼叫失敗)


Response傳回頭


  • Connection: keep-alive(連線方式,很重要)

  • Access-Control-Allow-Origin: *(跨域,很重要)

  • Set-Cookie: UserID=admin; Max-Age=3600; Version=1

  • Content-Encoding:gzip


實時通訊方案


  • .Net Signalr+

  • Ajax輪詢

  • Comet

  • WebSocket(SuperWebSocket,WebSocket伺服器)

  • SSE(Server-sent Events伺服器傳送事件)


域名解析


DNS解析流程

常見 域名解析記錄

  • A記錄:用來指定域名或子域名對應的IP地址記錄,保證域名指向對應的主機

  • CNAME記錄:別名記錄,該記錄允許你為自己的主機設定別名

  • MX記錄:郵件路由記錄,當傳送郵件時,Mail 伺服器先對域名進行解析,查詢mx記錄

  • TXT記錄:是域名系統(DNS)中由域名託管服務商儲存的一種資源記錄,其作用是防止垃圾郵件濫用行為

  • AAAA記錄:指定網站域名對應的IPv6地址記錄

  • NS記錄:Name Server,用於指定域名是由那個DNS伺服器來進行域名解析


網站最佳化


JavaScript和Css模組化

CSS Sprites:將一個頁面涉及到的所有零星圖片都包含到一張大圖中去,這樣一來,將N次請求變成一次請求

劃分資源域

合理運用快取技術

  • 靜態檔案(圖片、css、js、html )快取: cdn技術、squid快取伺服器、瀏覽器(客戶端)快取

  • HTML5 application cahce API離線快取

  • 應用層快取:Cache、Redis快取資料庫、memcache快取資料庫

  • 資料庫快取:資料庫本身的快取機制

瞭解瀏覽器工作機制:Css放頂部,Js放底部,壓縮Html,能配置Expires/Cathe-Control,ETag,使用 gzip 壓縮

用ISP(網際網路服務提供商)提供的檔案儲存等技術

提高DNS域名解析速度

掌握SEO

  • 確保網站是可以被索引的: robots.txt,Robtots 標簽

  • 確保網頁是可以被索引的:確保爬蟲可以看到所有的內容、使用描述性的錨文字的網頁

  • 擅長標簽編寫:帶有 H1 標簽、關鍵詞放 URL 中、加粗文字、Descripiton 標簽、圖片檔案名、ALT 屬性帶有關鍵詞

刪除不必要的HTTP響應頭

  • 移除X-AspNet-Version HTTP頭

  • 移除X-AspNetMvc-Version HTTP頭

  • 移除X-Powered-By HTTP頭

  • 移除Server HTTP頭

使用者資料分析

PV IP UV

訪問流量來源

  • 瀏覽器

  • 移動裝置

..

預設隱藏段(拒絕客戶端訪問)


App_Browsers:包含瀏覽器定義(.browser檔案),ASP.NET會使用這些檔案來識別個別瀏覽器並判斷它們的功能

App_Code:包含用於公用程式和商務物件(Business Object) , (例如, .cs ; .vb和.jsl檔案)的程式原始碼,要將它編譯為應用程式的一部分

App_Data:包含應用程式資料檔案.包括MDF檔案,XML檔案與其他資料庫檔案

App_GlobalResources:包含資源(.resx和.resources檔案),這些資源會編譯成具有全域性範圍的元件

App_LocalResources:包含資源(.resx和.resources檔案),這些資源會與特定的頁面,擁護控制元件或應用程式的主頁面(MasterPage)相關聯

App_WebReferences:包含參考合約檔案(.wsdl檔案),結構描述(.xsd檔案)和探索檔案(.disco和.discomap檔案),可定義Web應用以用語應用程式

Bin:包含空間,元件或你要在應用程式中應用其他程式程式碼的已編譯元件(.dll檔案).在[Bin]檔案夾中以程式程式碼表示的任何類, 都會自動在應用程式中應用到

Web.config:用來儲存Asp.net Web應用程式的配置資訊,透過繼承關係,每個

Web.config將配置設定應用到它所在的目錄及虛擬子目錄下


特殊目錄


Bin:是二進位制binary的英文縮寫,用來存放編譯的結果

  • Debug 除錯版本 開發環境 有除錯資訊

  • Release 發行版本 程式碼更小,執行更快,編譯更嚴格,更慢 沒有除錯資訊

Obj:是object的縮寫,用於存放編譯過程中生成的中間臨時檔案,用來加快編譯速度

  • Debug

  • Release

需要掌握的前端知識


Html5+Css3

JQuery外掛語法

Js實現封裝-繼承-多型

實現一個簡單的MVVM框架

實現一個簡單的js模板引擎

Angular

  • 路由、模組化、控制器、指令、作用域、模板、鏈式函式、過濾器、服務、依賴註入…

React

  • 虛擬DOM,元件化…

資訊加密技術:


單向雜湊加密(雜湊函式、Hash函式)


  • 把任意長的輸入訊息串變化成固定長的輸出串且由輸出串難以得到輸入串的一種函式,用於產生訊息摘要,金鑰加密

  • MD5,SHA,MAC,CRC…


對稱加密


  • 使用的金鑰(yue)只有一個,發收信雙方都使用這個金鑰對資料進行加密和解密

  • DES,3DES,AES,TDEA,Blowfish,RC5,IDEA…


非對稱加密(公私鑰加密)


  • 指加密和解密使用不同金鑰的加密演演算法,分公鑰和私鑰

  • RSA,Elgamal,揹包演演算法,Rabin,D-H,ECC…


SSL


Secure Socket Layer,安全套接字層,保護Web通訊,以實現客戶端和伺服器之間的安全通訊

HTTPS:是在HTTP上建立SSL加密層,並對傳輸資料進行加密,是HTTP協議的安全版

Let’s Encrypt,國外一個公共的免費SSL

StartSSL,被各大瀏覽器所支援,但只免費一年


TLS


Transport Layer Security,安全傳輸層協議,用於在兩個通訊應用程式之間提供保密性和資料完整性,建立在SSL 3.0協議規範之上,是SSL 3.0的後續版本

Web安全


滲透註入


  • Sql註入、命令運算式註入、SSRF註入、XSS註入、CSRF註入、XXE註入…


滲透註入檢測工具


  • DirBuster目錄滲透工具,專門用於探測Web伺服器的目錄和隱藏檔案

  • Nmap網路連線端軟體,網路連線端掃描軟體,用來掃描網上電腦開放的網路連線端

  • Pangolin Sql註入工具

  • AppScan業界領先的web應用安全監測工具(軟體介面可以選擇中文,不過是收費的)

欺騙

ClickJacking(點選劫持)

透明iframe


  • HTTP頭——X-Frame-Options


圖片掩蓋介面

暴力破解

DDOS

檔案安全

  • 配置檔案、備份檔案暴露讀取、未授權修改、未授權上傳

邏輯安全

  • 未授權訪問、上下流程順序可亂序、無限遞迴

二進位制安全

  • (VS中有效能分析工具)

  • 堆疊上限溢位(很多人都碰過)、快取區上限溢位、記憶體洩漏


Web認證


第三方認證

Oauth2.0

SSO單點登入

  • 同源策略

  • CAS解決方案


IIs/.Net認證


  • Basic

  • Digest Authentication

  • Windows

  • Forms


解決方案


程式碼管理


  • Git:免費、開源的分散式版本控制系統,用的人最多

  • Svn:集中式的版本控制系統,一個強大的備份伺服器

  • TFS:微軟原始碼管理工具


自動化測試


UI測試

VS自帶的UI測試工具


單元測試(Unit Testing)

Tdd測試驅動開發(Test-Driven Development)

VS自帶的單元測試工具,Xunit,Nunit,Moq,Faker.Net


效能分析


VS自帶的效能分析工具,MiniProfiler

壓力測試


概念

  • 吞吐率(Throughput)

  • QPS每秒查詢率(Query Per Second)

  • TPS每秒事務數(Transaction Per Second),併發使用者數

VS自帶的壓力測試工具,HttpTest4Net,Jmeter…

安全檢測

自動化部署

  • VS的Web Deploy,Jenkins…

監控平臺

自動化故障調控


分散式


負載均衡

 什麼時候才會負載均衡(什麼是負載均衡)

負載均衡的幾種實現

  • OSI層面,在網路7層協議基礎上實現的負載均衡

  • 軟體層面

負載均衡演演算法


  • 權重輪循均衡

  • 權重隨機均衡

  • 響應速度均衡

  • 最少連線數均衡

  • 處理能力均衡

  • DNS響應均衡

叢集


  • 負載均衡伺服器

  • 應用服務伺服器

  • 檔案系統伺服器

  • 資料庫伺服器

  • 快取伺服器


分離樣式


  • 前後端分離

  • 動靜分離

  • 資料庫讀寫分離

  • 服務分離

  • 業務分離

故障可彈性

服務一致性

中心化配置


C#指令碼引擎


  • CS-Script:可做原始碼式外掛開發,規則引擎,流程引擎…


外掛開發


  • Mvc Area外掛開發

  • OSGi.NET


訊息佇列


訊息佇列 – Message Queue(MQ),是一種應用程式之間的通訊機制,將部分無需立即回呼獲取結果,並且耗時的操作,使用非同步處理的方式提高伺服器的吞吐量及效能.如秒殺活動,上傳任務,日誌記錄等

MSMQ


  • 微軟官方推出的訊息佇列框架


RibbitMq


  • 基於 AMQP 系統協議,由 Erlang 語言開發,開源的訊息佇列,支援AMQP,XMPP, SMTP, STOMP等協議,使用簡單


ZeroMQ


  • 一個輕量級的訊息通訊元件,側重於點對點的訊息傳輸上


Redis


  • 雖是一個Key-Value的NoSQL資料庫,但本身也有Queue佇列功能


依賴倒置框架


基於面向物件6大原則之 – 依賴倒置原則DIP – 工廠樣式實現

IOC – inversion of control 控制反轉,呼叫者不再建立被呼叫者的實體,由框架(容器)建立

  • DL – Dependency Lookup 依賴查詢,容器提供回呼介面和背景關係環境給元件

  • DI – Dependency Injection 依賴註入,容器建立好實體後再註入呼叫者

Autofac

  • 最為流行的IOC框架之一,輕量且高效能


Unity


  • 最為流行的IOC框架之一,微軟出品


Spring.NET

  • 以Java版的Spring框架為基礎,提供了多種功能


Ninject


  • 一個輕量級的註入框架


任務排程

Quartz


  • 開源的作業排程框架,是Quartz的C#移植版本


日誌記錄


Log4net


  • 從java平臺下移植過來的非常優秀的日誌記錄框架


Nlog


  • 相對於Log4net,配置更為簡單

Microsoft.Framework.Logging


  • ASP.NET5中的日誌框架集


搜尋引擎


Lucene.net


  • 是Lucene的.net移植版本,它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構


ElasticSearch


  • 是基於Lucene架構面向企業搜尋應用的擴充套件,提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面


盤古分詞


  • 中文分片語件,作者肖波

HubbleDotNet


  • 開源資料庫全文搜尋引擎,作者肖波


工作流引擎(Workflow – WF)

Business Process Management – BPM 業務流程管理

Windows Workflow Foundation – WWF

  • 微軟的工作流產品,提供一套工作流引擎和VS解決方案自帶的流程設計器


NetBPM


  • 從JBpm1移植到.NET平臺下的開源工作流專案


CCFlow


  • 國產開源工作流


.NET常用工具及外掛


  • Colorful-IDE:可以更換VS的桌布

  • ReAttach:可以快速附加到行程(開源)

  • C# Outline:VS程式碼塊摺疊外掛

  • Reshaper:即時分析程式碼質量,消除錯誤,安全地更改程式碼庫等

  • OzCode:VS除錯時候的輔助外掛

  • LINQ Pad:用來測試Linq查詢的外掛

  • Rextester:線上測試C#程式碼

  • SmartAssembly:.Net加密混淆工具

  • ConfuserEx:.Net加密混淆工具

  • ILSpy:.Net反編譯工具

  • Reflector :.Net反編譯工具

 

總結歸納不易,如果有疑問或異解請留言給我

後面我會寫一些文章來讓大家系統的學習web開發,而這篇技術棧我也會不斷更新。


●編號144,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

Web開發

更多推薦18個技術類公眾微信

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂