Coder Social home page Coder Social logo

dystudio / adnc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alphayu/adnc

0.0 1.0 0.0 2.79 MB

:fire:Adnc是一个轻量级的.NET Core微服务快速开发框架,也可以应用于单体架构系统的开发。框架基于JWT认证授权、集成了一系列微服务相关组件、包含基础的后台管理功能。同时也是一个前后端分离的框架,前端基于Vue、后端基于.NET Core 3.1。代码简洁、易上手、开箱即用。

Home Page: https://aspdotnetcore.net

License: MIT License

JavaScript 9.82% HTML 0.64% Vue 9.47% CSS 0.76% Batchfile 0.03% C# 78.04% SCSS 0.84% Dockerfile 0.42%

adnc's Introduction

前言

Build Status GitHub issues GitHub forks GitHub stars GitHub license
    Adnc是一个轻量级的.Net Core微服务快速开发框架,同时也可以应用于单体架构系统的开发。框架基于JWT认证授权、集成了微服务相关配套组件,代码简洁、易上手、学习成本低、开箱即用。
    前端基于Vue、后端服务基于.Net Core 3.1搭建,也是一个前后端分离的框架。WebApi遵循RESTful风格,框架包含用户/角色/权限管理、字典/配置管理、登录/审计/异常日志管理等基础的后台模块。
    框架对配置中心、依赖注入、日志、缓存、模型映射、认证/授权、仓储、服务注册/发现、健康检测、性能检测、RabbitMq、EfCore、Dapper等模块进行更高一级的自动化封装,使Asp.Net Core 框架更易于应用到实际项目开发中。

演示网址:http://193.112.75.77
账号/密码:alpha2008/alpha2008

下一步计划

  • 完善框架文档。
  • 集成Masuit.Tools丰富adnc.infr.common工具层。
  • 集成Quartz.Net实现框架计划调度功能。

相关文档 wiki

如何快速跑起来

如何快速部署(docker)

目录结构

  • clientApp 前端项目(vue)
  • serverApi 后端项目(dotnetcore)
  • doc 项目相关文档(数据库脚本/docker-compose.yaml文件)
  • tools 工具软件
    image
ClientApp
  • ClientApp基于Vue-element-admin以及web-flash搭建,感谢两位作者。
  • 技术栈 Vue + Vue-Router + Vuex + Axios
  • 构建步骤
    # Install dependencies 
    npm install --registry=https://registry.npm.taobao.org
    # Serve with hot reload at localhost:5001
    npm run dev
    # Build for production with minification
    npm run build:prod
  • 界面
    image image
ServerApi
  • ServerApi基于dotnetcore3.1搭建。
  • 主要技术栈
名称 描述
Ocelot 基于 dotnetcore 编写的开源Api网关
Consul 配置中心、服务发现/注册组件
Refit 一个声明式自动类型安全的restful服务调用组件
SkyAPM.Agent.AspNetCore skywalking .net core 探针,性能检测组件
AspNetCore.HealthChecks 健康检测组件
Autofac IOC容器组件
Autofac.Extras.DynamicProxy Autfac AOP扩展
Efcore ORM组件
Dapper 轻量级ORM组件
Z.EntityFramework.Plus.EFCore 高新能的EfCore组件
NLog 日志记录组件件
AutoMapper 模型映射组件
Swashbuckle.AspNetCore REST APIs文档生成工具(swagger)
EasyCaching 实现一、二级缓存管理的一个开源的组件
CAP 实现事件总线及最终一致性(分布式事务)的一个开源的组件
RabbitMq 异步消息队列组件

项目介绍

Adnc.Infras 基础架构层

01.Adnc.WebApi.Shared

该层定义认证、鉴权、异常捕获等公共类于中间件。所有微服务WebApi层的共享层,都需要依赖该层。
image

02.Adnc.Application.Shared

该层定义了DTO对象的基类、应用服务类基类以及操作日志拦截器。所有微服务Application层的共享层,都需要依赖该层。
image

03.Adnc.Core.Shared

