领域实体框架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 ...
随机推荐
- php生成UUID
UUID含义是 通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, O ...
- 一种可以避免数据迁移的分库分表scale-out扩容方式
原文地址:http://jm-blog.aliapp.com/?p=590 目前绝大多数应用采取的两种分库分表规则 mod方式 dayofweek系列日期方式(所有星期1的数据在一个库/表,或所有?月 ...
- C#中的Linq to Xml详解
这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml.查询并修改xml.监听xml事件.处理xml流等内容,需要的朋友可以参考下 一.生成Xml 为了能 ...
- GDAL 遥感图像处理后的数据保存为图像文件的实现方法
在遥感图像处理中,GDAL库不仅能读取和处理大部分的遥感图像数据,而且还能够实现图像处理后将数据保存为图像的功能. 本文就详细介绍如何将内存中的图像数据保存为.tif格式. 首先,遥感数据处理完,保存 ...
- bash的循环中无法保存变量
在bash中,如果循环在一个子shell中运行,那么在循环中对循环外面的变量的更改将在循环退出后不可见.像下面的例子: #!/bin/sh python run.py | while read lin ...
- Visual Studio 新建项目报错" this template attempted to load component assembly 'NuGet.VisualStudio.Interop, ….".
"Error: this template attempted to load component assembly 'NuGet.VisualStudio.Interop, Version ...
- magic_quotes_gpc 、 magic_quotes_runtime 、 magic_quotes_sybase 介绍
一.三个配置项的作用与区别 magic_quotes_gpc 作用:对php服务器端接收的 GET POST COOKIE 的值执行 addslashes() 操作.作用范围是:WEB客户服务端.作用 ...
- Core Animation一些Demo总结 (动态切换图片、大转盘、图片折叠、进度条等动画效果)
前一篇总结了Core Animation的一些基础知识,这一篇主要是Core Animation 的一些应用,涉及到CAShapeLayer.CAReplicatorLayer等图层的知识. 先看效果 ...
- 在Windows2008系统中利用IIS建立FTP服务器
一.服务器管理器 1.2008的系统使用服务器管理器,选择角色,因为我之前已经开启了IIS服务器角色,所以我现在只要添加角色服务即可,如果你没有开启过的话,直接添加角色即可. 2.选择WEB服 ...
- Linux和UNIX监控
Linux和UNIX上的数据库监控工具包括监控CPU.内存.磁盘.网络.安全性和用户的监控工具.下面罗列了我们找到的有用工具及其简单描述. ps 显示系统上运行的进程列表 top ...