Orchard基本信息

Orchard简介

Orchard是一个以微软为主导的开源CMS项目,它允许使用者在Asp.Net平台上快速建立网站,并且提供扩展框架能够允许定制人员通过模块和主题等增加额外的内容,Orchard能够建设出复杂的内容管理系统,它提供了强大的模块化建设模式,通过组件的重用将系统建设成本最小化,帮助用户减少编 码,从而吸引非技术人员的关注。

 

Orchard项目建立于2010年3月并与2011年1月发布正式版1.0V,是微软“Oxite”开源CMS系统的继承者,2010年12月微软将Orchard从自己的CodePlex迁移到Outercurve基金会,并承诺提供三年的技术支持该项目。Orchard使用了当今.Net平台最先进的技术构架,使之成为该平台中最新、最先进的开源CMS系统之一。

 

存在意义

    建立一个CMS网站(内容管理系统)是不同于建立一个普通的web站点:它更像是建立一个应用程序容器。设计这样一个系统时,必须建立一流的可扩展性功能。这必需是一个非常开放式的构架,但是一个开放性的系统可能会影响应用程序可用性的挑战,在系统中的需要与未知的未来模块的组合,包括在用户界面级别,编排所有这些小零件,让互不知道的彼此成一个连贯的整体,是Orchard是关键。

 

目标:

提供强大的模块化建设模式,通过组件的重用将系统建设成本最小化,帮助用户减少编码,从而吸引非技术人员的关注

 

Orchard解决方案中各个项目的作用

------基于Orchardv1.1版的源代码

 

Modules

 

Modules目录是一个VS解决方案目录,它包含了Orchard的模块项目。所有的模块项目都是一个ASP.NETMVC web应用程序项目。

 

Modules\Lucene

 

Lucene模块可以让站点使用Lucene.NET进行索引。索引模块利用此搜索引擎,实现网站的全文检索。

 

Modules\Orchard.ArchiveLater

 

ArchiveLater模块支持按计划归档功能。

 

Modules\Orchard.Blogs

 

Blogs模块提供了管理、呈现博客和博客文章的功能。

 

Modules\Orchard.CodeGeneration

 

CodeGeneration模块提供了创建Orchard组件的命令行工具。

 

Modules\Orchard.Comments

 

Comments模块提供了管理、呈现评论的功能。此评论功能以ContentPart形式提供,可以适用于各种内容。

 

Modules\Orchard.ContentTypes

 

ContentTypes模块可以提供创建和修改内容类型的管理界面。

 

Modules\Orchard.DesignerTools

 

DesignerTools模块包含了一个可以帮助web开发人员开发主题的工具。这个工具可以显示所有当前的Shap和一些信息,有助我们自定义主题和模板使用。

 

Modules\Orchard.Email

 

Email模块提供了邮件发送的功能。

 

Modules\Orchard.Experimental

 

Experimental模块提供了以下类型的调试工具:

 

分析工具:这个工具可以帮助我们配置Orchard应用。

 

Web命令行工具:这个工具可以让网站管理员在Web界面中执行Orchard命令行的功能。

 

测试列表工具:这个工具可以定义一些内容帮助测试列表功能。

 

Modules\Orchard.ImportExport

 

ImportExport模块提供导入导出Orchard内容数据的功能。

 

Modules\Orchard.Indexing

 

Indexing模块可以提供全站索引。通过此模块生成索引供搜索模块使用,从而实现全站搜索的功能。该模块需要依赖于Lucene模块。

 

Modules\Orchard.jQuery

 

jQuery模块包含了jquery脚本和一些相关的脚本库。

 

Modules\Orchard.Lists

 

Lists模块提供了一个预设容器的功能。

 

Modules\Orchard.Localization

 

Localization模块提供了本地化内容项的功能。

 

Modules\Orchard.Media

 

Media模块提供了管理和呈现多媒体的功能。它当前仅支持图片文件。文件存储在当前Orchard系统中,可以是一个物理文件系统或者用Azureblob存储。

 

Modules\Orchard.MediaPicker

 

MediaPicker模块提供了一个在Html编辑器中浏览、上传和选择图片的功能。

 

Modules\Orchard.Messaging

 

Messaging模块包含了消息的设置功能。

 

Modules\Orchard.Migrations

 

Migrations模块提供了根据Record类创建和升级数据结构的命令行工具。

 

Modules\Orchard.Modules

 

Modules模块提供了网站管理员管理模块安装、启用等功能的管理界面。

 

Modules\Orchard.MultiTenancy

 

MultiTenancy模块可以是多个逻辑站点运行在一个物理的web站点上。这提高了在一台服务器或托管主机上的站点密度。

 

Modules\Orchard.Packaging

 

Packaging模块提供将模块打包为OPC文件格式的功能。

 

Modules\Orchard.Pages

 

Pages模块提供了管理和呈现CMS页面的功能。它包含了一个预定页面内容类型。

 

Modules\Orchard.PublishLater

 

PublishLater模块支持内容以草稿形式创建并按计划时间发布的功能。

 

Modules\Orchard.Recipes

 

Recipes模块支持Orchard网站自动配置的功能。

 

 

 

Modules\Orchard.Roles

 

Roles模块提供一个分配角色给用户的功能。它还提供了一个设置默认角色给其他模块定义权限集的功能。

 

Modules\Orchard.Scripting

 

