OSharp是什么?

  OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现。与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现。依赖注入、ORM、对象映射、日志、缓存等等功能,都只定义了一套最基础最通用的抽象封装,提供了一套统一的API、约定与规则,并定义了部分执行流程,主要是让项目在一定的规范下进行开发。所有的功能实现端,都是通过现有的成熟的第三方组件来实现的,除了EntityFramework之外,所有的第三方实现都可以轻松的替换成另一种第三方实现,OSharp框架正是要起隔离作用,保证这种变更不会对业务代码造成影响,使用统一的API来进行业务实现,解除与第三方实现的耦合,保持业务代码的规范与稳定。

本文已同步到系列目录:OSharp快速开发框架解说系列

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的权限系统中,在系统初始化的时候,将收集系统的所有功能信息与所有数据实体信息,作为记录存储到数据库中。

  

  权限系统将可以根据上面收到的功能信息与数据实体信息,针对不同的角色,对功能权限与数据权限进行点对点的权限控制。

  • 对于功能权限,每个角色针对每个功能,都可以配置“继承、允许、拒绝”三种状态的权限类型
  • 对于数据权限,每个角色针对每个实体(甚至实体的各个属性),都可以通过配置子查询条件的方式,在进行数据库数据查询的时候,给查询增加子查询条件,来对数据进行不同的权限控制。

实体配置的缓存系统

  在缓存系统中,根据前面权限系统收集到的数据实体信息,可以针对每个数据实体,不同的缓存策略(如是否启用缓存、过期时间)等,达到不同的业务数据区分对待。

开源说明

github.com

  OSharp项目已在github.com上开源,地址为:https://github.com/i66soft/osharp,欢迎阅读代码,欢迎 Watch(关注),欢迎 Star(推荐),如果您认同 OSharp 项目的设计思想,欢迎参与 OSharp 项目的开发。

  在Visual Studio 2013中,可直接获取 OSharp 的最新源代码,获取方式如下,地址为:https://github.com/i66soft/osharp.git

  

开源项目参与方式

  很多童鞋想参与开源项目,为项目做贡献,但又不知道如何做,这里我简单说下参与OSharp的步骤吧:

  1. https://github.com/i66soft/osharp 右上角 Fork 一下项目源码,在你的账户下会有一份代码的副本
  2. 使用VisualStudio Clone 你账户下的代码到本地,更改代码,再提交,就完成代码的更改了
  3. 如果觉得有并入 i66soft 主干的价值,可以向主干提交 pull request申请,如果我审核通过,就可以合并到主干了,这就形成了一次开源代码的贡献了
  4. 如果我没有接受合并,你也可以在你的账户上按你的风格去发展osharp
  5. 我也会经常浏览各个Fork版本对项目的更改,如果觉得有价值,也会主动合并到主干代码中,也能形成一次对开源的贡献
  6. 为保证提交的质量,也便于对代码的合并,每次更改与提交应该只做一件事,只提交必要的更改

nuget

  OSharp的相关类库已经发布到nuget上,欢迎试用,直接在nuget上搜索 “osharp” 关键字即可找到

系列导航

本文已同步到系列目录:OSharp快速开发框架解说系列

【开源】OSharp3.0框架解说系列:新版本说明及新功能规划预览的更多相关文章

  1. 【开源】OSharp3.0框架解说系列(6.2):操作日志与数据日志

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  2. 【开源】OSharp框架解说系列(1):总体设计及系列导航

    系列文章导航 [开源]OSharp框架解说系列(1):总体设计 [开源]OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构 [开源]OSharp框架解说系列(2.2):EasyU ...

  3. 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  4. 【开源】OSharp3.3框架解说系列(7.1):初始化流程概述

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  5. 【开源】OSharp3.3框架解说系列:开发计划与进度

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  6. 【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  7. 【开源】OSharp框架解说系列(3):扩展方法

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  8. 【开源】OSharp框架解说系列(2.2):EasyUI复杂布局及数据操作

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  9. 【开源】OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

随机推荐

  1. uoj98未来程序改 纯暴力不要想了

    暴力模拟A了,数据还是良(shui)心(shui)的 90分的地方卡了半天最后发现一个局部变量被我手抖写到全局去了,,, 心碎*∞ 没什么好解释的,其实只要写完表达式求值(带函数和变量的),然后处理一 ...

  2. BZOJ‘s Usaco 奶牛题集锦

    1230 线段树 1231 状压DP 1232 最小生成树 1527 贪心 1600 打表找规律 1601 最小生成树 1602 prime 1606 DP 1607 筛法 1609 DP 1610 ...

  3. 懒加载lazyload

    什么是懒加载 懒加载就是当你做滚动到页面某个位置,然后再显示当前位置的图片,这样做可以减少页面请求. 懒加载:主要目的是作为服务器前端的优化,减少请求数或延迟请求数,一些图片非常多的网站中非常有用,在 ...

  4. Selenium_IEDriver操作sendkeys输入速度太慢

    通过调用64位IEDriverServer来操控sendkeys方式时,输入速度非常慢.网上说是64位有bug. 解决办法: 使用32位IEDriverServer.

  5. ubuntu install eclipse-installer

    1. sudo mkdir /usr/eclipseInstaller 2. tar -zxvf eclipse-inst-linux64.tar.gz -C /usr/eclipseInstalle ...

  6. 如何去掉dede列表推荐时标题被加粗

    dede在列表推荐文章默认为加粗不清楚的可以看图: 那个加黑的是默认的.如果你不想要被加黑,可以做如下改动.在include里找到文件:arc.listview.class.php查找并删除(注释掉也 ...

  7. asp.net mvc添加多条数据到数据库

    mvc的视图太强大了,个人刚刚接触.(初级菜鸟,懂的不多,往大神们指点)需求是,客户点击添加按钮弹出一个框选择产品后直接添加到表单中,在表单可以自己更改产品的数量,以及一些信息.mvc表单提交的时候只 ...

  8. mysql 数据表中查找重复记录

    select mobile_phone,count(*) as count from lawyer group by mobile_phone having count>1;

  9. 第三方框架之ThinkAndroid 学习总结(一)

    ThinkAndroid是一个免费的开源的.简易的.遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单.快速的进行Android应用程序的开发,包含Android mvc.简易s ...

  10. 【开源】MQTT推送服务器——zer0MqttServer(Java编写)

    目录 说明 功能 如何使用 参考帮助 说明 重要的放前面:V1.0版本是一个非常基础的版本,除了完整的MQTT协议实现外,其他功能什么都没做. MQTT 协议是 IBM 开发的即时通讯协议,相对于 I ...