领域实体框架Rafy2 发布了
在2009年我在codeplex发布了1.0版本OpenExpressApp,下载地址:http://openexpressapp.codeplex.com/。OEA 1.0 作为我十多年开发工作的一个思想开发平台雏形,它的开源发布可以作为有志于自己开发框架平台的同学学习和借鉴,在园子里曾经也写过一系列的相关文章,例如 OpenExpressApp make business engineers develop applications 等。
很高兴在这么长的日子里,还时不时收到大家通过各种方式对OEA进展的关心,然而每每这个时刻我心里总觉得有点“对不起”大家,因为自从我迷恋上敏捷个人 http://agileme.codeplex.com/ 之后,我就开始移情别恋,不再追求OEA了。
OEA也可以作为你真正工作中的利器,OEA1.0在我的实际工作中已经使用过了,今天我要高兴的告诉大家,OEA一直以来并没有停止开发过,现在由胡庆访再主导开发中,他是我在工作中对框架平台开发中比较执着追求的一个同事,在对OEA1.0背后的开发思想的理解之上,在12年3月发布了框架2.0,经过在实际工作中大大小小项目的使用,OEA变得更为强大和有力。
今天,OEA改名为Rafy,并首次发布Rafy框架体系中的基础引擎:领域实体框架。至于Rafy代表什么含义,大家先来猜一下:)以下我简要的对Rafy进行一下说明,如果你希望试用一下,可以在 http://t.cn/zRyIPvd 下载
Rafy 领域实体框架简要说明
Rafy 集领域驱动设计、面向服务架构、模型驱动架构、产品线工程方法于一体,为开发人员提供了强大的功能、快速的开发效率以及快乐的体验。Rafy 领域实体框架是一个 ORM 框架,作为 Rafy 平台中其它部分(如界面生成框架)的基础,它也可脱离平台单独在你的工作环境中使用。
特点
1. 领域驱动设计
相对于一些注重概念、使用复杂的 DDD 框架,Rafy 更加注重实践。实现了 DDD 中与实际开发结合紧密的重要概念:聚合实体、标识、仓库、服务、分层架构、CQRS,同时保证了开发的易用性。
- 实体基类的设计支持关系的延迟加载、自动冗余属性、大对象属性、数据绑定、树型实体等。
- 实体使用了自定义属性系统(托管属性框架)。这使得运行时可以不再使用反射,而是使用内置的属性管理方式,运行效率更高。同时,这些属性的 API 直接公布,更方便开发人员编写面向自己应用的框架。
- 仓库基类则实现了组合实体的添加、删除、修改,并提供了大量的默认查询。
- 领域服务是跨组合实体的业务逻辑的封装体,也是 SOA 架构的基础。
2. CodeFirst 开发模式
使用 Rafy 领域实体框架,采用 CodeFirst 开发模式,可以使得开发人员在开发过程中只关心领域实体的关系、属性,而不需要关心数据库结构的变化。
- 在开发过程中,只需要配置好数据库连接,建库、建表、建字段都会由 Rafy 完成。
- 实体结构上的变化:类型、属性、关系,都会由 Rafy 自动同步到数据库上。
- 相对于传统的三层应用程序,在实体中添加、删除一个字段,开发人员不再需要修改应用程序的数据库、DAL、BLL代码,而由框架自动 同步,大大提高了开发效率。
3. 多数据库支持
Rafy 领域实体框架支持把同一份实体代码映射到多种数据库。目前已经支持了
- SqlServer 2005-2012
- Oracle10
- 以及文件型数据库 SQLCE4
- 其它数据库的支持也在研发中
4. 支持部署为单机、分布式
- 使用 Rafy 编写的实体、服务,原生支持分布式部署。
- Rafy 基于自定义的托管属性框架,在对实体进行序列化时,不会传输实体中默认的数据,提高了数据传输的效率。
5. 零配置
Rafy 框架的快速开发思想之一是支持默认值,尽量多用约定、少使用配置。在必要时,仅需非常少的配置即可达到运行时的灵活变化。
框架的使用对开发人员要求非常简单,默认情况下基本不需要作任何配置。这样提高了开发的效率。
6. 稳定、质量有保障
领域实体框架的代码行有 4 万多行。为了保证框架质量,我们为框架编写了 200 多个单元测试,以测试框架的各个功能。
优势
与 EF、NH 等传统 ORM 框架相比,使用 Rafy 领域实体框架的优势在于:
传统 ORM 只是为了解决面向对象与关系数据库的映射,而 Rafy 解决的是领域实体与关系数据库的映射。
传统 ORM 只做数据处理,开发人员不得不继续考虑很多其它的问题,例如分层架构、分布式传输、远程懒加载、界面数据绑定等功能;而 Rafy 则提供了一体化解决方案,包括:仓库设计、分布式设计、托管属性设计、服务设计、界面绑定设计等。
发布内容
本次发布,只包含 Rafy 框架中的领域实体框架及相关文档,不包含“界面自动生成”等其它组件。
- 发布包地址:http://t.cn/zRyIPvd。
- QQ群: QQ 群方便大家日常对 Rafy 技术交流,欢迎加入。
- Rafy 框架小组:http://home.cnblogs.com/group/103240/。小组可讨论 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 框架”小组。
关于作者
自从OEA1.0之后,OEA由胡庆访来主导开发,本篇文字也是基于他发布的blog更改而成,如果你支持OEA,欢迎大家继续支持Rafy以及作者胡庆访。
领域实体框架Rafy2 发布了的更多相关文章
- 福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!
距离“上次框架完整发布”已经过去了一年半了,应群中的朋友要求,决定在国庆放假之际,把最新的框架发布出来,并把帮助文档整理出来,这样可以方便大家快速上手. 发布内容 注意,本次发布,只包含 Rafy ...
- Rafy 领域实体框架 - 公司内部培训视频
本月给公司内部一个项目做架构重构,其中使用到了 Rafy 框架.所以我培训了 Rafy 领域实体框架的使用方法,过程中录制了视频,方便其他同事查看.现在把视频放到园里来分享下,有兴趣的朋友可以看看,有 ...
- Rafy 领域实体框架示例(1) - 转换传统三层应用程序
Rafy 领域实体框架发布后,虽然有帮助文档,许多朋友还是反映学习起来比较复杂,希望能开发一个示例程序,展示如何使用 Rafy 领域实体框架所以,本文通过使用 Rafy 领域实体框架来改造一个传统的三 ...
- Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成
前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 ORM 的功能.由于在 09 年最初设计时,ORM 部分的设计并不是最重要 ...
- Rafy 领域实体框架演示(4) - 使用本地文件型数据库 SQLCE 绿色部署
本系列演示如何使用 Rafy 领域实体框架快速转换一个传统的三层应用程序,并展示转换完成后,Rafy 带来的新功能. <福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!> ...
- Rafy 领域实体框架演示(3) - 快速使用 C/S 架构部署
本系列演示如何使用 Rafy 领域实体框架快速转换一个传统的三层应用程序,并展示转换完成后,Rafy 带来的新功能. <福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!> ...
- Rafy 领域实体框架演示(2) - 新功能展示
本文的演示需要先完成上一篇文章中的演示:<Rafy 领域实体框架示例(1) - 转换传统三层应用程序>.在完成改造传统的三层系统之后,本文将讲解使用 Rafy 实体框架后带来的一些常用功能 ...
- Rafy 领域实体框架 - 树型实体功能(自关联表)
在 Rafy 领域实体框架中,对自关联的实体结构做了特殊的处理,下面对这一功能进行讲解. 场景 在开发数据库应用程序时,往往会遇到自关联表的场景.例如,分类信息.组织架构中的部门.文件夹信息等,都 ...
- Rafy 领域实体框架简介
按照最新的功能,更新了最新版的<Rafy 领域实体框架的介绍>,内容如下: 本文包含以下章节: 简介 特点 优势 简介 Rafy 领域实体框架是一个轻量级 ORM 框架. 与一般的 ORM ...
随机推荐
- Swift 必备开发库 (高级篇)
1.CryptoSwift swift加密库, 支持md5,sha1,sha224,sha256... github地址: https://github.com/krzyzanowskim/Crypt ...
- SMON功能(二):合并空闲区间
SMON的作用还包括合并空闲区间(coalesces free extent) 触发场景 早期Oracle采用DMT字典管理表空间,不同于今时今日的LMT本地管理方式,DMT下通过对FET$和UET$ ...
- 使用cow将socks5代理转为http代理(Windows版)
自己租vps架设shadowsocks服务器,再配合chrome的SwitchyOmega插件科学上网一直很稳定,但是windows很多软件都不支持socks5,经常也会需要配置http代理做更新上传 ...
- WPF与winform与silverlight的区别
收到了一封学生的邮件: =========================== 金老师您好: 最近在学C#.NET,基本语法学习的差不多了,接下来准备学习图形界面设计部分.但是我目前对于.NET的Wi ...
- ios7 UITableView 分割线在 使用selectedBackgroundView 选中时有些不显示
UITableView 选中cell ,默认会有一个灰色的背景遮罩效果,这个灰色遮罩就是cell 自带的 selectedBackgroundView 我们可以设置selectedBackgroun ...
- 纯CSS实现图片抖动
实现方法: 1.将上文提到的以下JS内容删除: $(".imagelogo").mouseover(function() { obj = $(this); i = 5; timer ...
- Linux之crontab
一 cron crond位于/etc/rc.d/init.d/crond 或 /etc/init.d 或 /etc/rc.d /rc5.d/S90crond,最总引用/var/lock/subsys ...
- ecshop退出登录会清空购物车的bug优化,最完美解决方法
ecshop退出登陆后,会清空购物车,大家都应该知道有这样的勉强算bug的问题. 网上类似的教程相当多,但都有问题,说句不好听的,算是引新手入歧途! 总结网上方法如下: 1.修改init.php,把s ...
- 很好的一篇讲LTP在编解码中的作用的文章
原文链接 LONG-TERM PREDICTION by: Adit Aviv Kfir Grichman introduction: The speech signal has been ...
- Gamma校正与线性工作流
1 Gamma校正是什么?8位亮度值x(0-1)经过x^0.45的一个提亮过程. 2 为什么需要Gamma校正 人的眼睛是以非线性方式感知亮度,在自然界中,人感觉到的一半亮度其实只有全部能量的0.2, ...