你的位置:首页 > ASP.net教程

[ASP.net教程]OSharp3.0框架解说系列:新版本说明及新功能规划预览


前言

  时间过得真快,小半年又过去了。

  OSharp在github.com开源已经半年了,半年时间里,我们发现开源并没有给OSharp带来什么发展,关注的人不多,提交Bug的人更少,至于愿意参与到项目中来,给OSharp提交代码的人,

  大环境如此,我也没什么可说的。

  一个人的开源,开的不是源,是寂寞。

  为了OSharp项目能继续发展下去,也为了团队的积极性(大家都懂的,如果只有你一个人在贡献,别人都只索取,你的热情坚持不了多久的),我们做了一个决定……  

OSharp3.0不再开源

  从OSharp3.0开始,远离喧嚣的开源环境,由几个志同道合的小伙伴沉下心来,认真的去继续开发OSharp框架。做出变更如下:

  • OSharp3.0之前的源代码,仍然在github.com上面进行托管,但不再积极更新。
  • OSharp3.0及之后的源代码,仅在团队成员之间流通。
  • nuget 上面的类库,将持续更新,提供“非加密的dll类库文件,pdb调试文件,
  • 配合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的项目图:

OSharp2.0的项目图

  OSharp3.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获取程序集及更新

系列导航

  1. 【开源】OSharp框架解说系列(1):总体设计
  2. 【开源】OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构
  3. 【开源】OSharp框架解说系列(2.2):EasyUI复杂布局及数据操作
  4. 【开源】OSharp框架解说系列(3):扩展方法
  5. 【开源】OSharp框架解说系列(4):架构分层及IoC
  6. 【开源】OSharp框架解说系列(5.1):EntityFramework数据层设计
  7. 【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现
  8. 【开源】OSharp框架解说系列(6.1):日志系统设计
  9. OSharp3.0框架解说系列:新版本说明及新功能规划预览