什么是冬至?
冬至 是一个基于 .NET Core 平台的开源项目,其目标是构建一个简单易用的模块化的高性能分布式系统。
项目架构采用全新技术栈,遵循领域驱动设计(Domain-Driven Design,DDD)规范并结合命令查询职责分离(CQRS)架构实现事件驱动(Event-Driven Architecture,EDA)、事件溯源(Event Sourcing,ES)等特性。
集成多数据库与多ORM自由平滑切换及组合使用,支持多语言切换与前端多主题切换。
集成 IdentityServer4 进行身份验证及授权。
加入消息队列,分布式缓存以提高系统性能。
采用EFK(ElasticSearch, FluentD, Kibana)方案进行日志收集,基于分布式的全文搜索引擎(ElasticSearch)提高搜索海量数据的查询效率,FluentD是日志记录层的数据收集器,并搭配 Kibana 实现可视化管理和数据分析。
加入Zipkin.NET进行数据跟踪。
使用 RESTFul API 风格开发 Web API,并配合Swagger进行接口文档在线自动生成及可视化展示。
使用测试驱动开发(Test-Driven Development, TDD)方式,设计高内聚低耦合代码,降低维护成本。
使用流畅接口(Fluent Interface)风格编写链式代码。
将程序部署至Docker或k8s中。
冬至名称的由来?
冬至 为中国二十四节气中的第二十二个节气,中国古代对冬至很重视,被视为冬季的大节日。冬至在古代称之为 “亚岁”
使用到的技术栈
- 应用框架
- ASP.NET Core 3.0
- ASP.NET Core WebAPI
- Blazor
- gRPC
- 数据库
- Microsoft SQL Server
- Oracle
- MySQL
- PostgreSQL
- MongoDB
- 对象关系映射
- EntityFrameworkCore - 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
- Dapper - .Net的简单对象映射器
Solstice
- 缓存
- Redis - 是一个开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,带有半径查询和流的地理空间索引。Redis具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
- 消息队列
- RabbitMQ - 是部署最广泛的开源消息代理。
- 定时任务
- Quartz.NET - 是功能齐全的开源作业调度系统,可用于最小的应用程序到大型企业系统
- Hangfire - 在.NET和.NET Core应用程序中执行后台处理的一种简便方法。无需Windows服务或单独的过程。
- 即时通讯
- 前端框架
- 故障处理
- Polly - 是一个.NET弹性和瞬态故障处理库,允许开发人员以流畅和线程安全的方式表达诸如重试,断路器,超时,隔离头和回退之类的策略。
- 应用容器
- Docker - 提供了一种在容器中安全隔离地运行应用程序的方法,该容器及其所有依赖项和库打包在一起。
参考开源项目
- EventFlow
- NEventStore
- NopCommerce
- SimplCommerce
- EquinoxProject
- eShopOnContainers
- eShopOnWeb
- Ocelot
- OrchardCore
- Weapsy

