Orchard 与 ABP架构比较 (aspnetboilerplate)
前言: ABP框架经常在一些.NET群中听群友提起,以前也浏览过官网,大致了解它是一个框架,直到今天本人才正式下载源码入门 ...
经过两个小时的ABP中文文档入门(感谢各位辛勤的翻译者) ,大致了解到 ABP框架提供了一些类似 Orchard的功能,如 日志,多租户,事件总线,多语言等.
由于刚刚接触ABP框架,下面来谈谈我对它的基本理解,不当之处敬请各位指正 :
Abp | Orchard | 作用 | |
项目定位 | 开发框架 | 内容管理系统(CMS)+开发框架 | |
基础框架 | aspnetboilerplate(ABP.dll) (源码) | Orchard.Framework | 两者都不能独立运行, 提供框架基础架构 |
核心实现 | module-zero (源码), 纯库,没有UI实现部分,不能独立运行 | Orchard.Core(核心模块集合,里面的每一个文件夹均为一个模块), 有UI实现. |
ABP提供常用的基础功能,ABP有用户,角色,多租户,配置管理,Orchard有CMS相关的核心模块 |
模块生成 | module-zero-template(源码),提供在线版. | Orchard.CodeGeneration(命令行) | ABP官网提供一个在线的模块创建功能(地址),此生成器有两个版本: 1.仅依赖核心ABP 2.依赖Module-Zero. ABP在创建模块的时候并没有提供输入一些meta信息,而orchard可以. |
一直以来,很多.NET开发者都非常喜欢Orchard这个项目,但是部分有洁癖的开发者总是想方设法将它剥离成一个干净的框架,如OrchardNoCms,
如今ABP可能是你最佳的选择:
1 .ABP拥有非常类似Orchard的项目结构(笔者甚至认为ABP的灵感取自Orchard).
2. 功能上也提供与Orchard同等的特性, 如多租户,模块,日志,用户,角色,授权等.
3. ABP没有附带任何额外的业务代码, 用户与角色这样核心功能也在是Zero模块中实现 ,如果你不喜欢可以不用.
利用ABP框架进行二次开发,如果不关注框架本身,直接使用线上的地址生成模块下载到本地, 再用nuget下载 Abp.dll和 Abp.zero.dll(可选)及其它三方依赖就可以直接开发Web应用程序.
ABP框架为企业用户提供一个付费的后台管理实现 : aspnetzero(地址,$699,$1699,$2799 三种license) , 利用这个增值模块, 你可以拥有一套基于Bootstrap的后台管理UI来管理多租户及用户角色等基本信息,当然你也可以使用它开发其它功能.
好了最后再说一句:
Abp尚在主力开发期,截止目前还未到达1.0版,接口变更很频繁,如果用于产品环境将要面临升级与不升级的纠结中!
如果你非侵入式的进行ABP二次开发,升级时改动略小, 如果是侵入式的,那么升级将是非常痛苦的事情!
Orchard是一个经历6年的项目,由微软ASP.NET小组成员主刀, 目前进入主力维护优化期,接口非常稳定,而且使用Orchard开发,可以尽可能的非侵入(本人一直是非侵入坚持者),
模块间并不需项目依赖,即使需要调用另一个模块的方法(模块通信),也可以使用Orchard强大的事件总线实现!
下面来一张ABP架构简图