直接拿來用更哄,Tdf.NET使用的開源組件

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)點:

  1. 高性能泵琳,達到原生最高水準摄职,比SqlHelper性能要高,比Dapper快30% 比EF快50% 获列;
  2. 支持多種數據庫 谷市,sql版本更新最快,其它會定期更新击孩,可以在多種數據庫用一種編程方式迫悠;
  3. 支持.net Core;
  4. 支持多庫并行計算巩梢;
  5. 帶有實體生成函數和T4模版生成實體创泄;
  6. 無需任何配置 ,還你一個干凈的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)控涮较。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冈止,隨后出現的幾起案子狂票,更是在濱河造成了極大的恐慌,老刑警劉巖靶瘸,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苫亦,死亡現場離奇詭異,居然都是意外死亡怨咪,警方通過查閱死者的電腦和手機屋剑,發(fā)現死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诗眨,“玉大人唉匾,你說我怎么就攤上這事〗吵” “怎么了巍膘?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芋簿。 經常有香客問我峡懈,道長,這世上最難降的妖魔是什么与斤? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任肪康,我火速辦了婚禮荚恶,結果婚禮上,老公的妹妹穿的比我還像新娘磷支。我一直安慰自己谒撼,他們只是感情好,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布雾狈。 她就那樣靜靜地躺著廓潜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪善榛。 梳的紋絲不亂的頭發(fā)上辩蛋,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機與錄音移盆,去河邊找鬼堪澎。 笑死,一個胖子當著我的面吹牛味滞,可吹牛的內容都是我干的。 我是一名探鬼主播钮呀,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼剑鞍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了爽醋?” 一聲冷哼從身側響起蚁署,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚂四,沒想到半個月后光戈,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡遂赠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年久妆,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跷睦。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡筷弦,死狀恐怖,靈堂內的尸體忽然破棺而出抑诸,到底是詐尸還是另有隱情烂琴,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布蜕乡,位于F島的核電站奸绷,受9級特大地震影響,放射性物質發(fā)生泄漏层玲。R本人自食惡果不足惜号醉,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一反症、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扣癣,春花似錦惰帽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至士嚎,卻和暖如春呜魄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莱衩。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工爵嗅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笨蚁。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓睹晒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親括细。 傳聞我的和親對象是個殘疾皇子伪很,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內容