Rafy框架
l 什么是Rafy框架?
-------- Rafy 是一个面向企业级开发的插件化快速开发框架。
l Rafy的优点是什么?
------快速开发、产品线工程、一套代码可同时生成并运行 C/S、单机版、B/S 三种应用程序。
l Rafy框架怎么用?
Rafy User Guide : http://zgynhqf.github.io/Rafy --网页版的Rafy手册
上面这一套是我的学习思路。
Rafy笔记
下面我把自己的学习笔记贴一下。
1、 n+1 问题的原因是懒加载
遍历一个集合,集合中有n个A类,A类中又有一个B类类型的属性它被标记为延迟加载或者说懒加载。那么在遍历过程中,如果访问到这个特殊属性,就会去连接n次数据库这会导致遍历用时变长。这就是n+1问题。
解决方案:
贪婪加载。慕名思意:你要一口吃个饺子加两瓣蒜。
Rafy框架提供这一功能,实际上你根本不用担心怎么做,因为它就是一个参数,告诉框架你要同时加载的是b类中的某个属性。
2、 冗余属性 ==》数据库表中冗余字段 提升性能
传统RBAC大家都知道,那么基于这五张表查询某个用户的所有权限名如何查询呢?这是实际中存在的问题,很明显这要做很多联合查询,无论是ado.net还是ef 查询过程都不会很简单,查询速度都不会很快。怎么办?
解决方案:
我们可以把用户角色关联表修改为用户角色权限关联表
也就是说,我们把权限冗余到用户角色关联表里。然后我们就可以很轻松的、很快速的查询到某个用户的所有权限。但这会引出数据同步的问题。
Rafy框架提供了冗余属性,框架会自动维护这个冗余属性生成的数据库里的冗余字段,而且这个属性是只读的(相当于缓存其他表的列)。
3、 引用、组合
引用关系是一种常用的多对一关系。可以表示诸如:“A使用B”、“A按B分类” 等概念。注意是多对一!
引用关系分可空引用、不可空引用。
组合关系是一种一对多关系,是最常用的一种父子关系。它表示一个实体类从属于另一实体类,两个实体类组合在一起,用于表示领域中一个具体的概念。 例如,在开发过程中,常常听说的主从表、父子表、主细表,都是这种结构。
4、 大数据属性
在使用懒加载时考虑到某些属性存储的信息量会很大,而我们并不需要这一属性,可是懒加载加载的是一整个对象,那没办法只能浪费内存、浪费性能了。
解决方案:标记为大数据属性即可。实际情况有二:
读、懒加载:当需要使用内容时,框架才会从数据库中加载该属性的 值
写、按需更新:当更新数据库时,只有对大数据属性变更后,对应的 Sql 更新语句中才会更新该字段。
5、 树形实体-为了自关联
引入一个情景:
商品分类:数码、家电、手机、耳机、耳机配件
很明显,有一张商品分类表存储这些信息,数码》手机》耳机》耳机配件
那么这个层级关系如何存储呢?毫无疑问用一个Pid也就是上级id的一个标识即可。问题就产生了:上级id需要维护。
Rafy提供了树形实体这一概念,并且框架会自动维护父对象id,还提供了查询的方法。
上面是基础的领域实体,也是我个人觉得最重要的。
用Rafy读写数据
下面到了怎么读写数据了。
其实框架与vs集成,平时建的是类,安装rafy的vs插件后就可以直接创建rafy领域实体和rafy领域实体仓库了。所有的读写都要通过仓库。
通过仓库的读写就非常简单了。具体的请参考手册。
Rafy的设计
1、 orm 框架 比如code first、自动生成数据库、连接多种数据库等不再赘述了。
2、 插件化快速开发、比如幽灵插件(框架自动维护的软删除)、工作流等
3、 面向服务、领域驱动、模型驱动设计。
领域实体设计是整个系统设计的源头;基于实体,设计出相应的领域服务;然后再生成数据库;再生成界面。就可以快速地开发出完整的系统。
在Rafy中创建服务非常简单,请参考Rafy User Guide : http://zgynhqf.github.io/Rafy --网页版的Rafy手册。
注意!
1、 sql跟踪日志文件为单文件。(有一个例子,在为客户部署的时候忘记关闭sql日志记录的功能,后面维护的时候发现已经 50多G 了)
2、 文件(或类)依赖关系不明确(最好整理文档)
3、 保存的时候是全字段保存
4、 要注意使用 事务控制级别建议(Searilzable 级别)。
Rafy框架的更多相关文章
- 使用 NuGet 下载最新的 Rafy 框架及文档
为了让开发者更方便地使用 Rafy 领域实体框架,本月,我们已经把最新版本的 Rafy 框架程序集发布到了 nuget.org 上,同时,还把 RafySDK 的最新版本发布到了 VisualStud ...
- Rafy 框架 - 通用查询条件(CommonQueryCriteria)
在应用开发过程中,有 80% 的场景下,开发者所需要的实体查询,查询条件中其实都是一些简单的属性匹配,又或是一些属性匹配的简单组合.Rafy 为这样的场景提供了更为方便使用的 API:CommonQu ...
- 一位同事对 Rafy 框架的一些建议及我的回复
下面是一位同事对当前的产品开发框架提出的一些建议,以及我的回复.我觉得一些问题提得有一定的代表性,在征得本人同意后,将本邮件发布在博客中. 同时,也非常希望对框架.产品有好的建议的小伙伴,都可以给我发 ...
- Rafy 框架 - 使用 SqlTree 查询
本文介绍如何使用 Rafy 框架中的 Sql Tree 查询: 除了开发者常用的 Linq 查询,Rafy 框架还提供了 Sql 语法树的方式来进行查询. 这种查询方式下,开发者不需要直接编写真正的 ...
- Rafy 框架 - 流水号插件
Rafy 框架又添新成员:流水号插件.本文将解释 Rafy 框架中的流水插件的场景.使用方法. 场景 在开发各类数据库应用系统时,往往需要生成从一开始的流水号,有时还需要按月或者按日进行独立生成,如下 ...
- Rafy 框架 - 幽灵插件(假删除)
Rafy 框架又添新成员:幽灵插件.本文将解释该插件的场景.使用方法.原理. 场景 在开发各类数据库应用系统时,往往需要在删除数据时不是真正地删除数据,而只是把数据标识为'已删除'状态.这些数 ...
- 快速开发~Rafy框架的初步认识
当我们开始使用EF的同时,是不是就会更好的认识了其他的ORM框架,最近接触了Rafy的使用,感觉还是蛮有兴趣去学习的,虽然最初的我到现在看的并不深入,但是我个人感觉还是可以简单地做一些总结的啦,或许语 ...
- Rafy 框架 - 时间戳插件
本文将解释 Rafy 框架中的时间戳插件的场景.使用方法.原理. 场景 在开发各类数据库应用系统时,业务领域实体往往需要包含"创建时间"."最后更新时间".&q ...
- Rafy 框架 - 实体支持只更新部分变更的字段
Rafy 快一两年没有大的更新了.并不是这个框架没人维护了.相反,主要是因为自己的项目.以及公司在使用的项目,都已经比较稳定了,也没有新的功能添加.但是最近因为外面使用了 Rafy 的几个公司,找到我 ...
随机推荐
- wpf 控件大小随窗体大小改变而改变
WPF可以直接通过设置图形类控件的水平和垂直Alighment为Stretch实现用一个ViewBox装上所有的Window内容然后当window缩放时就可以一起放大缩小了ViewBox的显示机制是, ...
- C# ArrayList的使用方法小总结
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
- 解决VS2013 git客户端遇到的一些问题
分支问题 我在网上的托管环境(github)新建项目的时候有生成readme文件.在本地初始化项目添加git作为项目管理时,填写远程地址一定要以https形式,然后发布会出错,提示 在git命令行好像 ...
- Java异常捕获之一道try-catch-finally语句题
今天,学习了try-catch-finally语句,本来觉得蛮简单.易懂的.搜了一道相关类型的题.结果信心被泼了盆冷水.先把题Mark一下,出去透透风. public class TestEx { p ...
- 撩课-Web大前端每天5道面试题-Day31
1.web storage和cookie的区别? Web Storage的概念和cookie相似, 区别是它是为了更大容量存储设计的. Cookie的大小是受限的, 并且每次你请求一个新的页面的时候C ...
- linux安装MySQL5.7记录
目录 linux安装MySQL5.7记录 1. 在根目录下创建文件夹/software和数据库数据文件/data/mysql 2. 从官网下载相应的MySQL版本 3. 解压并移动到/software ...
- 浙大月赛ZOJ Monthly, August 2014
Abs Problem Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge Alice and Bob is playing a ga ...
- css3 flex弹性盒子布局梳理,打通任督二脉
挺早就接触了css的flex布局,深入使用也就是在近期移动端开发.老来多健忘,只能自己梳理一下知识点,当做温故知新吧. ,请原谅小白的才疏学浅,写的不到位的地方请指正. flex属性用于设置或检索弹性 ...
- layui数据表格的td模板
1.常用操作模板 <script type="text/html" id="userbar"> <a class="layui-bt ...
- 设计模式(9)--Composite(组合模式)--结构型
1.模式定义: 组合模式属于对象的结构模式,有时又叫做“部分——整体”模式.组合模式将对象组织到树结构中,可以用来描述整体与部分的关系.组合模式可以使客户端将单纯元素与复合元素同等看待. 2.模式特点 ...