该层定义了Entity对象的基类、业务服务接口基类、Rpc服务通用服务、UOW接口与拦截器以及仓储接口。所有微服务Core层的共享层,都需要依赖该层。
image

04.Adnc.Common

该层定义了一些公用模型与常量以及一些通用帮助类。该层不依赖任何层。 image

10.Adnc.Infr.Gateway

该层是一个输出项目,Api网关,基于ocelot实现,如果项目采用整体结构开发,该项目可以直接删除。ocelot网关包含路由、服务聚合、服务发现、认证、鉴权、限流、熔断、缓存、Header头传递等功能。市面上主流网关还有Kong,Traefik,Ambassador,Tyk等。
image

11.Adnc.Infr.HealthCheckUI

该层是一个输出项目, AspNetCore.HealthChecks组件的Dashboard,直接配置需要监测的服务地址就可以了,没有代码。

20.Adnc.Infr.Consul

该层集成了Consul。提供服务的注册、发现以及系统配置读取等公共类。 image

21.Adnc.Infr.EasyCaching

该层集成了EasyCaching。重写了EasyCaching拦截器部分代码,负责一、二级缓存的管理。 image

22.Adnc.Infr.EfCore

该层负责Adnc.Core.Shared仓储接口与Uow的Ef实现,负责mysql数据库的操作。同时也集成了Dapper部分接口,用来处理复杂查询。
image

23.Adnc.Infr.Mongo

该层负责Adnc.Core.Shared仓储接口的Mongodb实现,负责mongodb数据库的操作。 image

23.Adnc.Infr.RabbitMq

该层集成了RabbitMq。封装了发布者与订阅者等公共类。
image

代码片段

    [Route("usr/session")]
    [ApiController]
    public class AccountController : ControllerBase
    {
        private readonly JWTConfig _jwtConfig;
        private readonly IAccountAppService _accountService;
        private readonly ILogger<AccountController> _logger;

        public AccountController(IOptionsSnapshot<JWTConfig> jwtConfig
            , IAccountAppService accountService
            , ILogger<AccountController> logger)
        {
            _jwtConfig = jwtConfig.Value;
            _accountService = accountService;
            _logger = logger;
        }

        /// <summary>
        /// 登录/验证
        /// </summary>
        /// <param name="userDto"><see cref="UserValidateInputDto"/></param>
        /// <returns></returns>
        [AllowAnonymous]
        [HttpPost()]
        public async Task<UserTokenInfoDto> Login([FromBody]UserValidateInputDto userDto)
        {
            var userValidateDto = await _accountService.Login(userDto);

            return new UserTokenInfoDto
            {
                Token = JwtTokenHelper.CreateAccessToken(_jwtConfig, userValidateDto),
                RefreshToken = JwtTokenHelper.CreateRefreshToken(_jwtConfig, userValidateDto)
            };
        }
    }
    public class AccountAppService : IAccountAppService
    {
        private readonly IMapper _mapper;
        private readonly IEfRepository<SysUser> _userRepo;
        private readonly RabbitMqProducer _mqProducer;
        public AccountAppService(IMapper mapper,
            IEfRepository<SysUser> userRepo,
            RabbitMqProducer mqProducer)
        {
            _mapper = mapper;
            _userRepo = userRepo;
            _mqProducer = mqProducer;
        }

        public async Task<UserValidateDto> Login(UserValidateInputDto inputDto)
        {
            var user = await _userRepo.FetchAsync(x => new { x.Password, x.Salt, x.Name, x.Email, x.RoleId,x.Account,x.ID,x.Status }
            , x => x.Account == inputDto.Account);
            //todo......
            //..........
            _mqProducer.BasicPublish(MqConsts.Exchanges.Logs, MqConsts.RoutingKeys.Loginlog, log);
            return _mapper.Map<UserValidateDto>(user);
        }
    }

问题交流

License

MIT
Free Software, Hell Yeah!

adnc's People

Contributors

alphayu avatar

Watchers

 avatar

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.