摘要:
前后端分离的系统中,前端和后端只有必要的数据通信交互,前端相当于一个完整的客户端应用程序,需要包含如下几个方面:各个模块的布局组合 各个页面的路由连接 业务功能的数据展现和操作流程体现 操作界面的菜单/按钮权限控制 OSharp的Angular前端是基于 NG-ALAIN 框架的,这个框架基于阿里的 NG-ZORRO 封装了很多方便实用的组件,让我们很方便的实现自己需要的前端界面布局。 阅读全文
摘要:
什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架。这个框架使用最新稳定版的.NetCore SDK(当前是.NET Core 2.2),对 AspNetC 阅读全文
摘要:
一个业务模块,是负责完成一系列功能的,这些功能相互之间具有密切的关联性,所以对于一个模块来说,业务服务是一个整体,不应把他们再按单个实体拆分开来。OSharp 的业务模块代码结构设计,也是根据这一原则来设计的。设计规则如下 阅读全文
摘要:
CodeFirst的开发模式,数据库的设计细节完全靠代码来完成,数据实体映射配置正是负责这项工作的,针对一个实体,可以在这里配置其在数据库中的数据表关系、数据约束及各个数据字段的每一个细节配置 阅读全文
摘要:
本系列教程中,我们将一步一步实现一个博客(BlogsPack)的业务模块,并对使用OSharp框架进行业务实现的过程涉及的框架知识进行全面的讲解。
通过学习本系列教程,你将对OSharp框架的业务实现有个较全面的了解,你将学习到框架的如下知识点 阅读全文
摘要:
每一个新项目,都离不开身份认证,权限授权,系统配置,还有相应的前端操作界面等基础而重复的工作,如果每一个新项目都要从0开始做这些重复性工作,是很无味而繁琐的。因此,OSharp 框架制作了一个基于 dotnet cli 命令行工具的快速启动模板 阅读全文
摘要:
OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于`.NetStandard2.0`开发的一个`.NetCore`快速开发框架。这个框架使用最新稳定版的`.NetCore SDK`(当前是.NET Core 2.2),对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、权限授权等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net Core 框架更易于应用到实际项目开发中。 阅读全文
摘要:
OSharp Framework with .NetStandard2.0(OSharpNS)是.NetStandard2.0为目标框架,在AspNetCore的现有组件 Microsoft.Extensions.DependencyInjection,Microsoft.Extensions.Configuration,
Microsoft.Extensions.Logging,Microsoft.Extensions.Caching,Microsoft.EntityFrameworkCore等 上进行构建的快速开发框架。 阅读全文
摘要:
一个编译的BUG,在原生的VS2015中没有问题,但更新至VS2015 Update1之后就有了,大概是Update1用了新的编译器,害得我好苦。经测试,VS2013 Update5中也存在这个问题,大概是用了相同的编译器。 下面我们来重现这个BUG,用最简洁的代码来重现这个BUG。 测试代码 一个 阅读全文
摘要:
OSharp项目的开发是持续不断的进行的,为方便大家了解框架已完成了什么功能了?正在开发的或未开始的功能都有什么?想参与OSharp开发的话,又可以做些什么事呢,现将开发计划与进度列举如下,希望能帮助大家更好的理解OSharp的现有功能及未来发展方向。 阅读全文
摘要:
相对于OSharp 3.0,3.3版本最大的更新,就是从框架级别定义了初始化流程,对初始化功能进行了抽象与封装,不依赖于第三方实现,第三方实现仅作为可替换的服务实现方案存在。
例如,依赖注入功能中,接口与其实现类的映射配置,对象容器的构建,对象的解析获取,都将通过框架定义的API来完成,而Autofac,仅作为这些功能的实现方存在,如果不想使用Autofac,则可以很方便的切换成别的IoC组件。
具体的初始化功能是怎样抽象与定义的,我们将在后续文章中逐个进行详解,这里先从整体来看看整个初始化过程是怎样的。 阅读全文
摘要:
经过这段时间的发展,OSharp项目已经比较算比较成熟了,能看得过眼,算是拿得出手了,现在也重新提交到了github开源平台中,开源地址依然为:
https://github.com/i66soft/osharp
之前的旧版本,已经更名为osharp.v2,旧版本的地址为:https://github.com/i66soft/osharp.v2,请注意区分。
欢迎大家关注(Watch)、支持(Star)、参与(Fork)《OSharp快速开发框架》开源项目的发展。 阅读全文
摘要:
在日志开发中,有些日志记录需求是常规需要的,比如操作日志,数据变更日志,系统异常日志等,我们希望把这些常规需求都集成到OSharp框架当中。有了内置的支持,在做开发的时候,只需要很简单的配置,就可以实现相关需求。
关于三类日志,这里先简要描述一下:
操作日志:粗略描述系统用户(如管理员、业务人员、会员等)对系统的业务操作,只需要说清楚“XXX用户在XXX时间做了XXX操作”
数据日志:有时候,为了追溯用户的业务操作对系统产生的影响,需要记录数据变更细节,这就是数据日志
系统日志:主要记录系统在运行过程中产生的与业务无关的常规或异常的日志信息,这些日志信息通常由系统维护人员或开发人员查看 阅读全文
摘要:
经过最近一段时间的努力,OSharp3.0新增了不少功能,如框架初始化流程,多数据库多上下文的支持,分类日志记录等,包含功能权限与数据权限的权限系统正在设计当中,基于实体配置的缓存系统,在计划当中。
从OSharp3.0开始,远离喧嚣的开源环境,由几个志同道合的小伙伴沉下心来,认真的去继续开发OSharp框架。做出变更如下:
OSharp3.0之前的源代码,仍然在github.com上面进行托管,但不再积极更新。
OSharp3.0及之后的源代码,仅在团队成员之间流通。
nuget 上面的类库,将持续更新,提供“非加密的dll类库文件,pdb调试文件,xml注释文件”的方式提供使用,有心人仍然可以通过各种途径很容易阅读到项目的源代码的。
配合OSharp3.0的新增功能,本系列博客将继续更新,对新增功能将会的详尽的技术描述,欢迎喜欢本系列的博友继续关注。 阅读全文
摘要:
日志记录对于一个系统而言,重要性不言而喻。日志记录功能在系统开发阶段,往往容易被忽略。因为开发阶段,程序可以调试,可以反复的运行以查找问题。但在系统进入正常的运行维护阶段,特别是在进行审计统计的时候,追踪问题的时候,在追溯责任的时候,在系统出错的时候等等场景中,日志记录才会显示出它不可替代的作用。记录的日志,平时看似累赘,只有在需要的时候,才会拍大腿后悔当初为什么不把日志记录得详细些。日志系统,是一个非常基础的系统,但由于需求的复杂性,各个场景需要的日志分类,来源,输出方式各有不同,日志系统又是一个相对复杂的系统。下面我们就来解说一下,OSharp开发框架的日志系统设计中,怎样来应对这些复杂性。 阅读全文
摘要:
数据层设计中,我们主要设计了数据对对外开放的 实体基类EntityBase,单元操作接口IUnitOfWork 和 数据仓储接口IRepository,下面我们来解说怎样来使用 EntityFramework 对这些数据访问需求进行实现。EntityFramework 的实现中,我们不仅要实现以上设计的两个接口,还要做以下几件事:1.设计一个与 业务实体解耦的 EntityFramework数据上下文类。2.设计 实体加载方案,将 业务实体 加载到上下文中。3.设计数据迁移方案,对 EntityFramework 的运行环境进行初始化。4.使用 已初始化的上下文 实现 数据仓储操作 阅读全文
摘要:
数据层设计真是一个百说不厌的话题,大系统说并发量,说高性能;小系统追求开发效率,易维护性各有各的追求。
OSharp 开发框架的定位是中小系统, 数据层的开发效率与易用性的权重就比较高了,所以,使用ORM当然是首选。在 .net 环境下,有众多的闭源的开源的优秀的ORM组件,从各方便对比来看,EntityFramework 是不二之选。一提起 EntityFramework,不少同学又要蠢蠢欲动来吐槽其性能了。其实,经过几个版本的更新换代,现在的稳定版 EntityFramework 6 已经相当好用了,nuget 上截止到目前 “8,830,918 total downloads” 已经足够能说明问题了,EntityFramework 在整个 .net 世界是相当受欢迎的。不过,不管哪个技术平台,能不能用好一个技术与技术水平有很大的关系,如果没追求,随处的 select * from 阅读全文
摘要:
一个好的分层式结构,可以使得开发人员的分工更加明确。一旦定义好各层次之间的接口,负责不同逻辑设计的开发人员就可以分散关注,齐头并进。
OSharp开发框架约定的分层方案,依然是传统的三层(数据层 - 业务层 - 展现层)分层方式,但也有自己的特点:使用了三层分层方式,但并不严格遵守传统三层的“各层职责极其分明”的约定;参考了“领域驱动设计”的一些思想,但为了保证性能,并不使用 DDD 的聚合模型。 阅读全文
摘要:
本文定义(收集)了大量实用的扩展方法,从泛型、字符串、类型、随机数、参数检查、Expression表达式、集合类操作等方面进行分类解说。
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。 阅读全文
摘要:
本篇将继续深入EasyUI的后台页面构建,使用前面定义的父视图(_DataGridLayout.cshtml)进行复杂表格布局,以及前端向后端提交数据的一些操作细节 阅读全文