All Projects → hzdtf285 → Hzdtf.foundation.framework

hzdtf285 / Hzdtf.foundation.framework

基础框架系统,支持.NET和.NET Core平台,语言:C#,DB支持MySql和SqlServer,主要功能有抽象持久化、服务层,将业务基本的增删改查抽离复用;提供代码生成器从DB生成实体、持久化、服务以及MVC控制器,每层依赖接口,并需要在客户端将对应实现层用Autofac程序集依赖注入,用AOP提供日志跟踪、事务、模型验证等。对Autofac、Redis、RabbitMQ封装扩展;DB访问提供自动主从访问,Redis客户端分区。特别适合管理系统。

Projects that are alternatives of or similar to Hzdtf.foundation.framework

Urpm
urpm 是一套基于Laravel封装的后台用户管理权限系统,能够让开发者不用再关心权限问题,实现后台功能的快速开发。
Stars: ✭ 118 (+436.36%)
Mutual labels:  user, permission, role, menu
Stove
Domain Driven Design oriented application framework, meets CRUD needs
Stars: ✭ 160 (+627.27%)
Mutual labels:  redis, framework, rabbitmq, nlog
Foal
Elegant and all-inclusive Node.Js web framework based on TypeScript. 🚀.
Stars: ✭ 1,176 (+5245.45%)
Mutual labels:  framework, jwt, auth
Aaframework
AA.Framework is built on the popular open source class library of NET Core
Stars: ✭ 128 (+481.82%)
Mutual labels:  redis, rabbitmq, nlog
Rome
Carthage cache for S3, Minio, Ceph, Google Storage, Artifactory and many others
Stars: ✭ 724 (+3190.91%)
Mutual labels:  framework, tool, workflow
Spring Boot Quick
🌿 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等📌
Stars: ✭ 1,819 (+8168.18%)
Mutual labels:  redis, rabbitmq, jwt
Php Casbin
An authorization library that supports access control models like ACL, RBAC, ABAC in PHP .
Stars: ✭ 865 (+3831.82%)
Mutual labels:  framework, auth, permission
Spring Boot Examples
个人学习 SpringBoot2.x 写的一些示例程序,目前正在持续更新中.....
Stars: ✭ 159 (+622.73%)
Mutual labels:  redis, rabbitmq, jwt
Springboot Learn
🌹springboot常用框架整合示例,涉及多种网站监控,数据缓存,网络通信,持久层,权限管理,常用工具等
Stars: ✭ 270 (+1127.27%)
Mutual labels:  redis, rabbitmq, jwt
Surging
Surging is a micro-service engine that provides a lightweight, high-performance, modular RPC request pipeline. The service engine supports http, TCP, WS,Grpc, Thrift,Mqtt, UDP, and DNS protocols. It uses ZooKeeper and Consul as a registry, and integrates it. Hash, random, polling, Fair Polling as a load balancing algorithm, built-in service gove…
Stars: ✭ 3,088 (+13936.36%)
Mutual labels:  redis, rabbitmq, nlog
Meiam.system
.NET 5 / .NET Core 3.1 WebAPI + Vue 2.0 + RBAC 企业级前后端分离权限框架
Stars: ✭ 340 (+1445.45%)
Mutual labels:  redis, rabbitmq, nlog
Core Nestjs
A simple application demonstrating the basic usage of permissions with NestJS (JWT, Passport, Facebook, Google+, User, Group, Permission)
Stars: ✭ 347 (+1477.27%)
Mutual labels:  user, jwt, permission
Springboot Learning
基于Gradle构建,使用SpringBoot在各个场景的应用,包括集成消息中间件、前后端分离、数据库、缓存、分布式锁、分布式事务等
Stars: ✭ 340 (+1445.45%)
Mutual labels:  redis, rabbitmq, jwt
His
HIS英文全称 hospital information system(医院信息系统http://59.110.234.89:9999/swagger-ui.html ),医疗信息就诊系统,系统主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管理、财务管理、患者管理。诊疗活动由各工作站配合完成,并将临床信息进行整理、处理、汇总、统计、分析等。本系统包括以下工作站:门诊医生工作站、药房医生工作站、医技医生工作站、收费员工作站、对帐员工作站、管理员工作站。需求为东软提供的云医院。
Stars: ✭ 359 (+1531.82%)
Mutual labels:  redis, rabbitmq, jwt
Jboot
一个优雅的微服务框架,SpringCloud 之外的另一个选择,已经使用在用户量过亿的商业产品上,有超过1000家公司在使用Jboot做极速开发...
Stars: ✭ 655 (+2877.27%)
Mutual labels:  redis, rabbitmq
Node Celery
Celery client for Node.js
Stars: ✭ 648 (+2845.45%)
Mutual labels:  redis, rabbitmq
Go jwt
golang for websocket wechat or weixin and jwt,http ratelimit
Stars: ✭ 19 (-13.64%)
Mutual labels:  redis, jwt
Devutils
🔥 ( 持续更新,目前含 160+ 工具类 ) DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。该项目尽可能的便于开发人员,快捷、高效开发安全可靠的项目。
Stars: ✭ 680 (+2990.91%)
Mutual labels:  log, permission
Pycasbin
An authorization library that supports access control models like ACL, RBAC, ABAC in Python
Stars: ✭ 625 (+2740.91%)
Mutual labels:  auth, permission
Imi
imi 是基于 Swoole 的 PHP 协程开发框架,它支持 Http、Http2、WebSocket、TCP、UDP、MQTT 等主流协议的服务开发,特别适合互联网微服务、即时通讯聊天im、物联网等场景!。QQ群:17916227
Stars: ✭ 680 (+2990.91%)
Mutual labels:  redis, jwt

Hzdtf.FoundationFramework

基础框架系统,支持.NET和.NET Core平台,语言:C#,DB支持MySql和SqlServer,主要功能有抽象持久化、服务层,将业务基本的增删改查抽离复用;提供代码生成器从DB生成实体、持久化、服务以及MVC控制器,每层依赖接口,并需要在客户端将对应实现层用Autofac程序集依赖注入,用AOP提供日志跟踪、事务、模型验证等。对Autofac、Redis、RabbitMQ封装扩展;DB访问提供自动主从访问,Redis客户端分区。特别适合管理系统。

本框架必须运行在.NET Standard 2.0、.NET Framework 4.7.2和.NET Core 3.1.5以上。下载源码用Visual Studio 2019打开。 工程以Standard或Std结尾是标准库,以Framework或Frm结尾为Framework库,以Core结尾为Core库。 初始编译时会耗些时间,因为要从nuget下载包。 框架使用依赖接口注入,使用对象要优先依赖接口,用Autofac属性注入方式。 工程包含contract表示契约工程,专门定义接口以及抽象部分类;包含impl为实现接口的具体类。 实体类以Info结尾。

一、Comnon包 所有公共工具类库

二、Platform包 基于不同平台实现不同的配置类 使用配置是,直接用Contract项目里的IAppConfiguration

三、Logger包 框架自定义的日志组件 日志等级有:debug,info,wran,error,fatal,默认等级为debug,如设置info,则大于或info等级都会记录,而小于该等级(如debug)不会记录。等级在配置文件里可设置,配置名为:HzdtfLog:LogLevel:Default。

四、IOC包 DI与AOP的扩展功能,目前只实现Autofac扩展。提供了读入配置文件进行加载程序集进行注入,需要注入的类必须加上Inject特性描述;实现了部分的拦截器(AOP),如日志记录拦截、禁用拦截、授权拦截和参数验证拦截。注:使用拦截器的方法必须是virtual或override,因为框架使用的是类拦截。

五、Tool\CodeGenerator包 代码生成器工具,提供从数据库读取所有表,然后生成所有码(包含模型、持久化接口、持久化实现、服务接口、服务实现、Framework控制器和Core控制器),生成的代码只需要放在对应各在的项目工程里即可,具体生成的代码参考BasicFunction。 1、命名空间前辍:您的项目命名空间前辍,生成的所有代码都会以这个作为前辍。 2、此工具目前只支持MySql(5.0以上)和SQL Server(2008以上)。

六、Tool\EncryptionAndDecryption包 提供对字符串加解密工具,主要用在对数据库字符串加密。

七、Authorization包 提供针对不同平台进行用户授权验证,将用户授权信息存储到cookie里等公共操作。

八、Cache包 第三方的缓存组件封装,目前只实现了对Redis扩展,依赖于StackExchange.Redis组件。 1、封装了ConnectionMultiplexer对象,使用IConnectionMultiplexerManager接口 使用时必须要IConnectionMultiplexerManager得到Database,否则框架扩展的功能都使用不上。 2、扩展了针对对象存储到Redis的Hash类型,在ObjectSet(this IDatabase db, RedisKey key, object value, TimeSpan? expiry = null, CommandFlags flags = CommandFlags.None)里。 3、扩展了针对分布式锁的功能(轮询模式),在LockTake(this IDatabase db, RedisKey key, Action action, int retryIntervalMillisecond = 200, CommandFlags flags = CommandFlags.None) 4、扩展了针对分布式锁的功能(发布订阅模式,推荐使用),在 LockTake(this IConnectionMultiplexer connectionMultiplexer, RedisKey key, Action action, int timeoutMilliSecond = 5000, CommandFlags flags = CommandFlags.None) 5、如使用Core,则添加Hzdtf.Redis.Extend.Core引用。在appsetting.json里配置: "Redis": { "ConnectionEncrypt": false, "Connections": [ { "Key": "Key1", "ConnectionString": "127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381" } ]
} 如果有多种Redis,则用Key区分。 如果有主从,在使用从时,flags应使用CommandFlags.PreferSlave,会优先找从,如果从不可用,则找主。默认是找主

九、MessageQueue包 1、对消息队列进行扩展封装,目前只实现了RabbitMQ,核心都在rabbitMessageQueue.xml配置文件里,使用生产者或消费者,输入对应参数,会找这个配置文件找到对应的交换机和队列名。具体参考DEMO。 2、利用RabbitMQ对RPC进行封装,并巧妙使用了DispatchProxy代理类,使调用方使用调用远程,就像调用本地方法一样,具体参考RPC DEMO。

十、Persistence包 1、对持久化操作进行封装,包含一个表的基本增删改查(包括分页查)功能,并支持异步操作。此持久化依赖于Dapper组件。 2、提供了针对数据库事务方便操作,只需要在具体方法里加上Transaction特性描述即可。 3、关于ConnectionId:名称为连接ID(Guid),每个持久化方法里必须含有的参数,作用是为了在多个方法之间复用同一个连接对象,提高性能。原则是:哪里创建的连接ID哪里负责销毁,不是您创建的就不要自行销毁它。 4、DbConnectionManager数据库连接管理器:提供了相对智能的维护DB连接资源池,主要存在目的是为了连接ID而存在,并支持通过传入访问模式参数,自动进行主从操作。主数据库字符串配置名:ConnectionStrings:DefaultConnection;从数据库字符串配置名:ConnectionStrings:SlaveConnection,当没有配置从时,会自动找主。ConnectionStrings:Encrypt:表示字符串是否加密。

十一、Service包 俗称服务层,所有业务逻辑都放在此包里。 1、在方法里加了Auth特性,表示调用此方法前会验证当前用户是否有权限。 2、在方法参数里加了验证特性,调用此方法前首先会验证参数有效性,如: ModifyPasswordByLoginId([Model] CurrUserModifyPasswordInfo currUserModifyPassword, string connectionId = null),加了Model特性,会验证currUserModifyPassword里的属性有效值。验证方法与微软提供的模型验证一致。 3、所有服务层返回的方法都必须是ReturnInfo对象,该对象里的Code为0时,表示业务处理成功。非0为失败。 4、由工具自动生成代码统一由Generators文件夹包含,此处的文件最好不要改,如要扩展功能,则用部分类特性,新建Expand文件夹。

十二、Controller包 控制器包,提供基本的MVC控制器增删改查的抽象功能方法,符合RESTFull风格。

十三、BasicFunction包 基本功能,提供了用户、角色、角色权限、数据字典四大功能模块,还提供登录退出功能,可以理解为基本的范例。 注: 1、MenuCode:菜单编码,表示菜单的唯一编码,如用户菜单,角色菜单等。 2、FunctionCode:功能编码,表示一个具体功能,如添加、编辑、查询和删除等。 3、菜单与功能关联:如一个菜单具体哪些功能,可通过此处关联。 4、角色与菜单功能关联:如一个角色具体哪些权限,可通过此处关联。

在范例的控制器里有[MenuCode("User")],Action方法里有[FunctionCode("Add")],表示执行这个控制器的这个Action时,拦截器会判断该用户是否有用户的添加这个权限。

十四、Workflow包 工作流,提供流程审核功能,可配置送件、退件路线,由表单与流程组成一个审核流程。

十五、WebDemo包 提供Web的Demo网站程序,采用WebAPI方式,前后端分离,使用Bootstreap UI框架。运行时,先创建数据库,导入Doc\创建表与初始化基本数据_mysql.sql,目前只有MySql才做了基础数据。用户名:system,密码:123。 依赖注入程序集都在:assemblyConfig.json配置文件里,包含了要注入哪些程序集,以及哪些程序集要使用哪些拦截器。 所有要使用具体程序集(包含具体使用哪些对象)都要在客户端里装载,因为所有项目都依赖于接口,而不是依赖于具体实现,具体类里也不创建具体依赖类。

结语: 1、获取当前用户:UserTool.CurrUser,在客户端(WEB站点)里要实现获取当前用户的方法,如User.GetCurrUserFunc => 从Cookie或Session取出当前用户。 2、获取当前环境:UtilTool.CurrEnvironmentType (目前只有生产与测试环境,默认是生产) 3、获取具体日志对象:LogTool.DefaultLog,默认是ConsoleLog,如系统未使用依赖注入,又要改变记录日志方式,则需要在系统启动时手工设置此对象。 4、获取IOC的对象:框架使用的是属性注入,所以一般使用属性的公有权限,如下: public IUserService UserService { get; set; } 直接拿来使用,如要手工获取,则使用AutofacTool.Resolve<对象类型>()。 5、程序启动时,必须先加载依赖注入的对象,具体参考DEMO。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].