用CodeSmith及DNNProjectTemplates進行DNN模塊開發(1)

   DNNProjectTemplate介紹見http://dnnjungle.vmasanas.net。該項目的主要目標是提供一種簡單但功能強大的方式來擴展VS.NET支持DotNetNuke模塊的創建。
   概覽
    儘管有許多種方式來完成自定義DNN模塊構建的任務,本教程按照以下順序完成不同的任務。注意,這些步驟假定模塊設計――它的目的和功能――已經被規劃好。
1.創建數據庫表――使用VS.NET或Sql Server企業管理器,創建任何模塊功能所需要的表。
2.創建存儲過程。使用CodeSmith,產生基本操作增、刪、改、選的存儲過程。
3.安裝重要的項目――在VS.NET中打開DNN解決方案,創建兩個項目:DNN Modul,和DNN SqlDataProvider DAL,在這裏只產生通用代碼;特定模塊(或模塊相關)的代碼在下一步產生。
4.使用CodeSmith產生Data Provider 代碼――爲基於模塊表和存儲過程的DNN SqlDataProvider DAL項目產生代碼。
5.生成抽象DAL代碼――使用CodeSmith,在DNN Module項目中生成DataProvider.vb代碼。
6.生成BLL代碼――使用CodeSmith,在DNN Module項目中爲業務邏輯層生成代碼。
7.創建視圖控制――產生一個基本的視圖控制來從數據庫中顯示數據測試模塊功能。這包括:
   A.使用VS.NET編寫DNN Module項目的 .ascx和 .ascx.vb文件代碼。
   B.通過DotNetNuke爲自定義模塊手工產生一個模塊定義。
8.創建一個 Edit Control ――在VS.NET中,創建一個DNN 模塊Edit control,以給與自定義模塊一種方式來允許用戶爲自定義模塊增加/編輯數據庫中的數據。
9.創建一個Settings Control――在VS.NET中,創建一個DNN模塊Settings control,它可以提供改變視圖顯示模塊數據的選項。
10.打包自定義模塊――創建一個DNN安裝配置文件(.dnn)並打包整個自定義模塊代碼以便於DNN web站點上傳並安裝模塊。
 
    注意這個完整的自定義模塊包括兩個單獨的項目,都是作爲原始的DNN解決方案的一部分創建的。上面幾個步驟中的許多代碼都是使用CodeSmith和VS.NET項目模板自動產生的。但是,創建一個自定義模塊仍然包括一些相當多的工作,主要在於原始的設計努力和對模塊視圖、編輯及選項控件的描述。
 
 
 

我們以標準的HelloWorld爲例來一步步說明具體的開發過程。
 
