Orchard相关名词

来源:互联网 发布:餐饮软件考试指定 编辑:程序博客网 时间:2024/06/05 04:51

运行机制相关的概念:

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层上面显示。我们叫它视图模型也许更好一些。



驱动器(Driver)

驱动器是一个类,通常继承于Orchard框架中的ContentPartDriver,可重写其查看界面显示方法(Display)、编辑界面显示方法(Editor—Get时执行),编辑界面提交方法(Editor—Post时执行),还有其他一些导入导出之类的方法。从这些重写的方法来看,驱动器就好比是内容部件的Controller,驱动器中的方法就好比是内容部件的action。

处理器(Handler)

处理器也是一个类,通常继承于Orchard框架中的ContentHandler,它定义了相应内容部件的行为、事件以及在呈现前操作数据模型。我们可以把它理解为内容部件的Filter,负责告诉Orchard框架如何处理你的Part。

具体参考 :http://www.cnblogs.com/esshs/archive/2011/06/13/2079937.html#3236538

0 0
原创粉丝点击