.Net Web開發技術棧

有很多朋友有的因為興趣,有的因為生計而走向了.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)
      • 基于任務的異步模式(TAP)
      • ...

數據結構

  • 算法
  • 線性表
  • 二叉樹
  • 棧與隊列
  • ...

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
    • 鎖機制
      • 種類、粒度、加鎖方式
      • 悲觀鎖:開銷大,避免長事務
        • 表鎖、行鎖/讀鎖、寫鎖
      • 樂觀鎖:開銷小,讀大于寫
        • Version版本號機制
      • ...
  • 數據庫輔助工具: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)
    • 最少知識原則LKP(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:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe )編譯成EXE或者是DLL文件。
      • 2.被CSC編譯后的EXE/DLL文件叫做 IL文件。Intermediate Language (IL)中間語言,在.Net中,稱之為 Microsoft IL(MSIL)微軟中間語言(右鍵對項目進行生成的時候實際上就是這一步)
      • 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
    • Json Web Token
    • 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反編譯工具

?

轉載:https://www.cnblogs.com/1996V/p/7700087.html#!comments

轉載于:https://www.cnblogs.com/Zhengxue/p/11281405.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/391990.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391990.shtml
英文地址,請注明出處:http://en.pswp.cn/news/391990.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用Python和MetaTrader在5分鐘內開始構建您的交易策略

In one of my last posts, I showed how to create graphics using the Plotly library. To do this, we import data from MetaTrader in a ‘raw’ way without automation. Today, we will learn how to automate this process and plot a heatmap graph of the correlation…

卷積神經網絡 手勢識別_如何構建識別手語手勢的卷積神經網絡

卷積神經網絡 手勢識別by Vagdevi Kommineni通過瓦格德維科米尼(Vagdevi Kommineni) 如何構建識別手語手勢的卷積神經網絡 (How to build a convolutional neural network that recognizes sign language gestures) Sign language has been a major boon for people who are h…

spring—第一個spring程序

1.導入依賴 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.9.RELEASE</version></dependency>2.寫一個接口和實現 public interface dao {public void save(); }…

請對比html與css的異同,css2與css3的區別是什么?

css主要有三個版本&#xff0c;分別是css1、css2、css3。css2使用的比較多&#xff0c;因為css1的屬性比較少&#xff0c;而css3有一些老式瀏覽器并不支持&#xff0c;所以大家在開發的時候主要還是使用css2。CSS1提供有關字體、顏色、位置和文本屬性的基本信息&#xff0c;該版…

基礎 之 數組

shell中的數組 array (1 2 3) array ([1]ins1 [2]ins2 [3]ins3)array ($(命令)) # 三種定義數組&#xff0c;直接定義&#xff0c;鍵值對&#xff0c;直接用命令做數組的值。${array[*]}${array[]}${array[0]} # 輸出數組中的0位置的值&#xff0c;*和…

Linux_異常_08_本機無法訪問虛擬機web等工程

這是因為防火墻的原因&#xff0c;把響應端口開啟就行了。 # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m st…

Building a WAMP Dev Environment [3/4] - Installing and Configuring PHP

Moved to http://blog.tangcs.com/2008/10/27/wamp-installing-configuring-php/轉載于:https://www.cnblogs.com/WarrenTang/archive/2008/10/27/1320069.html

ipywidgets_未來價值和Ipywidgets

ipywidgetsHow to use Ipywidgets to visualize future value with different interest rates.如何使用Ipywidgets可視化不同利率下的未來價值。 There are some calculations that even being easy becoming better with a visualization of his terms. Moreover, the sooner…

2019 css 框架_宣布CSS 2019調查狀態

2019 css 框架by Sacha Greif由Sacha Greif 宣布#StateOfCSS 2019調查 (Announcing the #StateOfCSS 2019 Survey) 了解JavaScript狀況之后&#xff0c;幫助我們確定最新CSS趨勢 (After the State of JavaScript, help us identify the latest CSS trends) I’ve been using C…

計算機主機后面輻射大,電腦的背面輻射大嗎

眾所周知&#xff0c;電子產品的輻射都比較大&#xff0c;而電腦是非常常見的電子產品&#xff0c;它也存在著一定的輻射&#xff0c;那么電腦的背面輻射大嗎?下面就一起隨佰佰安全網小編來了解一下吧。有資料顯示&#xff0c;電腦后面的輻射比前面大&#xff0c;長期近距離在…

spring— Bean標簽scope配置和生命周期配置

scope配置 singleton 默認值&#xff0c;單例的prototype 多例的request WEB 項目中&#xff0c;Spring 創建一個 Bean的對象&#xff0c;將對象存入到 request 域中session WEB 項目中&#xff0c;Spring 創建一個 Bean 的對象&#xff0c;將對象存入session 域中global sess…

裝飾器3--裝飾器作用原理

多思考&#xff0c;多記憶&#xff01;&#xff01;&#xff01; 轉載于:https://www.cnblogs.com/momo8238/p/7217345.html

用folium模塊畫地理圖_使用Folium表示您的地理空間數據

用folium模塊畫地理圖As a part of the Data Science community, Geospatial data is one of the most crucial kinds of data to work with. The applications are as simple as ‘Where’s my food delivery order right now?’ and as complex as ‘What is the most optim…

Windows下安裝Python模塊時環境配置

“Win R”打開cmd終端&#xff0c;如果直接在里面使用pip命令的時候&#xff0c;要么出現“syntax invalid”&#xff0c;要么出現&#xff1a; pip is not recognized as an internal or external command, operable program or batch file. 此時需要將C:\Python27\Scripts添加…

播客2008

http://blog.tangcs.com/2008/12/29/year-2008/轉載于:https://www.cnblogs.com/WarrenTang/articles/1364465.html

linear在HTML的作用,CSS3里的linear-gradient()函數

linear-gradient() 函數用于創建一個線性漸變的 "圖像"。為了創建一個線性漸變&#xff0c;你需要設置一個起始點和一個方向(指定為一個角度)的漸變效果。你還要定義終止色。終止色就是你想讓Gecko去平滑的過渡&#xff0c;并且你必須指定至少兩種&#xff0c;當然也…

golang底層深入_帶有Golang的GraphQL:從基礎到高級的深入研究

golang底層深入by Ridham Tarpara由里德姆塔帕拉(Ridham Tarpara) 帶有Golang的GraphQL&#xff1a;從基礎到高級的深入研究 (GraphQL with Golang: A Deep Dive From Basics To Advanced) GraphQL has become a buzzword over the last few years after Facebook made it ope…

spring—Bean實例化三種方式

1&#xff09; 使用無參構造方法實例化 它會根據默認無參構造方法來創建類對象&#xff0c;如果bean中沒有默認無參構造函數&#xff0c;將會創建失敗 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.o…

bzoj 3439: Kpm的MC密碼

Description 背景 想Kpm當年為了防止別人隨便進入他的MC&#xff0c;給他的PC設了各種奇怪的密碼和驗證問題&#xff08;不要問我他是怎么設的。。。&#xff09;&#xff0c;于是乎&#xff0c;他現在理所當然地忘記了密碼&#xff0c;只能來解答那些神奇的身份驗證問題了。。…

python創建類統計屬性_輕松創建統計數據的Python包

python創建類統計屬性介紹 (Introduction) Sometimes you may need a distribution figure for your slide or class. Since you are not using data, you want a quick solution.有時&#xff0c;您的幻燈片或課程可能需要一個分配圖。 由于您不使用數據&#xff0c;因此需要快…