您的位置:首页 > 其它

一个强悍的.NET CMS开源项目Orchard的介绍

2010-12-22 17:12 531 查看
Orchard 是微软主导的一个CMS开源项目,因为仅仅启动了不到两年的时间,可能大家对他不是很熟悉,不过他的两位主力开发人员是Oxite项目的主将。简单搜索了一下园子里关于Orchard的介绍文章,尽管有很多人在关注,但都不是很具体,所以想写一个系列来详细的向大家推荐一下。不管是从架构上还是产品设计上,他的很多特点都很值得我们好好的学习。

目前,Orchard已经发布的了0.9beta,正式发布的脚步越来越近了。打开路线图文档:

Currently implemented (partially)

Basic admin panel and login

CMS page creation and management

Content zones within pages

Content – Different content types/metadata, viewers and editors for content

Content editing and publication (drafts, scheduling, preview)

Extensibility - Initial content type and composability infrastructure (based on MVC2 areas)

Media management (basic support for uploading and rendering images in content)

Users, roles, membership and profile data (Users/Roles/Permissions, Mgmt)

XML-RPC (Live Writer, MetaWebBlog) support for blogs

Basic blog (create and manage blogs and posts, RSS/Atom, draft/publish, archives)

Comments – Associate comments with content types, manage comments, spam protection

Tags – Associate tags with content types, browse by tag

Settings – App-level, extension-level settings definition and UI/management

Themes – Theming model, UI to install/remove themes, preview themes

Setup

Simple navigation

Multi-tenancy

Azure support

Command-line tooling

Event model (a.k.a. plugins)

App Localization (of admin panel, modules, themes)

Content Localization (multi-lingual sites)

Search and Indexing

Module extensibility API and packaging

Scaffolding of Modules (cmd-line)

Creation of arbitrary content types and items - fields, parts

Define content types, parts, and fields using the admin panel or code

Add fields to content types using the admin panel or code

Associate content parts to types using the admin panel or code

Add fields or parts to existing content types using the admin panel or code

Command-line support (bin/orchard.exe)

Enabling features of modules

Data migrations on module activation/upgrade

Reporting (event logs)

Search (based on Lucene)

Application localization

Content localization

Module packaging

Dynamic compilation of modules

Data migrations

Custom content types built from parts and fields

Theme re-foundation: Razor integration, Page Object Model, naming conventions and helpers

Script and stylesheet registration

Theme packaging

Widgets

Content item lists

Medium trust



Current priorities for January 2010

Security

Performance

Bug fixes

支持的功能越来越丰富,恐怕到明年的一月份,就会正式发布V1版了,本人对此相当的期待。尽管对CMS研究不多,但是觉得Orchard绝对是最有特色的一款CMS,可能有人会把它和Wordpress相比较,应该说和Wordpress不是一个量级的产品。Orchard的野心很大,绝不仅仅是一个简单的Blog一样的内容发布平台,他更像是一个“通用平台”,这个平台从简单的个人网站,到大型的企业级应用都可 能支持,他的架构得非常灵活,几乎所有的功能都是Moudle,可以用开关管理,包括Theme。
下面简单介绍一下他的结构:

Architecture

Modules
Core
Orchard Framework
ASP.NET MVCNHibernateAutofacCastle
.NETASP.NET
IIS or Windows Azure
最底层同时支持IIS和目前热炒的Azure,也算是该项目的一大特色,有感兴趣的同学可以部署到云上试试。上面是.NET,采用了MVC 3和NHiberante,也用了Castle和Autofac的一些功能。一直以为微软会大力推广自己的EF4,没想到自己的项目却用了NHibernate,是否说明EF没有宣传的那样成熟呢?再上面是Orchard自己的Framework和Core,最上面是Modules。
注意Modules是该项目绝对的亮点(也是风险点),用一句话概括就是:一切皆为Modules。

Orchard foundations

The Orchard CMS is built on existing frameworks and libraries. Here are a few of the most fundamental ones:

ASP.NET MVC: ASP.NET MVC is a modern Web development framework that encourages separation of concerns.

NHibernate: NHibernate is an object-relational mapping tool. It handles the persistence of the Orchard content items to the database and considerably simplifies the data model by removing altogether the concern of persistence from module development. You can see examples of that by looking at the source code of any core content type, for example Pages.

Autofac: Autofac is an IoC container. Orchard makes heavy use of dependency injection. Creating an injectable Orchard dependency is as simple as writing a class that implements IDependency or a more specialized interface that itself derives from IDependency (a marker interface), and consuming the dependency is as simple as taking a constructor parameter of the right type. The scope and lifetime of the injected dependency will be managed by the Orchard framework. You can see examples of that by looking at the source code for IAuthorizationService, RolesBasedAuthorizationService and XmlRpcHandler.

Castle Dynamic Proxy: we use Castle for dynamic proxy generation.

上面是用到的开源项目的介绍,没什么可说的。
未完,待续。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: