什么是Rafy框架?

-------- Rafy 是一个面向企业级开发的插件化快速开发框架。

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框架的更多相关文章

  1. 使用 NuGet 下载最新的 Rafy 框架及文档

    为了让开发者更方便地使用 Rafy 领域实体框架,本月,我们已经把最新版本的 Rafy 框架程序集发布到了 nuget.org 上,同时,还把 RafySDK 的最新版本发布到了 VisualStud ...

  2. Rafy 框架 - 通用查询条件(CommonQueryCriteria)

    在应用开发过程中,有 80% 的场景下,开发者所需要的实体查询,查询条件中其实都是一些简单的属性匹配,又或是一些属性匹配的简单组合.Rafy 为这样的场景提供了更为方便使用的 API:CommonQu ...

  3. 一位同事对 Rafy 框架的一些建议及我的回复

    下面是一位同事对当前的产品开发框架提出的一些建议,以及我的回复.我觉得一些问题提得有一定的代表性,在征得本人同意后,将本邮件发布在博客中. 同时,也非常希望对框架.产品有好的建议的小伙伴,都可以给我发 ...

  4. Rafy 框架 - 使用 SqlTree 查询

    本文介绍如何使用 Rafy 框架中的 Sql Tree 查询: 除了开发者常用的 Linq 查询,Rafy 框架还提供了 Sql 语法树的方式来进行查询. 这种查询方式下,开发者不需要直接编写真正的 ...

  5. Rafy 框架 - 流水号插件

    Rafy 框架又添新成员:流水号插件.本文将解释 Rafy 框架中的流水插件的场景.使用方法. 场景 在开发各类数据库应用系统时,往往需要生成从一开始的流水号,有时还需要按月或者按日进行独立生成,如下 ...

  6. Rafy 框架 - 幽灵插件(假删除)

      Rafy 框架又添新成员:幽灵插件.本文将解释该插件的场景.使用方法.原理.   场景 在开发各类数据库应用系统时,往往需要在删除数据时不是真正地删除数据,而只是把数据标识为'已删除'状态.这些数 ...

  7. 快速开发~Rafy框架的初步认识

    当我们开始使用EF的同时,是不是就会更好的认识了其他的ORM框架,最近接触了Rafy的使用,感觉还是蛮有兴趣去学习的,虽然最初的我到现在看的并不深入,但是我个人感觉还是可以简单地做一些总结的啦,或许语 ...

  8. Rafy 框架 - 时间戳插件

    本文将解释 Rafy 框架中的时间戳插件的场景.使用方法.原理. 场景 在开发各类数据库应用系统时,业务领域实体往往需要包含"创建时间"."最后更新时间".&q ...

  9. Rafy 框架 - 实体支持只更新部分变更的字段

    Rafy 快一两年没有大的更新了.并不是这个框架没人维护了.相反,主要是因为自己的项目.以及公司在使用的项目,都已经比较稳定了,也没有新的功能添加.但是最近因为外面使用了 Rafy 的几个公司,找到我 ...

随机推荐

  1. wpf 控件大小随窗体大小改变而改变

    WPF可以直接通过设置图形类控件的水平和垂直Alighment为Stretch实现用一个ViewBox装上所有的Window内容然后当window缩放时就可以一起放大缩小了ViewBox的显示机制是, ...

  2. C# ArrayList的使用方法小总结

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  3. 解决VS2013 git客户端遇到的一些问题

    分支问题 我在网上的托管环境(github)新建项目的时候有生成readme文件.在本地初始化项目添加git作为项目管理时,填写远程地址一定要以https形式,然后发布会出错,提示 在git命令行好像 ...

  4. Java异常捕获之一道try-catch-finally语句题

    今天,学习了try-catch-finally语句,本来觉得蛮简单.易懂的.搜了一道相关类型的题.结果信心被泼了盆冷水.先把题Mark一下,出去透透风. public class TestEx { p ...

  5. 撩课-Web大前端每天5道面试题-Day31

    1.web storage和cookie的区别? Web Storage的概念和cookie相似, 区别是它是为了更大容量存储设计的. Cookie的大小是受限的, 并且每次你请求一个新的页面的时候C ...

  6. linux安装MySQL5.7记录

    目录 linux安装MySQL5.7记录 1. 在根目录下创建文件夹/software和数据库数据文件/data/mysql 2. 从官网下载相应的MySQL版本 3. 解压并移动到/software ...

  7. 浙大月赛ZOJ Monthly, August 2014

    Abs Problem Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge Alice and Bob is playing a ga ...

  8. css3 flex弹性盒子布局梳理,打通任督二脉

    挺早就接触了css的flex布局,深入使用也就是在近期移动端开发.老来多健忘,只能自己梳理一下知识点,当做温故知新吧. ,请原谅小白的才疏学浅,写的不到位的地方请指正. flex属性用于设置或检索弹性 ...

  9. layui数据表格的td模板

    1.常用操作模板 <script type="text/html" id="userbar"> <a class="layui-bt ...

  10. 设计模式(9)--Composite(组合模式)--结构型

    1.模式定义: 组合模式属于对象的结构模式,有时又叫做“部分——整体”模式.组合模式将对象组织到树结构中,可以用来描述整体与部分的关系.组合模式可以使客户端将单纯元素与复合元素同等看待. 2.模式特点 ...