Giter Club home page Giter Club logo

elderjames / shriek-fx Goto Github PK

View Code? Open in Web Editor NEW
664.0 664.0 159.0 16.11 MB

An easy-to-use rapid development framework developed on the basis of.NET Core 2.0, following the constraints of domain Driven Design (DDD) specifications, combined with the CQRS architecture to provide the infrastructure for event-driven, event backtracking, responsiveness, and more. Let developers enjoy the true meaning of object-oriented design patterns brought by the aesthetic.

Home Page: https://shriek-projects.github.io/shriek-fx

License: MIT License

C# 100.00%
cqrs ddd ddd-cqrs-framework dotnet-core elegant

shriek-fx's Introduction

ShriekFx:zap:

Build status MyGet Pre Release Author GitHub license

shriek-fx 是一个基于 .NET Core 2.0 开发的简单易用的快速开发框架,遵循领域驱动设计规范约束,并结合CQRS架构提供实现事件驱动、事件回溯、响应式等特性的基础设施。内部调用对用户几乎无感知也无需自己实现,开箱即用。目标是协助小型应用使用DDD的思维去开发,最终让开发者告别对领域驱动设计的复杂认识,并且享受到正真意义的面向对象设计模式来带的美感。

除此之外,还包含为了增强核心框架功能和迎合通用业务系统快速开发需求的众多实用的、面向微服务的拓展组件。

PS. 领域驱动设计是一种软件系统设计方法理论,而本框架则提供了规范约束,是能够让这种设计理论真正落地实现的开发工具套件(SDK)。

本框架参考自《领域驱动设计》原著、《实现领域驱动设计》和ENode。

特性:

  1. 领域驱动设计(DDD)
  2. 命令查询职责分离(CQRS)
  3. 事件驱动架构 (EDA)
  4. 事件回溯 (ES)
  5. 最终一致性 (Eventually Consistent)
  6. 契约即服务 (通过定义的接口自动生成客户端和服务端实现,支持Http和Socket)
  7. 框架中每个组件都有基础实现,最简单时只需一个核心类库就能跑起来
  8. 遵循端口与适配器模式,框架组件适配多种第三方组件实现,可从单体架构到面向服务架构按需扩展

设计规范

  1. 尽量使用.NET Standard和官方提供的类库,第三方类库设计成组件利用DI来按需组合。

文档

安装Nuget包

目前开发版本已发布到MyGet,从Nuget安装时需要添加MyGet的源地址,或者在解决方案根目录添加NuGet.config文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
	<add key="Shriek-Fx" value="https://www.myget.org/F/shriek-fx/api/v3/index.json" />
	<add key="Nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

开发环境

  1. Visual Studio 15.3+
  2. .NET Core SDK 2.0+

示例项目

认证授权系统 ShriekFX.Auth 开发中

内容管理系统 ShriekFX.CMS 开发中

其他示例在Samples目录下

任务列表(会不断调整):

  • C端
    • 命令总线 CommandBus
    • 事件总线 EventBus
    • 进程内异步队列
    • 内存事件缓存
    • 接口实现自动注册
    • Actor 响应式架构
    • Saga 流程管理
    • 事件存储 + 聚合快照(备忘录模式)
      • 内存模式 (聚合修改后立刻持久化)
      • EF Core实现
      • NoSQL实现
        • LiteDB
        • Cosmos DB (MongoDB API)
      • InfluxDB (时序数据库)
      • Redis
    • Bus / 消息队列(MQ)
      • RabbitMQ
  • Q端 + Real DB ORM
    • EF Core
    • Dapper
      • 接口标注Sql特性动态创建仓储
      • Linq 扩展
      • 特性指定事务范围
    • SmartSql扩展(实现Xml Sql模板)
    • TiDB
    • 查询基类
  • 应用服务层
    • 接口即服务
      • Http / MVC
      • TCP / RPC
      • Dotnetty
    • GraphQL
  • UI层
    • 权限管理
    • OAuth 2.0
    • ASP.NET Core 扩展
      • WebApi JS客户端生成
      • Swagger
    • 动态表单
    • Angular
    • Vue (Vuetify)
  • 定时任务
    • Hangfire
  • 基础设施
    • Aop 拦截器
    • 跟踪监控
    • 日志
      • NLog
      • Log4net
      • Exceptionless
      • Kafka + ELK
    • 序列化器
    • 服务定位器
    • 加密
    • 爬虫
  • 单元测试
    • CQRS
    • ServiceProxy
  • 示例 (Samples)
    • 内存事件仓储
    • EFCore事件仓储
    • NoSQL事件仓储
    • InfluxDB事件仓储
    • Redis事件仓储
    • RabbitMQ总线
    • WebApi代理
    • CQRS 整体示例

shriek-fx's People

Contributors

elderjames avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shriek-fx's Issues

Language

Hello
I can't read Chinese, How to use this project ?

thanks

EventId问题

public abstract class Event : Message, IEvent
{
    public abstract string EventId { get; }
    public int Version { get; internal set; }
}

EventId 要set,否则写库时没有记录

生成有错误

具体错误:未能找到元数据文件“D:\Code\shriek-fx-master\samples\Shriek.Samples\bin\Debug\netstandard2.0\Shriek.Samples.dll” Shriek.Samples.Dapper

环境.:NET Core SDK (3.0.100-preview6-012264)
并在项目根目录增加global.json文件 将现有sdk版本指向2.2
{
"sdk": {
"version": "2.2.300"
}
}

动态API可以和Swagger集成吗

作者 你好 动态生成的API可以和swagger集成吗 还有如果现在已有框架 可以通过引用nuget包的形式 去把框架里面的一些服务层生成动态API吗

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.