现在的Orchard CMS系统是个什么状态
---------------------------------------------
Orchard是由微软于2009始启动,使用最新.NET技术栈实现的免费开源内容管理系统。项目开发人员多数来自http://ASP.NET团队,是继Petshop,Oxite之后的重磅开源项目!
它整合了上百个开源项目,如autofac,nhibernate等,它拥有非常复杂的模块机制,可以动态编译模块,因此只需将代码发布即可运行。
同时在CMS系统架构上,它抽象了内容类型(ContentTypes),Orchard认为一切内容皆由ContentPart与ContentField构成,你可以自由的设计内容类型,这是它相比其它CMS强大的原因之一!
在拥有了极灵活的内容管理机制后,Orchard也拥有极复杂的渲染机制,首先它采用了类似Photoshop作图方法的图层思想,任何Url都对应一条Content或者Projection,同时也将满足Layer层级规则的层“叠加“,最终输出的视图模型(ViewModel)将是一个多层结构的,且每层都拥有多个Zone的数据结构。
ps:看起来就像一本书,一页纸就是一个Layer,每页纸上有N个Zone,所有纸的Zone都是固定的,在theme.txt里面定义好的,每个Zone里面拥有N个Widget。
Layer
Zone
Widget
Content
Part+Field
以上树中每一类结构都将对应一个形状(Shape),在渲染此模型时采用形状候补(Alternates)规则来命中html模板,在渲染ProjectionWidget(通常是一个列表)时,则寻找
Widget Wrapper类型的形状
Widget形状
List形状
在寻找这些形状的时候,又有寻找规则,即先前所述的候补规则,如某个Projection的Id为18,那么在寻找List模板的时候会去找 List-18.cshtml(更多规则参考文档)。
这里只讨论现在可用的 Orchard 1, Orchard 最大的特点是架构繁复,彻底用依赖注入容器 Autofac 搭建起来的框架,初学者很可能被他层层封装的两万多行框架代码吓蒙。
对于使用来说,Orchard 的概念有点多,上手比较慢。再加上使用 C# 这样的静态语言加上强制化的依赖注入,造成二次开发样板代码多弄起来比较麻烦。
结论是做简单的网站的话不适合。
不过 Orchard 的代码组织的很好,相当于在 .Net BCL 上面又封装了一层完全面向接口 DI 形式的“标准库”,属于比较完备的开发框架了,适合学习如何搭建复杂 .NET 系统的架构。
Orchard 的缺点是里面到处使用 HttpContext.Current 造成无法移植到 http://ASP.NET Core,而且影响并发性,我们要批判地看待,千万不要跟着学。
利益相关:Orchard CMS 官方版本里 PostgreSQL 数据库支持是我贡献的。有人提到的 orchard 中文网 orchardch.com 网站也是我做的,不过所有权和维护我不负责。

浙公网安备 33010602011771号