Orchard CMS是针对CMS开发的,对于很多开发需求来说,内容管理这块儿可能并不需要,而需要它的模块式开发模式。所以我这里通过对OrchardCMS进行瘦身,去除 内容管理部分的内容,保留简单的运行环境和基础的模块。需要做的工作:

去除Orchard Framework的内容管理部分,同时去除Orchard Framework依赖内容管理的相关内容。

去除Orchard Core部分的部分module,只保留Sharpe和Setting两个模块。

去除内容管理和博客管理的相关模块,只保留支持模块启用和停用以及皮肤模块。

这里我只是对OrchardCMS的代码进行了瘦身,所以相关的license请参考Orchard CMS的。

Github上的源代码: https://github.com/nicholaspei/OrchardNoCMS

如果你所在的地区网络不能访问github,请从下面的链接下载:http://pan.baidu.com/s/1zifoC

为什么需要对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爱好者可以关注该项目,试着使用它,并提出你的意见和建议。

更新:

1.昨天有同学说没有数据库,运行不了,发现时因为我的.gitignore文件里把*.sdf文件过滤掉了。已经更新。

2.我会接下来写一系列文章结合现实的一些需求让大家深入了解下如何更好的开发一个模块。

3.如何在不改变已经发布的模块而扩展功能。(修改关闭,扩展开放)

4.模块之间如何做到运行依赖,而非依赖。(个人不是很推荐,只是现实中有时候需要用到)

5.整合bootstrap,提供一套完整的UI解决方案。

基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--瘦身计划的更多相关文章

  1. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二)

    基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二) 之前文章中给大家说明了下我这个小小的想法,发现还是有不少人的支持和关注.你们的鼓励是对我最大的支持. 我总结了了 ...

  2. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--AOP编程

    AOP编程在目前来说好像是大家都比较喜欢的.ASP.NET MVC中的Filter就是使用AOP实现的配置器模式.AOP在编码中的应用主要有如下几个方面: 日志记录,跟踪,优化和监控 事务的处理 持久 ...

  3. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--模块开发

    之前文章中给大家说明了下我这个小小的想法,发现还是有不少人的支持和关注.你们的鼓励是对我最大的支持. 我总结了了大家的评论,有以下几个问题: 1.希望有更多的文档说明. 2.希望介绍下Orchard的 ...

  4. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--BootStrap

    按照几个月之前的计划,也应该写一个使用Bootstrap作为OrchardNoCMS的UI库.之前这段时间都是在学习IOS开发,没顾得上写,也没顾得上维护OrchardNoCMS代码.看看我的活动轨迹 ...

  5. 基于ASP.NET MVC和Bootstrap搭建响应式个人博客站(一)

    1.0 为什么要做这个博客站? www.zynblog.com   在工作学习中,经常要搜索查找各种各样的资料,每次找到相关资料后都会顺手添加到浏览器书签中,时间一长,书签也就满了.而且下次再点击这个 ...

  6. 转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现

    基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现   概述 在日常开发中, 我们经常谈起模块化/插件化架构,这样可既可以提高开效率,又可以实现良好的扩展性,尤其对于产品化的系统有 ...

  7. 基于ASP.NET MVC的快速开发平台,给你的开发一个加速度!

    基于ASP.NET MVC的快速开发平台,给你的开发一个加速度! bingo炸了 2017/4/6 11:07:21 阅读(37) 评论(0) 现在的人做事情都讲究效率,最好能达到事半功倍那种效果,软 ...

  8. GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...

  9. ASP.NET MVC中商品模块小样

    在前面的几篇文章中,已经在控制台和界面实现了属性值的笛卡尔乘积,这是商品模块中的一个难点.本篇就来实现在ASP.NET MVC4下商品模块的一个小样.与本篇相关的文章包括: 1.ASP.NET MVC ...

随机推荐

  1. juqery 实现 防止当前页面重复点击,以减轻服务器压力

    <script> //防止当前页面重复点击,以减轻服务器压力 $(document).ready(function () { var current_url = location.path ...

  2. Play Framework安装和配置

    安装环境: jdk 1.7; play 1.3.1; eclipse 安装指南:http://play-framework.herokuapp.com/zh/install 安装Play Framew ...

  3. 使用git的分支功能实现定制功能摘取与组合的想法

    前言,这个想法应该是git比较通用的做法,只是我还没用过,所以把自己的想法记录在这里,督促自己以后按这个方式执行. 我们公司现在面临一个问题, 就是客户的定制需求很多,很杂,其中坑爹需求很多. 我还没 ...

  4. ADO.Net(三)——数据库操作类

    操作数据类 避免代码重用.造对象太多.不能分工开发 利用面向对象的方法,把数据访问的方式优化一下,利用封装类 一般封装成三个类: 1.数据连接类 提供数据连接对象 需要引用命名空间: using Sy ...

  5. JavaScript(七)——视频插入

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  6. [Linux 性能检测工具]VMSTAT

    VMSTAT NAME:          Vmstat: 报告虚拟内存统计 语法 :        vmstat [-a] [-n] [-t] [-S unit] [delay [ count]] ...

  7. 【API】获取优酷视频信息接口

    序:        自己的网站中需要接入一个视频模块,虚拟主机的空间小所以只能引用第三方的链接.感觉国内优酷好不错,所以查了一下优酷的接口. 0x00:        先去优酷API开放中心申请一个开 ...

  8. Linux[Fedora]查找文件包含的字段

    find 与 grep组合查找 find . –name '文件类型' | xargs grep –n '查找内容'文件类型可正则表达式通配, [.]表示当前目录下进行查找,也可自由指定目录.比如: ...

  9. mybatis oracle BLOB类型字段保存与读取

    一.BLOB字段 BLOB是指二进制大对象也就是英文Binary Large Object的所写,而CLOB是指大字符对象也就是英文Character Large Object的所写.其中BLOB是用 ...

  10. 一个有趣的SQL Server 层级汇总数据问题

        看SQL Server大V宋大侠的博客文章,发现了一个有趣的sql server层级汇总数据问题.          具体的问题如下:     parent_id emp_id emp_nam ...