前言
时间过得真快,小半年又过去了。
OSharp在github.com开源已经半年了,半年时间里,我们发现开源并没有给OSharp带来什么发展,关注的人不多,提交Bug的人更少,至于愿意参与到项目中来,给OSharp提交代码的人, 0 。
大环境如此,我也没什么可说的。
一个人的开源,开的不是源,是寂寞。
为了OSharp项目能继续发展下去,也为了团队的积极性(大家都懂的,如果只有你一个人在贡献,别人都只索取,你的热情坚持不了多久的),我们做了一个决定……
OSharp3.0不再开源
从OSharp3.0开始,远离喧嚣的开源环境,由几个志同道合的小伙伴沉下心来,认真的去继续开发OSharp框架。做出变更如下:
- OSharp3.0之前的源代码,仍然在github.com上面进行托管,但不再积极更新。
- OSharp3.0及之后的源代码,仅在团队成员之间流通。
- nuget 上面的类库,将持续更新,提供“非加密的dll类库文件,pdb调试文件,xml注释文件”的方式提供使用,有心人仍然可以通过各种途径很容易阅读到项目的源代码的。
- 配合OSharp3.0的新增功能,本系列博客将继续更新,对新增功能将会的详尽的技术描述,欢迎喜欢本系列的博友继续关注。
OSharp3.0介绍
经过最近一段时间的努力,OSharp3.0新增了不少功能,如框架初始化流程,多数据库多上下文的支持,分类日志记录等,包含功能权限与数据权限的权限系统正在设计当中,基于实体配置的缓存系统,在计划当中。
与OSharp2.0对比
与OSharp2.0对比,OSharp3.0做了一些改变,除了OSharp.Utility,OSharp.Web.Client这两个通用的类库外,OSharp3.0的其他类库,都去除了对.net 4.0的支持,只支持.net 4.5及以上的.net环境。
由nuget上的项目图,可以看出两个版本的变化:
osharp2.0的项目图:
OSharp3.0的项目图:
下面,我们再来梳理一下各个类库的作用:
- OSharp.Utility:
- 作用:工具类组件,对常用工具类辅助操作进行封装
- 依赖项:Json.NET
- OSharp.Web:
- 作用:Web工具类组件,封装Web相关的MVC,WebAPI,SignalR的通用操作
- 依赖项:OSharp.Utility,MVC5,WebAPI5,SignalR2
- OSharp.Web.Client:
- 作用:Web客户端组件,封装Web客户端相关的WebAPI,SignalR的桌面客户端功能
- 依赖项:OSharp.Utility,WebAPI4 Client,SignalR2 Client
- OSharp.Core:
- 作用:框架核心组件,为框架定义配置节点,日志,数据访问,缓存,框架初始化等功能的基础类,核心接口等
- 依赖项:OSharp.Utility
- OSharp.Core.Data.Entity:
- 作用:数据访问组件,封装基于EntityFramework的数据访问功能的实现
- 依赖项:OSharp.Core,EntityFramework,AutoMapper
- OSharp.Core.Data.Entity.MySql:
- 作用:MySql数据访问组件,对数据访问组件提供基于EntityFramework的数据访问功能的MySql数据库的支持
- 依赖项:OSharp.Core.Data.Entity,MySql.Data.Entity
- OSharp.SiteBase:
- 作用:站点基础,提供站点基础功能的定义及框架初始化的实现
- 依赖项:OSharp.Web,OSharp.Core.Data.Entity,Autofac,log4net
- OSharp.Framework:
- 作用:框架nuget安装引导,没有实际类库
- 依赖项:OSharp.SiteBase,OSharp.Web
- OSharp.Sample.Simple:
- 作用:OSharp开发框架的简单示例,用于OSharp框架的初体验
- 依赖项:OSharp.Framework及一些前端框架
OSharp3.0新功能规划及简介
对于各个新增功能,这里只是简单的做一下介绍,详细的设计思路及实现,后面的文章再详细说明。
分类日志记录
在《 【开源】OSharp框架解说系列(6.1):日志系统设计 》中,我们已经设计并实现了一个可扩展的日志系统,只要定义好输出端的Adapter,就可以以任意形式输出日志信息。
在日志开发中,有些日志记录需求是常规需要的,比如操作日志,数据变更日志,系统异常日志等,我们希望把这些常规需求都集成到OSharp框架当中。有了内置的支持,在做开发的时候,只需要很简单的配置,就可以实现相关需求。
例如,操作日志的实现,如下图所示:
在后台管理中,管理员通过简单的配置,就可以控制每个功能点是否开启操作日志与数据日志的记录。
多数据库多上下文支持
在构建较复杂的系统的时候,有时候我们需要针对不同的子系统或模块进行分库,把原先集中在一个数据库中的数据,根据模块的不同,拆分到不同的数据库中。
例如,上面的操作日志与数据日志,并不是系统的业务数据,就可以不记录到业务数据库中,而是单独记录到日志数据库中,能有效的减轻日志数据量宠大给业务数据库带来的压力。
OSharp3.0的数据访问层,通过对数据上下文(DbContextBase)、数据初始化策略(DbContext的抽象,可以很轻松的按需要对实体类进行分组,初始化到不同的上下文中。
功能权限与数据权限系统
在OSharp的权限系统中,在系统初始化的时候,将收集系统的所有功能信息与所有数据实体信息,作为记录存储到数据库中。
权限系统将可以根据上面收到的功能信息与数据实体信息,针对不同的角色,对功能权限与数据权限进行点对点的权限控制。
- 对于功能权限,每个角色针对每个功能,都可以配置“继承、允许、拒绝”三种状态的权限类型
- 对于数据权限,每个角色针对每个实体(甚至实体的各个属性),都可以通过配置子查询条件的方式,在进行数据库数据查询的时候,给查询增加子查询条件,来对数据进行不同的权限控制。
实体配置的缓存系统
在缓存系统中,根据前面权限系统收集到的数据实体信息,可以针对每个数据实体,不同的缓存策略(如是否启用缓存、过期时间)等,达到不同的业务数据区分对待。
nuget获取程序集及更新
系列导航
- 【开源】OSharp框架解说系列(1):总体设计
- 【开源】OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构
- 【开源】OSharp框架解说系列(2.2):EasyUI复杂布局及数据操作
- 【开源】OSharp框架解说系列(3):扩展方法
- 【开源】OSharp框架解说系列(4):架构分层及IoC
- 【开源】OSharp框架解说系列(5.1):EntityFramework数据层设计
- 【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现
- 【开源】OSharp框架解说系列(6.1):日志系统设计
- OSharp3.0框架解说系列:新版本说明及新功能规划预览