二十四画生的Blog


        ——开始学习Orchard框架
posts - 125, comments - 1456, trackbacks - 46, articles - 8
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Orchard中的一些名词

Posted on 2011-06-01 23:57  二十四画生  阅读(...)  评论(... 编辑 收藏
    整整看了一天关于Orchard的东西,总的感觉还是一头雾水,先整理了一些关键词记录下来,便于以后深入的学习和了解。

 

运行机制相关的概念:

Architecture:架构。见下图:

 

官网介绍地址:http://www.orchardproject.net/docs/How-Orchard-works.ashx

Orchard是配置在IIS服务器上的一个Web站点,它使用了.NET4.0和ASP.Net的技术。代码是C#编写的。是基于ASP.NET MVC3的Web开发框架上编写的一个应用。它使用到了Nhibernate(OR映射工具)、Autofac(依赖注入容器)、Castle(也是一个开源框架,好像说是用到了动态代理之类的东西,目前还没明白,等清楚了再说)等成熟的框架和类库。其实还有一些其他常用的类库,如:sharpziplib(压缩、解压)、log4net(日志)等。估计是太常用了所以并没有将其列在图上。在这些成熟的框架基础上,Orchard建立了一个自己的框架Orchard Framework,主要提供一些最基本的功能,如:视图引擎(我感觉Orchard对Razor进行了重写和扩充)、内容管理、用户认证等,我们可以把它理解为Orchard所要使用的基础类库。在Orchard Framework的基础上,Orchard提供了一个网站运行最核心的功能,这些功能可以被其他模块使用。如:feeds、navigation和routable。在Orchard Code之上就是模块了(Modules),Orchard自带了一些基础的模块,如:博客。另外一些后台的功能也是作为模块提供的,比如:模块管理,页面管理等。

Shell:外壳,可以理解为Orchard站点的运行基础。包括站点设置、可使用的模块列表、主题列表等等。

Tenant:直译为租户,其实是一个逻辑站点的意思。Orchard支持在一个物理的站点上建立多个逻辑的站点。每个逻辑站点都是独立,有自己的数据,自己的主题等。所以我觉得把它翻译成站点更好些。类似DNN中Portals的概念。

 

皮肤相关的概念:

Theme:主题。是网站皮肤的概念。可以自由的定义显示区域,而且在Orchard中页面上的任何一部分的Html代码都是可以控的。而且可以根据多种情况,对同一个模块进行不同的样式定义。如:不同的站点,不同的请求地址等。总之是一个非常灵活的东西。
Zone:区域。是皮肤上的区块划分。用于在页面上不同的地方呈现不同数据。关于自定义区域功能,好像是动态类型在这里发挥了巨大作用。具体实现,等深入了解后在详细描述。
Layer:层。这也是一个皮肤中的概念。它相当与把平面的东西立体化了。在原有的区域的基础上增加了一个权限和特定情况的维度。即可在某一区域上面根据不同的权限显示不同的数据。如:管理员可见的,注册用户可见的,匿名用户可见的,首页可见的等等。通过层的概念就很好的解决了不同权限显示不同内容的问题。并且层还可以自由定义,具体用法和实现还需要深入学习。

 

功能相关的概念:

Module:模块。这个定义的范围很广,几乎所有的功能都是由模块构成的。在Orchard的划分中 ContentType、Part、Field,Widget,等都可以称做模块。但我倾向于把一个完整的功能,叫做模块。比如:Blogs模块,商城模块等。其余的内容还是按照各自的属性去划分。
Widget:小部件。可以提供多种功能的东西,如:最近博文,Html内容,登录控件等等。你可以把这些小部件,添加到页面的任意一个区域中。至于小部件还能干什么,就看我们的想象力了。
ContentType:内容类型。这个可是Orchard中非常亮丽的一个功能了。比如:一个文本输入框是一个类型,我们可以定义它在显示的时候是什么样子的、编辑的时候是什么样子的、是如何存储的。也就是说每一种类型都实现了由数据库层到显示层的完整封装。更神奇的是,我们可以利用这些现有的类型组装出一个新的类型。比如:我们可以在后台中添加几个自定义字段、再加一个Body Part(图文编辑器)、再加一个Comment Part(评论),一个新的新闻类型就诞生了。可以想象这样的开发利用率有多高。而且它居然还有一个更更神奇的地方,就是每一种类型在其他新的类型中当作Part的时候,其显示样式都是可以重新定义的。这样将会极大的提高复用的灵活性。
Part:构成类容类型的一个组成部分。它可以是评论、可以是博客,它可以是你任何想表达的业务实体。是做作为显示和处理的基本单元。是Orchard中一个很关键的组成部分。我觉得暂时可以把它理解为组件,等有了深入了解后再做详细的论述。
Field:字段。我觉得可以理解为一种轻量级的内容部件,通常是一个文本框,或者是一个可选择日期的日期输入框。叫做输入控件也许更贴切些。

 

编程相关的概念:

Record:记录。是实际存储到数据库中的数据。我觉得也可以称它为数据实体。
ContentPart :内容部件。是呈现到UI上的数据,我觉得也可以称它为业务实体。
Repository:数据仓库。负责数据访问的对象,我们就叫它数据访问层吧。
Handler:处理器。负责定义数据存储的方式。
Driver:驱动器。负责处理部件或字段的呈现逻辑,类似于MVC中的Controller。
Shape:外形。是一个动态类型。它负责把业务数据组装起来在View层上面显示。我们叫它视图模型也许更好一些。

 

相关文档:

http://www.orchardproject.net/docs/Basic-Orchard-Concepts.ashx 

http://www.orchardproject.net/docs/How-Orchard-works.ashx