2014-09-03 175 views
2

我是Umbraco的新手,我觀看過Umbraco.tv視頻並希望在項目中使用Umbraco作爲管理和編輯內容的cms。我對你的指導,時間和您的想法非常感謝對3個問題:Umbraco應用程序的體系結構

  1. 如何驅動proejct基於一把umbraco數據應該architecutured?對於自定義數據庫表,您是否使用單獨的數據庫或相同的Umbraco數據庫?

  2. 如何使用自定義數據(非內容)?你是否將所有內容都設置爲文檔類型,即使它是你不打算創建內容的數據,例如簡單的表單提交數據?

  3. 對於DAL您使用什麼技術或ORM? Umbraco是否提供任何API來保存不是內容或文檔類型的簡單數據?

非常感謝你再次。

回答

2

架構問題是重要的,但它也有反對需要項目多麼複雜要加以考慮。

我通常會爲非Umbraco數據推薦一個單獨的數據庫,因爲這樣可以保持一切都很好獨立和可管理,特別是隨着項目的增長。這也意味着特定於CMS的數據(即內容)可以與非CMS數據分開保存,例如,用戶註冊。

但是,如果項目很小並且不可能增長,請保持簡單。使用相同的數據庫,並使用Umbraco實施的Petapoco ORM。例如:

ApplicationContext.DatabaseContext.Database.Save(new Thing());

或者

變種項= ApplicationContext.DatabaseContext.Database.Single(thingId);

對於自定義數據,再次是需要性,可維護性和簡單的問題。只能使用需要的文檔類型,並且可以將其存儲在CMS中。我的個人規則是,如果它不滿足或組織內容,則它不屬於CMS。例如新聞和新聞類別顯然屬於CMS。但是,對文章發表的評論沒有理由在CMS中。

關於DAL,正如我所說的,Umbraco有一個可以直接使用的Petapoco實現。如果項目足夠基本,就使用它。除非你需要一些分離和/或一些額外的咕嚕聲,在這種情況下,我會建議使用NHibernate或EF,否則使用其他任何東西都沒有意義。

除了上述的點以外,

  • 使用的NuGet;
  • 使用Umbraco的MVC模式,因爲它將爲您提供更大的靈活性。查看Hybrid Framework,因爲它爲強大而靈活的項目架構提供了一個非常好的起點;
+0

感謝@Digbyswift, 你能解釋一下嗎?除非你需要一些分離和/或一些額外的咕嚕聲,否則我會建議使用NHibernate或EF,否則可以使用其他方法。 難道我們不能使用Petapoco分離DAL嗎? – user576510 2014-09-05 00:55:18

+0

親切解釋可能會出現一些額外需要的情況,我可能需要EF或Nhibernate? – user576510 2014-09-05 01:17:32

+1

您可以爭辯說,如果您打算使用Petapoco的單獨安裝,那麼您可以使用Umbraco的實現,特別是如果項目不夠複雜以保證它。然而,你是對的,你可以使用你自己的Petapoco,而且我有好幾次。 EF和NHibernate比Petapoco這樣的微型ORM提供了許多優勢。例如,NHibernate具有緩存層以防止在同一會話中兩次調用對象,並且還有一個成熟的查詢API。 – Digbyswift 2014-09-05 08:45:01

2
    • 你總是需要一把umbraco文檔類型,即使網頁上沒有任何所見即所得型可編輯
    • 我會建議使用面向服務的架構,和。你放入Umbraco的dll可以調用該服務。然後,您可以部署此服務,並完全控制數據訪問的方式。選擇你想要的任何方法。大多數現代網站都使用ORM,儘管nHIbernate和Entity Framework是最受歡迎的,但哪個並不重要。不要害怕混合和匹配更直接的數據訪問形式,因爲它可以給你更多的控制權,特別是在大型查詢性能優化很重要的情況下。

如果你不熟悉添加自定義.NET功能集成到一把umbraco,試行添加.NET用戶控件到一把umbraco會給你一個良好的開端,並幫助您瞭解如何運用在一把umbraco自己的.dll:

http://umbraco.com/help-and-support/video-tutorials/introduction-to-umbraco/developer-introduction/using-net-user-controls.aspx

1
  1. 您可以使用包含在一把umbraco不使用表中的一把umbraco表的數據庫。如果您使用多個數據庫沒有託管問題,那麼您可以簡單地鏈接到web.config中的第二個數據庫 - 這比使用默認的Umbraco數據庫更安全,因爲Umbraco包經常添加數據庫表&可能存在命名衝突。

  2. 查看非一把umbraco數據(例如,從數據庫),最好是通過添加使用標準的.Net模式,訪問數據宏進行(例如剃鬚刀腳本,淨用戶控件)&然後一把umbraco你在添加引用到模板中的宏(視圖)。您可以爲任何文檔類型使用多個模板(視圖);所以如果你有一個名爲'forms'的文檔類型不包含數據,你可以使用'允許的模板'複選框來說明哪個視圖對這個文檔類型有效。添加內容項目時,必須在開始時指定文檔類型,但模板(視圖)可以隨時更改。

  3. 如果要存儲數據的任何.NET ORM將一把umbraco工作(見http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#.NET)我使用的LINQ到SQL,亞音速&之前小巧玲瓏現在 - 但也有很多的選擇。

+0

謝謝@amelvin,我非常感謝您的回覆。與Petapoco一起,我們還有其他ORM /庫。你如何考慮Petapopo?哪一個你認爲最好? – user576510 2014-09-05 01:37:43

+1

我非常喜歡subsonic和T4模板,例如,爲每個數據庫表生成POCO(並避免大量輸入) - 因爲petapoco已經採用了Subsonic的這一方面,並​​且大部分語法非常相似,它看起來像一個亞音速升級如果聲稱的性能提升是準確的。 – amelvin 2014-09-08 09:36:33

2
  1. 任何定製我把在同一數據庫作爲我一把umbraco安裝,但一切都在自定義表。我不會觸摸Umbraco標籤,我不想影響我未來的版本更新。
  2. 表單提交的數據我存儲在自己的自定義表格中,我避免使用這些表格創建內容節點,這通常很棘手,並且不會提供我經常需要的靈活性。我所做的是創建一個「Admin」文檔類型,即登錄後面(硬編碼的訪問,但很容易連接到Umbraco用戶/成員,如果需要),並使用我自己的自定義用戶界面來顯示我存儲的自定義數據。
  3. 我使用PetaPoto(http://www.toptensoftware.com/petapoco/),它是一個通過單個文件添加的微型ORM(安裝非常簡單),使用相同的db連接字符串。然後我根據需要創建自定義模型,並與MVC的某些部分一起創建。我通常遠離路由劫持,而是使用Surface控制器和ajax調用幾乎所有的東西。

希望這會有所幫助!