IOC容器
- Unity 微軟企業(yè)庫的基礎,功能簡單,擴展方便,微軟官方提供一個EventBus的擴展例子,值得一看
<package id="Unity" version="4.0.1" targetFramework="net452" />
<package id="Unity.WebAPI" version="5.2.3" targetFramework="net452" />
所以Unity.WebApi是需要Unity4.0.1支持的。
安裝Unity.WebApi會自動安裝很多依賴項:Unity (≥ 4.0.1),CommonServiceLocator申眼,Microsoft.AspNet.WebApi.Core涣狗,Microsoft.AspNet.WebApi.Client ,Newtonsoft.Json
網絡不好會很漫長更啄,需要難心等待稚疹。或者到nuget官方下載離線的祭务。
IoC的中繼器:CommonServiceLocator
.NET 服務器定位模式(Service Locator Pattern)——Common Service Locator
Common Service Locator 代碼很簡單内狗,它一般不會單獨使用怪嫌,而是作為一個單件模式,與像 .net Unity 這樣的依賴注入框架一起使用柳沙。Common Service Locator 是 Unity 的一部分岩灭。
ORM框架
Tdf.Dapper Tdf.Dapper是一個開源庫,他在Dapper的基礎上封裝了基本的CRUD操作赂鲤,分頁查詢噪径,使得一些簡單的數據庫操作可以不用自己寫sql語句。使用起來更方便数初。
詳見:輕量級ORM框架—Dapper
https://www.nuget.org/packages/Tdf.Dapper/EntityFramework 微軟官方出的ORM,配置簡單,比NH更好的Linq支持,工具支持和較低的學習門檻,命名約定配置,支持CodeFirst DbMigration(在開發(fā)時,不能用在生產環(huán)境中),缺點就是不支持批量操作(第三方庫EntityFramework.Extension擴展了 這一點,還做了緩存),無原生的二級緩存,,單調的ID生成方式,不支持多數據庫(很多數據庫如MySql都對EF提供了支持,但是bug多多,有穩(wěn)定的 商業(yè)庫可以選擇),還有單一的配置方式(當你想從程序集動態(tài)加載model到DbContext中時,你就會知道就多捉雞)
<package id="EntityFramework" version="6.1.3" targetFramework="net452" />
- EntityFramework DynamicFilters EntityFramework DynamicFilters是一個開源項目找爱。你可以到這里去下載它的源碼。顧名思義泡孩,它為我們做的事车摄,就是幫我們動態(tài)過濾數據。
<package id="EntityFramework.DynamicFilters" version="2.4.0" targetFramework="net452" />
- System.Linq.Dynamic 項目中經常用到組合條件查詢珍德,根據用戶配置的查詢條件進行搜索练般,拼接SQL容易造成SQL注入,普通的LINQ可以用表達式樹來完成锈候,但也比較麻煩薄料。有個System.Linq.Dynamic用起來比較方便。
<package id="System.Linq.Dynamic" version="1.0.7" targetFramework="net452" />
- oracleSugar
優(yōu)點:
- 高性能泵琳,達到原生最高水準摄职,比SqlHelper性能要高,比Dapper快30% 比EF快50% 获列;
- 支持多種數據庫 谷市,sql版本更新最快,其它會定期更新击孩,可以在多種數據庫用一種編程方式迫悠;
- 支持.net Core;
- 支持多庫并行計算巩梢;
- 帶有實體生成函數和T4模版生成實體创泄;
- 無需任何配置 ,還你一個干凈的model括蝠。
<package id="Oracle.ManagedDataAccess" version="12.2.1100" targetFramework="net452" />
<package id="oracleSugar" version="3.5.2.7" targetFramework="net452" />
日志
-
Log4net 傳統(tǒng)的日志框架,移植于log4jV1.2,高效,穩(wěn)定鞠抑,日志框架如何選擇如果你使用了微軟企業(yè)庫,就用企業(yè)庫自帶的,如果你引入的程序集中有的使用了Log4net,那就最好使用Log4net,如果都沒有,看個人喜好。
log4net庫是Apache log4j框架在Microsoft .NET平臺的實現忌警,是一個幫助程序員將日志信息輸出到各種目標(控制臺搁拙、文件、數據庫等)的工具。
<package id="log4net" version="2.0.5" targetFramework="net452" />
基礎類庫
- AutoMapper 對象映射,常用來做DTO/ViewModel和Model之間的映射,功能豐富遠超你想象
<package id="AutoMapper" version="5.1.1" targetFramework="net452" />
- DotNetZip 創(chuàng)建,壓縮,解壓Zip文件
<package id="DotNetZip" version="1.10.1" targetFramework="net452" />
-
Json.net Json序列化和反序列化,基本支持所有的json特性,性能也很好,MVC4的默認引用程序集中已包含.(支持4.0的動態(tài)對象,這個很好用)
Json.Net是一個讀寫Json效率比較高的.Net框架.Json.Net 使得在.Net環(huán)境下使用Json更加簡單箕速。通過Linq To JSON可以快速的讀寫Json酪碘,通過JsonSerializer可以序列化你的.Net對象。讓你輕松實現.Net中所有類型(對象,基本數據類型等)和Json的轉換弧满。
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
綜合類
- 微軟企業(yè)庫 微軟官方出品,是為了協(xié)助開發(fā)商解決企業(yè)級應用開發(fā)過程中所面臨的一系列共性的問題, 如安全(Security)婆跑、日志(Logging)、數據訪問(Data Access)庭呜、配置管理(Configuration Manage)等,并將這些廣泛使用的應用程序塊集成封裝至一個叫企業(yè)庫的程序包中
<package id="EnterpriseLibrary.Common" version="6.0.1304.0" targetFramework="net452" />
<package id="EnterpriseLibrary.Validation" version="6.0.1304.0" targetFramework="net452" />
OWIN
- OWIN(Open Web Interface for .Net),這是一個由開源社區(qū)發(fā)起的開放規(guī)則,這個規(guī)則定義了一個服務器(IIS)和Web應用程序(MVC,Webform)通信的標準接口,并且通過抽象層使得這兩個在微軟平臺結合緊密的玩意彼此獨立(解耦).
很明顯了,OWIN說白了 其實就是定義了一個包含標準化的詞典值的上下文(比如:HttpContext,不知道恰不恰當),服務器把這個上下文發(fā)送給應用程序,應用程序也采用相同的方式將結果返回給主機的進程.
Katana犀忱,上面我們說了,OWIN是一組規(guī)范,并沒有具體的實現,那么這個katana就是微軟對OWIN規(guī)則的一組實現了.
他包含了兼容ASP.NET的Microsoft.Owin.Host.SystemWeb還有自托管的環(huán)境(控制臺,服務)的Microsoft.Owin.Host.HttpListenter 監(jiān)聽
還有很多的中間件模塊主要有: - Microsoft.AspNet.WebApi.Owin
- Microsoft.Owin.Security.(安全模塊)**
- Microsoft.Owin.Cors(跨源資源共享模塊)
- Microsoft.Owin.Host.SystemWeb
- Microsoft.Owin.Compression(壓縮模塊)
- Microsoft.Owin.StaiticFiles(靜態(tài)文件訪問模塊)
當然 - -,剩下的..各位就自行去了解吧..
而且katana還在逐漸的增強當中....
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net452" /> <package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.OAuth" version="3.0.1" targetFramework="net452" />
<package id="Owin" version="1.0" targetFramework="net452" />
緩存
Tdf.RedisCache
用到了PooledRedisClientManager連接池來獲取RedisClient募谎,同時用到了讀寫分離的概念,可以直接拿來使用阴汇。
https://www.nuget.org/packages/Tdf.RedisCache/Tdf.Memcached
基于Memcached.ClientLibrary封裝使用Memchached信息数冬,讀取緩存存放在服務器
https://www.nuget.org/packages/Tdf.Memcached/
詳見:分布式緩存系統(tǒng)Memcached實踐Tdf.BaseCache
封裝.NET數據緩存框架,System.Runtime.Caching搀庶、System.Web.Caching拐纱,System.Runtime.Caching,這是在.NET 4.0中新增的緩存框架哥倔,存在于程序集System.Runtime.Caching.dll秸架。它是一個可擴展的數據緩存框架,內置提供了內存緩存的實現MemoryCache咆蒿。HttpRuntime.Cache 獲取當前應用程序的Cache东抹,通俗來說就是此緩存信息雖然被放在了System.Web命名空間下,但是非Web程序也可以使用此緩存沃测。
https://www.nuget.org/packages/Tdf.BaseCache/
調用示例:
using System;
using Tdf.BaseCache;
namespace Tdf.MemcachedTest
{
public class Claim
{
public int UserId { get; set; }
public string UserName { get; set; }
}
class Program
{
static void Main(string[] args)
{
// 自定義對象存儲
var claim = new Claim();
claim.UserId = 694802856;
claim.UserName = "難念的經";
new RuntimeCaching().Set("Claim", claim, 30);
var newMyObj = new RuntimeCaching().Get<Claim>("Claim");
//new WebCaching().Set("Claim", claim, 30);
//var newMyObj = new WebCaching().Get<Claim>("Claim") as Claim;
Console.WriteLine("Hello,My UserId is {0} and UserName is {1}", newMyObj.UserId, newMyObj.UserName);
Console.Read();
}
}
}
其他
Quartz.Net
它是一個強大的任務調度器缭黔,它提供的觸發(fā)器以及Cron表達式能夠很好的滿足我們在日常開發(fā)中遇到的定時服務的工作處理。想必大家在工作中經常會遇到這樣類似的需求蒂破,在某個時間或者需要不間斷的執(zhí)行某個業(yè)務動作去滿足任務需求馏谨。例如,我們寫了一個job附迷,定時去處理一些任務惧互。RabbitMQ
RabbitMQ是一個消息代理。它的核心原理非常簡單:接收和發(fā)送消息挟秤。你可以把它想像成一個郵局:你把信件放入郵箱壹哺,郵遞員就會把信件投遞到你的收件人處。在這個比喻中艘刚,RabbitMQ是一個郵箱管宵、郵局、郵遞員。RabbitMQ和郵局的主要區(qū)別是箩朴,它處理的不是紙岗喉,而是接收、存儲和發(fā)送二進制的數據——消息炸庞。Topshelf
Topshelf是.NET平臺的Windows服務框架钱床。Topshelf可以輕松創(chuàng)建Windows服務,測試服務埠居,調試服務查牌,并最終將其安裝到Windows服務控制管理器(SCM)中。Topshelf通過允許開發(fā)人員專注于服務邏輯滥壕,而不是與.NET框架中的內置服務支持交互的細節(jié)纸颜。開發(fā)人員不需要了解服務類的復雜細節(jié),通過InstallUtil執(zhí)行安裝绎橘,或者了解如何將調試器附加到服務以進行故障排除問題胁孙。Hangfire
Hangfire是一個開源的.NET任務調度框架,目前1.6+版本已支持.NET Core称鳞。個人認為它最大特點在于內置提供集成化的控制臺,方便后臺查看及監(jiān)控涮较。