距离“上次框架完整发布”已经过去了一年半了,应群中的朋友要求,决定在国庆放假之际,把最新的框架发布出来,并把帮助文档整理出来,这样可以方便大家快速上手。

 

发布内容


注意,本次发布,只包含 Rafy 框架中的领域实体框架及相关文档。不包含“界面自动生成”等其它组件。

安装新的发布包:《使用 NuGet 下载最新的 Rafy 框架及文档》。

网页版用户手册(实时更新):《http://zgynhqf.github.io/Rafy》。

老版本及一些辅助工具的发布包地址:http://pan.baidu.com/s/1ntHlFIh

QQ群:群号 175227630,。QQ 群方便大家日常对 Rafy 技术交流,欢迎加入。

Rafy 框架小组(论坛):http://home.cnblogs.com/group/Rafy/。小组可讨论 Rafy 相关的任何话题,提出的问题会被优先解决。在使用过程中,有任何心得体会,也可发布到本小组。字数不限,文体不限,分享就是贡献,哈。:) )。

更名:框架名字变更为 Rafy [rɑ:fi]。

框架发布记录


200909:发布了 1.0 版本,《信息系统开发平台openexpressapp 1.0发布》。

201104:发布快速开发视频:《OEA 框架演示 - 快过原型的开发》。

201203:发布了 2.9 版本,《OEA框架 2.9 Pre-Alpha 源码公布》,并创建了 QQ 技术交流群,群号:175227630。

201310:更名为 Rafy、发布领域实体框架 2.22.2067 版本、帮助文档 1.0、建立“Rafy 框架”小组。

201310:发布最新示例:《示例:使用 Rafy 领域实体框架转换传统三层应用程序》。

201412:RafySDK 发布到 VS Extension Galler、Rafy程序集发布到 NuGet 中:《使用 NuGet 下载最新的 Rafy 框架及文档》。

201501:Rafy 源码发布到 GitHub.com上:《发布 Rafy 源码到 GitHub》。

201508:发布最新的 Rafy 框架学习培训视频:《Rafy 领域实体框架 - 公司内部培训视频》。

201509:发布网页版的 Rafy 用户手册:《Rafy 框架-发布网页版用户手册》。

Rafy 领域实体框架简要说明


Rafy 领域实体框架是一个 Rafy 系列框架中的 ORM 框架,可脱离其它组件单独运行,为开发人员提供了强大的功能、极高的开发效率。同时集领域驱动设计、面向服务架构、模型驱动架构、产品线工程方法于一身,是 Rafy 系列框架中其它部分(如界面生成框架)的基础。

特点

•    领域驱动设计

相对于一些注重概念、使用复杂的 DDD 框架,Rafy 更加注重实践。实现了 DDD 中与实际开发结合紧密的重要概念:聚合实体、标识、仓库、服务、分层架构、CQRS,同时保证了开发的易用性。

实体基类的设计支持关系的延迟加载、自动冗余属性、大对象属性、数据绑定、树型实体等。

实体使用了自定义属性系统(托管属性框架)。这使得运行时可以不再使用反射,而是使用内置的属性管理方式,运行效率更高。同时,这些属性的 API 直接公布,更方便开发人员编写面向自己应用的框架。

仓库基类则实现了组合实体的添加、删除、修改,并提供了大量的默认查询。

领域服务是跨组合实体的业务逻辑的封装体,也是 SOA 架构的基础。

图1-1 Rafy 与 VS 集成的领域实体关系图

图1-2 Rafy 领域服务

•    CodeFirst 开发模式

使用 Rafy 领域实体框架,采用 CodeFirst 开发模式,可以使得开发人员在开发过程中只关心领域实体的关系、属性,而不需要关心数据库结构的变化。

在开发过程中,只需要配置好数据库连接后,建库、建表、建字段都会由 Rafy 完成。实体结构上的变化:类型、属性、关系,都会由 Rafy 自动同步到数据库上。相对于传统的三层应用程序,在实体中添加、删除一个字段,开发人员不再需要修改应用程序的数据库、DAL、BLL代码,而由框架自动同步,大大提高了开发效率。

同时,生成的数据库满足第三泛式的要求。

图2 自动生成的数据库

•    多数据库支持

Rafy 领域实体框架支持把同一份实体代码映射到多种数据库。目前已经支持了 SqlServer 2005-2012、Oracle10,以及文件型数据库 SQLCE4。其它数据库的支持也在研发中。

图3 多数据库支持

•    支持部署为单机、分布式

使用 Rafy 编写的实体、服务,原生支持分布式部署。即可以部署为直接连接数据库,也可以部署为客户端通过服务器间接访问数据库。

Rafy 基于自定义的托管属性框架,在对实体进行序列化时,不会传输实体中默认的数据,提高了数据传输的效率。

图4 Client – DataBase 直联部署

图5 Client – Server – DataBase 分布式部署

•    与 VS 集成

Rafy 的一个重要作用就是为了提升开发效率,所以我们为 VisualStudio 开发了 RafySDK 插件,其中包含项目模板、代码生成、领域建模等功能。一体化的开发环境,可以更加快速地开发 Rafy 应用程序。

•    零配置

框架的使用对开发人员要求非常简单,默认情况下基本不需要作任何配置。这样提高了开发的效率。
Rafy 框架的快速开发思想之一是支持默认值,尽量少使用配置。在必要时,仅需非常少的配置即可达到运行时的灵活变化。

•    稳定、质量有保障

领域实体框架的代码行有 4 万多行。为了保证框架质量,我们为框架编写了 500 多个单元测试,以测试框架的各个功能。

优势

