zoukankan      html  css  js  c++  java
  • Rafy框架

    什么是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 级别)。 

  • 相关阅读:
    封装
    魔术方法类与有关面向对象的关键字
    JS基础
    轮播效果
    进度条效果
    2018年6月
    2018年5月
    Monte Carlo tree search 学习
    2018年4月
    pachi 学习
  • 原文地址:https://www.cnblogs.com/zhuwansu/p/zhuzhuzhu.html
Copyright © 2011-2022 走看看