數據庫(Database
首先我們需要一張表來存儲數據。所以讓我們在Sql Server數據庫中創建如下一個表:

 

注意:
A.itemID是標識列。
B.確保moduleID與Modules表的ModuleId建立關聯。確定你選中了“Cascade Delete Related Records”,以便於當一個HelloWorld模塊實例被刪除時所有該實例相關的數據也被刪除。
 
注意,儘管我把表名稱之爲VMasanas_HelloWorld,通常在你的對象名前面加公司名稱爲前綴以避免可能與其它模塊表發生衝突不失爲一種好的做法。我們將對數據庫的每個對象採取同樣的做法。
我們爲什麼要在表名前加公司前綴?假定另一個開發者使用同樣的表名創建了一個擴展的HelloWorld模塊。在安裝該模塊時它將丟棄我們的HelloWorld表,並且我們將失去所有已經存儲在該表中的的信息。此外,新的HelloWorld表可能與我們所設計的HelloWorld表不兼容,這樣就會破壞我們原來的自定義模塊!
在此情況下這或許不是一個大問題,但是,刪除一個自定義表的所有信息又如何?可能麻煩就大了。
 
現在讓我們爲這個表創建存儲過程。
打開 CodeSmith ,找到 StoredProcedures.cst 模板。雙擊它,你會看到如下窗體。 CodeSmith 是一個基於表的代碼生成工具,所以我們首先需要做的是選擇我們剛纔創建的表 ("VMasanas_HelloWorld") 。你可以爲左邊的每個選擇使用這個窗體來查看生成的代碼。注意表前綴 "VMasanas_" ( 對象限定符 )
 
 
使用與下面圖片所示的同樣的選擇,單擊“生成”按鈕,並把生成的結果代碼保存到一個緩存文件中(比如“ StoredProcs.sql ”)。該代碼會在後面我們打包分發最終的模塊時使用。
 
 
現在我們應該在數據庫中創建所有這些存儲過程。爲完成此任務,我們將使用DNN Portal作爲我們的開發環境。打開並瀏覽你的DNN portal,以host身份登陸,並從主機(Host)菜單中選擇SQL項。然後拷貝通過CodeSmith生成的代碼到SQL 模塊的文本框中。確保選擇了“以腳本方式運行(Run as script)”,然後單擊執行命令。
 
備註:作爲可供選擇的方式,如果可以使用的話,你也可以在查詢分析器中完成這一步;DNN portal方式是爲那些以MSDE作爲他們的數據庫來使用以及不能訪問查詢分析器的用戶準備的。如果你使用這種方式來安裝的話,你需要在所有出現”數據庫擁有者”限定符{databaseOwner}{objectQualifier}的地方用適當的值來代替。
 
不要把這些改變保存到你先前保存的文件中!我們在後面會需要原始產生的代碼。


二.項目設置(Project Setup

Ok,現在我們擁有了數據庫並準備了所有相關的代碼。讓我們開始模塊項目。

 

DotNetNuke包含幾個解決方案文件。當開發新的模塊時,從那些解決方案中拷貝一份用於你自己的開發不失爲一種好的嘗試。我建議使用DotNetNuke.Core 解決方案,因爲這樣你將不必頂着許多項目但仍然能夠通過DotNetNuke核心代碼進行調試。

 

導航到你安裝DotNetNuke的文件夾,並找到解決方案文件夾。這裏存放着所有不同的解決方案。

 

讓我們爲我們新的解決方案文件創建一個特定的文件夾:

 

1.   選擇DotNetNuke.Core文件夾,並將它拷貝一份。重命名新文件夾爲HelloWorld.Core

2.   打開HelloWorld.Core文件夾並重命名文件DotNetNuke.Core.slnHelloWorld.Core.sln。如果你在許多不同的項目中工作,這一個簡單的步驟會有助於你在VS.NET起始頁中區別解決方案。

 

如果你不使用默認的DotNetNuke文件夾,作爲一種可選的方式,你可能需要修改一些文件。閱讀Framework頁中的指導以獲取更多的信息來正確設置進行DNN的開發。

 

在VS.NET中打開HelloWorld.Core解決方案,並添加一個新項目。確保你沒有選擇關閉現存的解決方案;實際上,你必須在它上面添加。確保在位置文本框中你輸入的路徑是你用來開發的DNN portal 的DesktopModules文件夾。

第一步,我們創建主要的模塊項目,所有相關的代碼都在其中。

我們將在DesktopModules文件夾中創建此模塊,並將它的名稱設置爲HelloWorld。如果一切順利的話,你的解決方案應當看起來是這個樣子:

注意項目模板已經創建了一些文件和文件夾,它們將在後面的步驟中使用。
 
現在我們需要該項目訪問數據庫,所以讓我們添加一個新項目來構建模塊數據層。這種類型的項目稱之爲一個data Provider。

所有的providers應當被構建在/DesktopModules/HelloWorld/查看下邊截屏中的Location文本框下的 Providers文件夾中。你使用這個文件夾是重要的,只有這樣模板纔可以尋找到你的/bin主文件夾相關的路徑。導航到該文件夾並指定新項目爲和你的主模塊相同的名稱:HelloWorld。名稱同樣非常重要,因爲模板將使用項目名稱來構建正確的引用和文件路徑。

(待續)

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章