IOC容器
- Unity 微软企业库的基础,功能简单,扩展方便,微软官方提供一个EventBus的扩展例子,值得一看
所以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中时,你就会知道就多捉鸡)
- EntityFramework DynamicFilters EntityFramework DynamicFilters是一个开源项目。你可以到这里去下载它的源码。顾名思义,它为我们做的事,就是帮我们动态过滤数据。
- System.Linq.Dynamic 项目中经常用到组合条件查询,根据用户配置的查询条件进行搜索,拼接SQL容易造成SQL注入,普通的LINQ可以用表达式树来完成,但也比较麻烦。有个System.Linq.Dynamic用起来比较方便。
- oracleSugar
优点:
- 高性能,达到原生最高水准,比SqlHelper性能要高,比Dapper快30% 比EF快50% ;
- 支持多种数据库 ,sql版本更新最快,其它会定期更新,可以在多种数据库用一种编程方式;
- 支持.net Core;
- 支持多库并行计算;
- 带有实体生成函数和T4模版生成实体;
- 无需任何配置 ,还你一个干净的model。
日志
- Log4net 传统的日志框架,移植于log4jV1.2,高效,稳定,日志框架如何选择如果你使用了微软企业库,就用企业库自带的,如果你引入的程序集中有的使用了Log4net,那就最好使用Log4net,如果都没有,看个人喜好。
log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
基础类库
- AutoMapper 对象映射,常用来做DTO/ViewModel和Model之间的映射,功能丰富远超你想象
- DotNetZip 创建,压缩,解压Zip文件
- Json.net Json序列化和反序列化,基本支持所有的json特性,性能也很好,MVC4的默认引用程序集中已包含.(支持4.0的动态对象,这个很好用)
Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json的转换。
综合类
- 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security)、日志(Logging)、数据访问(Data Access)、配置管理(Configuration Manage)等,并将这些广泛使用的应用程序块集成封装至一个叫企业库的程序包中
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还在逐渐的增强当中....
缓存
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");
//new WebCaching().Set("Claim", claim, 30);
//var newMyObj = new WebCaching().Get("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。个人认为它最大特点在于内置提供集成化的控制台,方便后台查看及监控。