直接拿来用,Tdf.NET使用的开源组件

IOC容器

  • Unity 微软企业库的基础,功能简单,扩展方便,微软官方提供一个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(在开发时,不能用在生产环境中),缺点就是不支持批量操作(第三方库EntityFramework.Extension扩展了 这一点,还做了缓存),无原生的二级缓存,,单调的ID生成方式,不支持多数据库(很多数据库如MySql都对EF提供了支持,但是bug多多,有稳定的 商业库可以选择),还有单一的配置方式(当你想从程序集动态加载model到DbContext中时,你就会知道就多捉鸡)

<package id="EntityFramework" version="6.1.3" targetFramework="net452" />
  • EntityFramework DynamicFilters EntityFramework DynamicFilters是一个开源项目。你可以到这里去下载它的源码。顾名思义,它为我们做的事,就是帮我们动态过滤数据。
<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

优点:

  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 传统的日志框架,移植于log4jV1.2,高效,稳定,日志框架如何选择如果你使用了微软企业库,就用企业库自带的,如果你引入的程序集中有的使用了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" />
<package id="DotNetZip" version="1.10.1" targetFramework="net452" />
  • Json.net Json序列化和反序列化,基本支持所有的json特性,性能也很好,MVC4的默认引用程序集中已包含.(支持4.0的动态对象,这个很好用)
    Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json的转换。
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />

综合类

  • 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security)、日志(Logging)、数据访问(Data Access)、配置管理(Configuration Manage)等,并将这些广泛使用的应用程序块集成封装至一个叫企业库的程序包中
<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),这是一个由开源社区发起的开放规则,这个规则定义了一个服务器(IIS)和Web应用程序(MVC,Webform)通信的标准接口,并且通过抽象层使得这两个在微软平台结合紧密的玩意彼此独立(解耦).
    很明显了,OWIN说白了 其实就是定义了一个包含标准化的词典值的上下文(比如:HttpContext,不知道恰不恰当),服务器把这个上下文发送给应用程序,应用程序也采用相同的方式将结果返回给主机的进程.
    Katana,上面我们说了,OWIN是一组规范,并没有具体的实现,那么这个katana就是微软对OWIN规则的一组实现了.
    他包含了兼容ASP.NET的Microsoft.Owin.Host.SystemWeb还有自托管的环境(控制台,服务)的Microsoft.Owin.Host.HttpListenter 监听
    还有很多的中间件模块主要有:
  • Microsoft.AspNet.WebApi.Owin
  • Microsoft.Owin.Security.(安全模块)**
  • Microsoft.Owin.Cors(跨源资源共享模块)
  • Microsoft.Owin.Host.SystemWeb
  • Microsoft.Owin.Compression(压缩模块)
  • Microsoft.Owin.StaiticFiles(静态文件访问模块)
    当然 - -,剩下的..各位就自行去了解吧..
    而且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/
    详见:分布式缓存系统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
    它是一个强大的任务调度器,它提供的触发器以及Cron表达式能够很好的满足我们在日常开发中遇到的定时服务的工作处理。想必大家在工作中经常会遇到这样类似的需求,在某个时间或者需要不间断的执行某个业务动作去满足任务需求。例如,我们写了一个job,定时去处理一些任务。

  • RabbitMQ
    RabbitMQ是一个消息代理。它的核心原理非常简单:接收和发送消息。你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处。在这个比喻中,RabbitMQ是一个邮箱、邮局、邮递员。RabbitMQ和邮局的主要区别是,它处理的不是纸,而是接收、存储和发送二进制的数据——消息。

  • Topshelf
    Topshelf是.NET平台的Windows服务框架。Topshelf可以轻松创建Windows服务,测试服务,调试服务,并最终将其安装到Windows服务控制管理器(SCM)中。Topshelf通过允许开发人员专注于服务逻辑,而不是与.NET框架中的内置服务支持交互的细节。开发人员不需要了解服务类的复杂细节,通过InstallUtil执行安装,或者了解如何将调试器附加到服务以进行故障排除问题。

  • Hangfire
    Hangfire是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core。个人认为它最大特点在于内置提供集成化的控制台,方便后台查看及监控。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容