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. FileOutputStream VS FileWriter

    当我们使用Java往文件写入数据的时候,我们有两种方式,使用FileOutputStream或FileWriter. FileOutputStream: File fout = new File(fi ...

  2. jstree动态生成树

    前篇文章简单介绍了静态生成树,这篇文章将通过后台把数据通过json形式传到前台,进行动态生成树. 本篇的程序所用框架为Spring MVC,可以很方便的通过controller层传json到前台. 前 ...

  3. PMBOK(第五版)学习笔记二-十大知识领域(P87)

    五大项目管理过程组:启动.规划.执行.监控.收尾过程组 十大知识领域是:项目整合管理.项目范围管理.项目时间管理.项目成本管理.项目质量管理.项目人力资源管理.项目沟通管理.项目风险管理.项目采购管理 ...

  4. Nginx 简单的负载均衡配置示例(转载)

    原文地址:Nginx 简单的负载均衡配置示例(转载) 作者:水中游于 www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP. 用户访问http://www ...

  5. Python运算符,python入门到精通[五]

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...

  6. CentOS 7 网卡子接口的创建

    OS:CentOS 7 在linux上创建vlan需要加载802.1q模块: 1.检测OS是否已经加载802.1q模块 [root@controller ~]# modinfo 8021q filen ...

  7. WebService 实例

    使用Java WebService API实现 1.服务端接口: package com.h3c.itac.webservice; import javax.jws.WebService; @WebS ...

  8. nginx参数说明

    一.nginx的核心配置: >>> 正常运行的必备配置: 1. user username [groupname]; #指定运行worker子进程的用户或组 2. pid /path ...

  9. ELK Kafka json to elk

    Logstash配置     input { kafka { zk_connect => "127.0.0.1:2181" topic_id => "clus ...

  10. ELF Format 笔记(八)—— 符号的类型和属性(st_info)

    我是天空里的一片云,偶尔投影在你的波心,你不必讶异,更无须欢喜,在转瞬间消灭了踪影.你我相逢在黑夜的海上,你有你的,我有我的,方向:你记得也好,最好你忘掉,在这交会时互放的光亮! —— 徐志摩·偶然 ...