Orchard基本概念1
昨天介紹了基于ASP.NET MVC的框架Catharsis,今天給大家介紹的是基于ASP.NET MVC的一個開源社區項目Orchard,本篇主要介紹一下Orchard是什么,如何下載安裝以及安裝過程中我遇到的幾個問題和解決辦法。
Orchard是一個免費和開源的社區交流項目,致力于在ASP.NET平臺開發應用程序和可重用性組件。它將創建用于ASP.Net應用和擴展的共享組件,以及修改這些組件以便使其應用于終端用戶,腳本人員和開發者。我們也尋求與現有的應用程序的作者建立伙伴關系,以幫助他們實現自己的目標。使用的開源協議是OSI認證的 New BSD license。
Orchard項目的計劃目標是以下三方面:
獨特的基于.Net, 能夠吸引終端客戶,腳本人員和開發人員的應用程序;
一個可復用的組件集合并能夠簡單建立這些應用;
一個強有力的社區去幫助定義這些應用和擴展。
在近期,Orchard 項目致力于發布基于.Net CMS 的程序,這些程序允許用戶快速建立以內容驅動的站點,并且提供擴展框架能夠允許開發人員和定制人員通過模塊和主題增加額外的內容。你可以通過 Orchard Project Site(http://orchardproject.net) 去學習更多關于這個課題的內容。以下為項目網站首頁:
下載安裝
作為想學習這個社區網站如何設計的架構和開發人員來說,下載代碼是必須的,所以我選擇在http://orchard.codeplex.com/releases/view/50197下載1.0版本的源代碼,然后發布到IIS上
還可以通過其他方式安裝,可以參考Orchard 發布1.0版本和ASP.NET MVC 3 RTM
注意:如果你現在下載它推薦,當發布時會出現文件缺失的錯誤提示,所以你還是選擇和我一樣的方法吧
運行可能會遇到的問題
現象:提示沒有安裝ASP.Net
原因:是在裝完VS2010之后再安裝系統的IIS組件的,所以IIS還未安裝ASP.NET相關組件,所以發布后運行會出現這個錯誤
解決方案:執行相應版本的aspnet_regiis.exe –i
現象:安裝主題或模塊報錯
原因:由于下載主題后需要拷貝文件,由于目錄的安全性沒有添加用戶修改權限所以不能安裝
解決方案:給系統的Temp目錄增加everyone用戶修改權限后再次安裝后正常
例如安裝下面并應用這個主題時主界面如下圖所示,看起來還比較酷吧:)
后面我將會繼續介紹它的具體功能以及技術架構方面的內容。
CMS
CMS是內容管理系統的縮寫, ‘C’指的是內容, 內容是網站中的任何信息,例如一篇blog、一個回復,甚至一個導航菜單、公司logo等。如果有權限,我們可以在系統后臺進行網站和內容的管理,這就是’M'。而 ‘S’ 是系統,這是個比較模糊的概念。
Content Item
內容項指的是一塊單獨的內容,通常與一個網站單獨的URL關聯起來,例如頁面、blog等
Content type
內容項是內容類型的實例。
Content Part
在Orchard中內容類型是由一些小的構件塊(parts)組成,我們叫做content parts, Content parts 是跨內容類型的可重用的原子內容。
例如一個blog由多部分組成,回復、tags或者打分等content parts,這些part都是可以在其他內容類型中重用的。
Content Field
內容字段是每條信息顯示的內容項,它又一個名字和與內容匹配的數據類型。
Module
在Orchard中通過模塊來進行功能的擴展,它的文件存在于網站的Modules子目錄下。我們可以從Orchard Gallery中安裝模塊
Feature
| 一個模塊由一個或多個功能組成,我們可以分別允許或禁止單獨使用這些小功能。例如定制認證模塊能夠把 OpenID, FaceBook, LiveID, Twitter 或者 Google 認證都分開來,可以單獨控制使用哪一個。功能之間是互相依賴的,依賴的功能也可能存在于不同的模塊中。 |
Manifest
清單時一個描述模塊或主題的一個文本文件,下面是一個示例:
Theme
| 當我們設計網站時,能夠更改網站外觀是很重要的。Orchard區分內容管理和內容展現,通過主題來擴展網站外觀。 一個主題就是一個網站外觀的包,這個包包括style sheets, images, layouts, templates 和定制代碼等。甚至可以繼承其他的主題生成一個新的主題,這在進行小改動時很有用。 |
|
Layout布局是主題中定義頁面通用布局的一個文件。一個布局通常定義了一套包含內容或者widgets的區域(zone)。 |
Zone
區域是不居中一個放置widgets的特定part。在一些主題中,區域可以在沒有widget時折疊起來
Widget
一個widget是一個小的UI塊,它可以添加在網站的所有頁面上。例如云標簽、查詢窗體、地圖、或者最近blog列表等
Layer層是一組通過特定規則激活的widgets。例如當選擇首頁時激活TheHomePage層,不管什么頁面顯示時都激活The Default layer |
Template
每個content part, 每個 field 和每個widget都需要在前端顯示出來,模板把這些不同格式的數據轉化成瀏覽器能夠解析的HTML來顯示。
Placement
參考:http://orchardproject.net/docs/Basic-Orchard-Concepts.ashx
前一篇我們了解了一下Orchard的基本概念,這一篇我們學一些如何使用Orchard來搭建一個簡單的網站。再講解之前,讓我們先看看我搭建的一個敏捷個人簡易網站吧。
默認首頁
更改主題
增加或編輯首頁
生成【敏捷個人】博客
發布一個blog
可以按照前面的方式添加blog和頁面并添加到菜單中
設置菜單順序和標題
具體運行起來的樣子,可以直接瀏覽http://gmc.grandsoft.com.cn:8000/
參考:http://orchardproject.net/docs/Getting-Started.ashx
在如何使用Orchard搭建敏捷個人的網站(1)中講解了如何使用Orchard搭建一個簡易的敏捷個人內容網站,第一篇主要講解了如何下載安裝主題、增加blog、制作菜單等,今天我們繼續講解一下如何增加搜索功能、增加自定義的內容類型以及顯示內容列表。
增加搜索功能
首先我們需要安裝Lucene模塊
|
然后打開功能:Search,Indexing 和Lucene |
||
|
Search功能打開后,在Settings中可以設置索引的字段,缺省只有body和title作為索引字段 |
||
|
功能都打開后,在后臺控制面板【Configuration】節下會增加一個【Search Index】菜單,索引會作為一個后臺任務在執行,缺省每分鐘一次吧,你也可以選擇手動更新 |
后臺索引機制建立好后,我們需要在前臺增加一個查詢Widget,我們在TheHomepage層的Fetured區域加入Search Form的Widget
設置好后打開主頁,界面上增加了一個查詢控件,輸入"時間管理"后可以查到網站有關內容
增加【書籍推薦】
Orchard內部有有一些內容類型(例如blog等),我們可以自定義一些自己的,為了學習這個功能,我現在要增加一個【書籍推薦】頁面,把之前【我的電子書】一個頁面改為一個書籍列表來顯示,以下就是整個過程。
增加BookReview類型
增加一個列表
添加【推薦書籍】并指定添加到推薦書籍列表中
更改顯示樣式
默認顯示是按列表顯示,上面書籍的購買地址、封面照片顯示的都是字符串,這顯得不夠友好,我們可以更改顯示樣式來達到更好的顯示效果。
增加一個文件
編輯文件內容為
刷新后界面顯示為
參考:http://orchardproject.net/docs/的Authoring Web Sites
在如何使用Orchard搭建敏捷個人的網站(2)中介紹了如何使用Orchard,但對于我們來說,更重要的是學習Orchard是如何架構的,如果我們自己編寫一個類似應用該如何做。今天有空再次看看Orchard的其它內容,本篇介紹一下Orchard的一些架構方面的內容。Orchard內容較多,現在還只是了解一些皮毛,還有待進一步學習,放上來權當隨筆記錄。
Architecture
Orchard foundations
Orchard構建在已有的一些框架和類庫之上,下面是一些主要內容:
ASP.NET MVC:這是微軟開源的基于MVC的Web開發框架
NHibernate:NHibernate 是一個ORM工具,從Hibernate演化而來
Autofac: 一個IoC container。Orchard大量使用依賴注入
Castle Dynamic Proxy: Castle 是.Net中很早就出現的一個開源項目,Castle Dynamic Proxy是一個生產動態代理的東東
Orchard Framework
Orchard framework處于Orchard的最底層,你可以把它看成是Orchard的基礎類庫。
Orchard的啟動
當Orchard web應用啟動后,生成一個應用域級別的單例的Orchard Host(DefaultOrchardHost)
View Code
DefaultOrchardHost負責生成Shell,其中引入了一些類:ShellContextFactory、ExtensionManager、ShellSettingsManager、CompositionStrategy、ShellBlueprint,現在就不細說了,因為我還沒有怎么看
View Code
Dependency injection
在Orchard中生成依賴項的標準方法是實現IDependency 或者其繼承接口。
對于依賴有三種可能的范圍,具體講解等待后期分析:
o Request:每次HTTP請求都創建一個新的實例,請求處理有銷毀。這種對象實現IDependency
o Object:實現ITransientDependency,實例不共享
o Shell: 實現ISingletonDependency,單例
ASP.NET MVC
Orchard是構建在ASP.NET MVC 之上的一個框架,但是為了增加主題、多租戶等額外功能而也挺入了額外的一些層和概念。例如,當需要一個特定視圖時引入LayoutAwareViewEngine。嚴格的說,這不是一個新的視圖引擎,因為它并不關心實際繪制,而只是包含一些查找當前主題下正確視圖的一些邏輯功能,然后委托給實際的視圖引擎去展現。
Types, Parts and Fields
Orchard能夠處理任意內容類型(content types),內容類型又是由內容Parts組成,例如一個blog、video都可能有地址、回復、tag等,為了重用可以把回復作為一個part存在于一個module中,這樣只需要生成一次就行了。
Parts本身又有自己的屬性和內容字段。內容字段(Fields)也是一個重用的概念,它比parts更細粒度,它可以使用在多個part中。
Content Manager
所有的內容通過ContentManager 對象進行訪問,ContentManager有查詢內容存儲、版本內容和管理發布狀態等功能
Transactions
Orchard自動為每次HTTP請求生成一個事務
Event bus
Commands
很多在Orchard中可以執行的動作都可以通過命令行形式執行,這些Command都需要實現,命令方法使用CommandName 屬性標識
Search and indexing
默認使用Lucene 進行索引和查詢
Caching
基于ASP.NET cache之上的緩存,Orchard緩存API主要好處是對每個租戶的透明性
File systems
Orchard的文件系統是抽象概念的,可以是直接的物理文件,也可以是部署在云端的blob storage
Orchard core
Orchard.Core程序集包含Orchard必須使用到的一些模塊,例如feeds、navigation和routable
Modules
Orchard默認發布一些內建的模塊,例如blog等。一個模塊只是一個包含manifest.txt 文件的一個ASP.NET MVC area 文件。
Themes
Orchard有一個基本的設計原則,那就是主題的所有HTML都可以被替換。Orchard是基于shapes來展現的,主題引擎的工作就是發現當前主題,并未當前每一個shape找到最佳的展現方式。每一個shape可以通過模塊的視圖目錄或者通過代碼方式來獲取一個默認的展現方式。
參考:How Orchard Works
推薦:你可能需要的在線電子書
我的新浪圍脖:http://t.sina.com.cn/openexpressapp
歡迎轉載,轉載請注明:轉載自周金根[http://zhoujg.cnblogs.com/]
作者:Leo_wl
出處:http://www.cnblogs.com/Leo_wl/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
版權信息
總結
以上是生活随笔為你收集整理的Orchard基本概念1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用菜单
- 下一篇: Linux(Centos7)中配置Jav