在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 框架”小组。