Kooboo的定位是一個CMS,內容管理平台,從更嚴格意義上來說,它更應該網站快速開發平台。針對一般網站開發過程的分析和提煉,着重在解決網站的一般需求,提出一套快速開發網站的理念和方法。在這些理念和方法的指導下,來進行網站的開發,規范開發過程,提高開發效率,減少維護成本,提高網站質量。
我們在開發一個網站,一般會面對如下問題:
內容存儲,這是一個基礎性問題。內容是整個網站的肉體,也是靈魂,失去了內容,網站就無法體它的價值。網站開發的最重要的工作就是對內容的處理,也就是對內容進行增,刪,改,查的處理。或者更為直接點,就是開發人員對數據庫的操作。而如何對內容數據,直接影響着開發效率。開發人員不可避免的要處理大量的SQL語句,或者使用ORM等工具和框架來提高開發效率。但是不管怎么樣,開發人員還是需要面對大量的開發和配置工作。而Kooboo要解決的首要問題就是要讓開發人員從些重復,而又繁重的工作擺脫出來,實現一個通用化的存儲,開發人員甚至不需要關心數據是存儲在數據庫,還是本地文件中。內容存儲,開發人員只要根據自己需要的字段,設計好相應的數據結構(Schema,內容類型),建立相應的內容目錄(Folder),就可以使用相應的接口對這些內容進行操作,而不需要去關心SQL或者是其它的存儲細節,同時內容關系不是簡單的一維關系,可以處理1對1,1對多,多對多的關系。並且,通過Kooboo的后台可以直接維護這些內容,不需要再重新開發單獨的后台來維護網站內容,減少開發任務。
多網站處理,內容共享的問題。在現實中,我們可能會面對,一個組織關系中的各個機構需要有內容共享,但結構獨立的網站。當我們遇到這種問題時,我們通常的處理辦法是為各個機構單獨開發網站,在遇到需要共享的數據時,通過一定的技術手段,或共享數據庫,或共享目錄來實現目的。再有一種典型場景,當我們要開發一個全球性的網站時,不可能避免的要解決各個地區語言和文化的問題。單單是語言,我們可以通過資源文件來解決,但當個地區站點除了語言要不同外,網站中的某部分內容要根據本地區文化特點進行一些改動時,如何通過最小改動來達到復用和定制?內容也需要根據不同地區進行本地化時,這也不是簡單的通過資源文本就可以解決的。同樣的,你可以把這些想法擴展一下,想開發一系列功能相同,UI類似的企業網站之間的復用。在Kooboo中,每一個網站,只是這個平台的一部分。這個平台可以同時存在很多有直接關系,或沒有任何關系的網站。所有的網站都可以有自己獨立的域名。網站之間,可以有直接或間接的繼承關系。在繼承的網站間,可以共享和復用網站的各種元素。子站可以完全繼承父站點的所有的代碼和內容,同時也可以根據需要對父站點的所元素進行一些特定的改動,以達到通過最小的改動,最大的復用,並且它不是簡單的物理復制,也就是說,如果父站點發生的任何變化,同樣會體現在繼承的網站中。這個就是網站的繼承,繼承不僅可以繼承內容,還可以繼承代碼和模板,可以支持本地化,也就是滿足面向對象的三個基本特征。
模板管理。對一個網站來說,給用戶最直觀的體驗就是網站的UI。對於動態頁面來說,設計界面就是設計模板。在Kooboo中,使用傳統的Webform的.ASPX頁面做為模板,延續了ASP.NET程序員的開發體驗。同時在提供了完善的皮膚管理,腳本管理,資源管理,並且提供了功能強大的在線語法編譯器,把程序員從復雜的路徑樣式引用和語法記憶中解脫出來。模板可分為布局模板和內容模板,布局模板是控制整個頁面布局的模板,其概念等同於MasterPage; 內容模板是頁面中某一塊內容的模板,它關心的是頁面某一部分的展示。
頁面管理。與ASP.NET WebForm的頁面概念不同的是,在Kooboo中,“頁面”並不是一個物理存在的.ASPX頁面模板。頁面只是將模板和數據組合在一起的,同時具備URL表現的一些配置值。這些配置信息決定了,在該頁面里,所選擇的模板的某個位置上放上哪些頁面模板; 決定了該頁面需要傳遞的參數,以及這些參數以什么樣的方式進行傳遞(普通傳參或SEO友好); 決定了該頁面從哪里查詢所需內容(DataRule); 決定了哪些角色的人能訪問該頁面。同時頁面管理,也可以用於生成前台頁面導航菜單。
擴展插件。一個完善的開發平台,不可避免的要提供解決一些特殊情況的能力,同時也必須針對一些通用性的功能,比如論壇,博客,Wiki等功能的一整個模塊的復用,以提供資源復用的共享。在Kooboo中,有兩種插件:頁面插件和模塊插件。頁面插件(PagePlugin),就是針對某個頁面的特殊要求而開發的運行於通用Controller之上的Controller擴展,適用場景:一個網站前頁,可能80%頁面是用於顯示,另外還有一部分可能還需要有提交數據的要求,那么這些提交的數據可以在View中通過傳統的WebForm PostBack來處理,同時也可以通過編寫頁面插件來獨立出來,從MVC的組成部分來講,編寫頁面插件也更符合框架要求; 另一種情況可能是,頁面需要的部分數據並不存儲在Kooboo中,而是需要通過其它的一些渠道(例WebService)從其它地方獲取,此時你也需要通過編寫插件來達到你的目的。 模塊插件是針對某一種應用的完整功能的復用而開發的完整的功能包,可能是一個簡單的博客系統,論壇,或是其它可以被復用的小功能,這些功能模塊可以被加到頁面模板的任意位置上(與普通的內容模板一樣使用)。在kooboo中,每一個模塊插件都可以做為一個獨立的網站而存在,不一定要求運行於Kooboo平台之上,你可以將它視為一個Mini Site,如果你了解ASP.NET MVC2,那你可以理解為一個類似於Area的功能。開發一個模塊插件,也就是開發一個普通的MVC站點,你可以單獨進行開發和調試。
站點包。一個網站開發后,可能需要從開發平台移植到生產環境平台去。此時,你可以將設計好的站點進行導出操作,然后在另一個Kooboo平台,選擇導入操作。很快,你會發現,站點包還可以有另一種應用。如果你設計一個站點模板,然后根據這個模板快速生成一些類似的網站,這也就是很多網站快速生成軟件的做法。也就是一個站點設計好,不僅能被繼承復用,還可以被導出復用,達到最大的復用。
以上都是Kooboo的核心功能,但是當你深入了解Kooboo后,還會發現更多實用的功能,包括:
內置的全文搜索,使用Lucene.net,在維護內容時自動更新全文索引文件,通過一個簡單的API可以快速實現全文搜索的功能。
簡單的工作流管理,內置一個簡單的工作流功能,方便內容維護時實現流程審核流程。
腳本和樣式文件的自動合並和壓縮,通過設置一個簡單開關,來配置網站是運行於Debug模式或是Release模式。當運行於Release時,會自動合並壓縮腳本文件和樣式文件。
出錯管理,站點在出現錯時,可以根據錯誤類別配置要轉到的頁面。
以上的這些功能都是Kooboo要解決的核心問題,我會在稍后的一系列文章中,使用Kooboo 1.2 再深入的展開每一個功能點的各個細節。Kooboo 1.2會在稍后的一至兩周內發布,敬請期待。
CodePlex站點:http://kooboo.codeplex.com/
Live Demo: http://www.kooboo.com/demo
kooboo Wiki: http://wiki.kooboo.com