什么是中间件
简单讲,中间件就是非业务的技术类组件。
ORM
ORM,Object Relational Mapping(对象关系映射)。它的作用是在关系型数据库和实体对象之间做一个映射,简单的属性和方法操作,省去与复杂的SQL打交道。
- EntityFramework:微软ORM
- NHibernate: Hibernate的.NET实现
- Mybatis.net:MyBatis的.NET实现
- Dapper:轻量级ORM
- SQLSugar:轻量级ORM
- ServiceStack.OrmLite:Fast,Simple,Typed ORM for .NET
- 开源ORM Group https://github.com/orm-group
任务调度
- Quartz.NET:开源作业调度框架,适合做定时轮询数据库同步,定时邮件处理,定时数据处理等。 底层使用ScheduledThreadPoolExecutor实现,提供了更友好的且带上下文的API。
- Timer、TimerTask
- 提供简单调度功能
- 缺点:单线程,性能不足;需要维护上下文;需要自己实现持久化;自己实现分布式;自己实现监控
- ScheduledThreadPoolExecutor Timer的多线程版本
IOC
- Ninject
- Castle
- Autofac
- Unity
- Sprint.NET
- StructureMap
- 反射实现,性能差
日志
- NLog
- Log4NET
通讯
- Akka.net: 基于actor模型的高性能并发处理框架
- Thrift:一种可伸缩的跨语言通讯框架
- SuperSocket
- Socket
- FastSocket
- DotNetty:Netty的.net实现
消息队列 MQ
业务消息队列是应用于业务的解耦和分离,应具备分布式,高可靠性,高性能,高实时性,高稳定性,高扩展性等特性。
- RabbitMQ:微秒级
- Redis.List
- MSMQ
- RocketMQ:毫秒级;十万级吞吐量;可用性高,分布式;消息几乎零丢失
- Kafka:毫秒级;吞吐量高,十万级;可用性高,消息几乎零丢失
- ActiveMQ:毫秒级;吞吐量万级,可用性高,有较低概率丢失
中小型公司,技术挑战不高,RabbitMQ是不错的选择;大型公司,基础架构研发实力较强,RocketMQ是很好的选择;大数据领域的实时计算,日志采集等场景,用Kafka不错。
缓存
- Redis
- MemCache
1 都是内存数据库,但是Redis有持久化
2 Redis支持更多的数据类型
总线 ESB
- NServiceBus:付费
- MassTransit:开源
- ESB.NET
- Shuttle:开源