基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(一)
2013-11-12 20:00
567 查看
Orchard CMS是针对CMS开发的,对于很多开发需求来说,内容管理这块儿可能并不需要,而需要它的模块式开发模式。所以我这里通过对OrchardCMS进行瘦身,去除 内容管理部分的内容,保留简单的运行环境和基础的模块。需要做的工作:去除Orchard Framework的内容管理部分,同时去除Orchard Framework依赖内容管理的相关内容。去除Orchard Core部分的部分module,只保留Sharpe和Setting两个模块。去除内容管理和博客管理的相关模块,只保留支持模块启用和停用以及皮肤模块。这里我只是对OrchardCMS的代码进行了瘦身,所以相关的license请参考Orchard CMS的。Github上的源代码: https://github.com/nicholaspei/OrchardNoCMS为什么需要对Orchard CMS瘦身?在我们的项目中,需要一个类似于Java的OSGI框架。发现Orchard CMS是可以达到这个要求的,自己做的话,时间不够,整个成员能力也够呛。所以选择了Orchard CMS,但是这个CMS中,太多的数据库表和模块都是为了CMS服务的,而我们的业务中基本上不需要或者用CMS配置字段很难达到业务要求。于是我就对OrchardCMS进行了瘦身,只保留热插拔模块式开发,同时去除了大部分表,只保留6个表。为了对得起开源,我就把自己整理好的代码分享出来,希望大家能够一起改进。https://github.com/nicholaspei/OrchardNoCMS
首先看一下最后完成的代码目录和之前的代码目录:
只保留了相当少的一部分,这就是Orchard可以运行的最小框架了。Orchard.CodeGeneration是为了创建模块的。而HelloWorld模块是为了测试模块式开发创建的新模块。当把ContentManagement部分的代码去掉时,真的是全屏报错啊。很蛋疼。。经过不懈的努力,让整个Orchard.Framework跑起来了。接下来蛋疼的是Orchard.Core。这里最先包含太多模块,Container,Contents,Dashboard等,大部分都依赖于ContentManagement。最后通过分析代码,发现其实必须的模块式Settings和Shapes模块。Settings来获取站点运行时需要的信息,当前语言,时区等。Shapes是用来把上下文转换成Html返回给浏览器的。最初没有把Shapes改好,所以出现了Action执行了,但是View却为空,发现ViewEngine也找到了页面,却显示不出内容来。默认的Orchard是提供了模块的管理页面,皮肤的管理页面等。我个人觉得其实只需要提供控制台的模块管理就可以啦。支持的命令如下:
默认命令中没有feature update,所以我增加了该命令,可以在模块的数据结构发生改变时,通过执行feature update来执行Migration。另外,产品或者项目中,有共享模块的情况,所以接下来我会把Orchard.Package模块也集成进去。并加入自己的一些想法,加入NuGet更好的支持,让共享模块更加灵活。
首先看一下最后完成的代码目录和之前的代码目录:
只保留了相当少的一部分,这就是Orchard可以运行的最小框架了。Orchard.CodeGeneration是为了创建模块的。而HelloWorld模块是为了测试模块式开发创建的新模块。当把ContentManagement部分的代码去掉时,真的是全屏报错啊。很蛋疼。。经过不懈的努力,让整个Orchard.Framework跑起来了。接下来蛋疼的是Orchard.Core。这里最先包含太多模块,Container,Contents,Dashboard等,大部分都依赖于ContentManagement。最后通过分析代码,发现其实必须的模块式Settings和Shapes模块。Settings来获取站点运行时需要的信息,当前语言,时区等。Shapes是用来把上下文转换成Html返回给浏览器的。最初没有把Shapes改好,所以出现了Action执行了,但是View却为空,发现ViewEngine也找到了页面,却显示不出内容来。默认的Orchard是提供了模块的管理页面,皮肤的管理页面等。我个人觉得其实只需要提供控制台的模块管理就可以啦。支持的命令如下:
默认命令中没有feature update,所以我增加了该命令,可以在模块的数据结构发生改变时,通过执行feature update来执行Migration。另外,产品或者项目中,有共享模块的情况,所以接下来我会把Orchard.Package模块也集成进去。并加入自己的一些想法,加入NuGet更好的支持,让共享模块更加灵活。
相关文章推荐
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二)
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--AOP编程
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--瘦身计划
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--模块开发
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--BootStrap
- 终于找到了一个基于ASP.NET MVC框架下的CMS系统——Orchard!
- 基于ASP.NET MVC框架开发Web论坛应用程序
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之自定义表单开发随笔四
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架开发随笔一
- 分享技术:基于ASP.NET MVC+漂亮UIBootstrap的敏捷开发框架开发随笔一
- Orchard一个基于ASP.NET MVC下的CMS系统。
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之工作流开发随笔三
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之自定义表单开发随笔四
- cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(一)
- 基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
- 开发框架(OrchardNoCMS)介绍(一)
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架开发随笔一
- cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(二)
- 介绍一个基于ASP.NET MVC的框架Catharsis
- 介绍一个基于ASP.NET MVC的框架Catharsis