Scripting模块可以提供一个执行简单脚本语言的功能。

 

Modules\Orchard.Scripting.Dlr

 

Scripting.Dlr模块可以提供一个执行DLR脚本语言的功能。

 

Modules\Orchard.Search

 

Search模块可管理搜索索引和提供用户查询Orchard站点的接口。

 

Modules\Orchard.Setup

 

Setup模块提供初始化安装Orchard应用程序的功能。这个模块在安装完成后将自动禁用。

 

Modules\Orchard.Tags

 

Tags模块提供管理和呈现所有内容标签的功能。

 

Modules\Orchard.Themes

 

Themes模块提供了一个设置Orchard应用程序主题的管理界面。

 

Modules\Orchard.Users

 

Users模块提供了管理用户的功能。

 

Modules\Orchard.Warmup

 

Warmup模块提供一种在应用程序初始化过程中生成静态网页的功能。

 

Modules\Orchard.Widgets

 

Widgets模块提供了Orchard小部件添加到页面上的管理界面。

 

Modules\TinyMce

 

TinyMce模块提供了富文本编辑器的功能。

 

Specs

 

Specs文件夹包含了以下项目:

 

Orchard.Profile:提供显示网站运行情况和性能的功能。

 

Orchard.Specs:包含编写使用集成测试specflow风格。特定功能信息包含在*.Feature文件中。

 

Tests

 

Tests文件夹包含了以下项目:

 

Orchard.Core.Tests:是一个测试Orchard核心功能的测试项目。

 

Orchard.Framework.Tests:是一个测试Orchard框架的测试项目。

 

Orchard.Tests.Modules:是一个测试Orchard模块的测试项目。他下面的子目录对应不同的Orchard模块。

 

Orchard.Web.Tests:是一个测试Orchard网站的测试项目。

 

Themes

 

Themes文件夹包含了Orchard主题项目,可以在此项目中添加新的主题,不同的主题对应于不同的子目录。

 

Tools

 

Tools文件夹包含了用于编译Orchard解决方案的工具的源代码。它也包含了Orchard项目的命令行工具,你可以用它来运行Orchard中定义的一些命令以自动执行管理任务。

 

Orchard.Core

 

Orchard核心功能项目包含Orchard中核心模块和内容类型,如:feeds部件、主题部件、导航部件、通用部件、路由部件和内容文本部件。

 

Orchard.Framework

 

Orchard框架项目包含Orchard所使用的各种类库。如:缓存、集合、命令、内容管理、数据访问等等。同时也包含了大量的接口定义和属性定义。

 

Orchard.Web

 

Orchard.Web项目是一个MVC应用程序项目。这是你应用程序实际运行的项目。它是整个解决方案的启动项目。它包含了OrchardCMS系统的核心平台的程序集文件,是Orchard主机应用程序。

 

其他注释

 

Orchard.Web项目需要作为整个项目的启动项目(例如:当你使用VS调试功能时)。Orchard.Web动态加载所有Orchard模块并发现模块的扩展(MVC路由,管理页面等等)。

 

Modules文件夹下的项目在物理文件夹“Ochard.Web\Modules”下。这些模块允许包含ASP.NET视图(.aspx,.ascx和其他文件)和静态内容。

 

Orchard.Web项目引用的模块,在编译的时候自动将程序集文件复制到Bin目录下。Orchard.Web没有依赖的模块组件。因为在Orchard.Web项目运行的时候不知道有哪些模块会被动态加载。

 

Modules文件夹下的项目引用了Orchard的项目,这可以让Orchard模块访问Orchard的服务。

 

关于核心模块

 

本节讨论一些关于核心模块创建的决策问题。第一个问题是:为什么是核心模块的模块?因为在设计Orchard阶段它被确定为扩展其他模块所必需的核心框架。

 

例如:Common模块介绍BodyAspect(内容的作者)。一个核心的概念是Common模块可以给其他很多内容类型使用,如:博客文章、页面等等。它可以实现到Orchard框架dll中,让所有模块都依赖于它。但是这就得不到作为一个模块的好处,如能挂接处理器、驱动器、视图、路由等等。这样做也和ASP.NETMVC区域有关,一个区域需要在一个文件夹下。

 

将核心模块从框架层中分离并独立成一个单独的dll,这是一个正确的观念。这类似一个non-monolithic操作系统。在一个地方实现核心功能,在另一个地方实现系统模块,并提供大量的接口用于扩展更高级的模块。

 

第二个问题是:为什么是核心模块的核心模块。当它被作为核心模块的概念实现时,它有可被其他模块永久使用。如:评论模块。(评论模块并不是一个核心模块,它可以算是一个基础模块)

 

需要处理的问题是依赖关系。在Orchard中,模块在Modules目录下可以被禁止和卸载,或通过其他途径更新。Orchard模块应该尽量避免对其他模块的依赖,尽量在后台通过内容部件来定义类型。页面和博客文章分别属于Pages和Blogs模块,并没有引用评论和标签模块,但是它们有可能添加了评论或标签功能到页面和博文文章中。这种分离行为是确保由底层内容类型架构实现,而不是由其他模块间直接引用实现的。

 

然而,核心模块是Orchard框架的一部分,它可以被所有模块依赖。核心模块将由Orchard开发团队发布,并作为Orchard框架的组成部分。其他模块可以依赖他们,并直接访问其公共外观。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值