与 EF、NH 等传统 ORM 框架相比,使用 Rafy 领域实体框架的优势在于:

  • 传统 ORM 只是为了解决面向对象与关系数据库的映射,而 Rafy 解决的是领域实体与关系数据库的映射。(面向对象的映射解决的是一般性的实体关系到数据库的映射,包含:一对多、一对一、多对多、继承。而领域实体的映射,则专注于领域驱动设计中的继承关系、聚合关系、引用关系。Rafy 框架不仅解决了这些映射问题,还同时关注 DDD 中的仓库、服务、工厂、分层架构等概念。)

  • 传统 ORM 只做数据处理,开发人员不得不继续考虑很多其它的问题,例如分层架构、分布式传输、远程懒加载、界面数据绑定等功能;而 Rafy 则提供了一体化解决方案,包括:分层设计、仓库设计、分布式设计、托管属性设计、序列化设计、服务设计、界面绑定设计等。

  • Rafy 立足于开发实战。设计了全新的冗余属性,自动冗余、自动更新,开发者可大量使用冗余特性,而不再需要自行维护。

PS:

看着群友对框架的热情与期待,本人国庆假期放弃出玩,连续干了 7 天。昨天刚写完的帮助文档,期望大家使用后能有所帮助。更期望能得到你的反馈。

福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!的更多相关文章

  1. Rafy 领域实体框架演示(4) - 使用本地文件型数据库 SQLCE 绿色部署

    本系列演示如何使用 Rafy 领域实体框架快速转换一个传统的三层应用程序,并展示转换完成后,Rafy 带来的新功能. <福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!> ...

  2. Rafy 领域实体框架演示(3) - 快速使用 C/S 架构部署

    本系列演示如何使用 Rafy 领域实体框架快速转换一个传统的三层应用程序,并展示转换完成后,Rafy 带来的新功能. <福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!> ...

  3. Rafy 领域实体框架 - 公司内部培训视频

    本月给公司内部一个项目做架构重构,其中使用到了 Rafy 框架.所以我培训了 Rafy 领域实体框架的使用方法,过程中录制了视频,方便其他同事查看.现在把视频放到园里来分享下,有兴趣的朋友可以看看,有 ...

  4. 领域实体框架Rafy2 发布了

    在2009年我在codeplex发布了1.0版本OpenExpressApp,下载地址:http://openexpressapp.codeplex.com/.OEA 1.0 作为我十多年开发工作的一 ...

  5. Rafy 领域实体框架示例(1) - 转换传统三层应用程序

    Rafy 领域实体框架发布后,虽然有帮助文档,许多朋友还是反映学习起来比较复杂,希望能开发一个示例程序,展示如何使用 Rafy 领域实体框架所以,本文通过使用 Rafy 领域实体框架来改造一个传统的三 ...

  6. Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成

    前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 ORM 的功能.由于在 09 年最初设计时,ORM 部分的设计并不是最重要 ...

  7. Rafy 领域实体框架 - 树型实体功能(自关联表)

      在 Rafy 领域实体框架中,对自关联的实体结构做了特殊的处理,下面对这一功能进行讲解. 场景 在开发数据库应用程序时,往往会遇到自关联表的场景.例如,分类信息.组织架构中的部门.文件夹信息等,都 ...

  8. Rafy 领域实体框架演示(2) - 新功能展示

    本文的演示需要先完成上一篇文章中的演示:<Rafy 领域实体框架示例(1) - 转换传统三层应用程序>.在完成改造传统的三层系统之后,本文将讲解使用 Rafy 实体框架后带来的一些常用功能 ...

  9. Rafy 领域实体框架简介

    按照最新的功能,更新了最新版的<Rafy 领域实体框架的介绍>,内容如下: 本文包含以下章节: 简介 特点 优势 简介 Rafy 领域实体框架是一个轻量级 ORM 框架. 与一般的 ORM ...

随机推荐

  1. git 命令

    切换仓库地址: git remote set-url origin xxx.git切换分支:git checkout name撤销修改:git checkout -- file删除文件:git rm  ...

  2. 谱聚类(spectral clustering)原理总结

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...

  3. 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第十二节)

    好的,那么在上一节中呢,评论功能的后台已经写好了,这一节,先把这部分后台代码和前台对接一下. 1.评论功能实现 我们修改一下保存评论按钮的点击事件,用jQuery的方式获取文本框中的值,然后通过aja ...

  4. ASP.NET中画图形验证码

    context.Response.ContentType = "image/jpeg"; //生成随机的中文验证码 string yzm = "人口手大小多少上中下男女天 ...

  5. 你所能用到的BMP格式介绍

    原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...

  6. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  7. css3更改input单选和多选的样式

    在项目开发中我们经常会遇到需要更改input单选和多选样式的情况,今天就给大家介绍一种简单改变input单选和多选样式的办法. 在这之前先简单介绍一下:before伪类 :before 选择器向选定的 ...

  8. 电信计费业务:预后融合OCS到底应该实扣还是虚扣?

    引入OCS的初衷之一是为了让计费系统能够参与到用户的通讯控制中来,也就是所谓的实时信控.用户在没有余额时,通讯就会被停止,不会造成"天价欠费 ",一方面保障用户的利益,一方面也保障 ...

  9. 中文 iOS/Mac 开发博客列表

    中文 iOS/Mac 开发博客列表 博客地址 RSS地址 OneV's Den http://onevcat.com/atom.xml 一只魔法师的工坊 http://blog.ibireme.com ...

  10. 在开源中国(oschina)git中新建标签(tags)

    我今天提交代码到主干上面,本来想打个标签(tags)的. 因为我以前新建过标签(tags),但是我现在新建的时候不知道入库在哪了.怎么找也找不到了. 从网上找资料也没有,找客服没有人理我,看到一个交流 ...