Umbraco应用程序的体系结构

问题描述 投票:2回答:5

我是Umbraco的新手,我观看了Umbraco.tv视频,并想在项目中使用Umbraco作为管理和编辑内容的cms。我非常感谢您的指导,时间以及您对3个问题的看法:

  1. 基于Umbraco的数据驱动项目应该如何构建?对于自定义数据库表,您是使用单独的数据库还是使用相同的Umbraco数据库?
  2. 您如何使用自定义数据(非内容)?您是否将所有内容都设为文档类型,即使它是您不打算创建内容的数据,例如简单的表单提交数据?
  3. 对于DAL你使用​​什么技术或ORM? Umbraco是否提供用于保存非内容或文档类型的简单数据的任何API?

再次感谢你。

umbraco
5个回答
2
投票

1架构问题很重要,但也要考虑项目需要的复杂程度。

我通常会建议为非Umbraco数据建立一个单独的数据库,因为这样可以保证所有内容的独立性和可管理性,尤其是在项目增长时。它还意味着CMS特定数据(即内容)可以与非CMS数据分开保存,例如,用户注册。

但是,如果项目规模较小且不太可能增长,请保持简单。使用相同的数据库,并背负Umbraco的Petapoco ORM的实现。例如:

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

要么

var item = ApplicationContext.DatabaseContext.Database.Single(thingId);

2对于自定义数据,这也是需求,可维护性和简单性的问题。仅将文档类型用于需要的文档类型,并且可以存储在CMS中。我个人的规则是,如果它不是内容或组织内容,那么它不属于CMS。例如,新闻和新闻类别显然属于CMS。但是,对文章的评论没有理由在CMS中。

3关于DAL,正如我所说,Umbraco有Petapoco的实现,可以开箱即用。如果项目足够基础,那就用它吧。使用其他任何东西都没有什么意义,除非你需要一些分离和/或一些额外的咕噜声,在这种情况下我建议使用NHibernate或EF。

除了以上几点,

  • 使用NuGet;
  • 使用Umbraco的MVC模式,因为它将为您提供更大的灵活性。查看Hybrid Framework,因为它为强大而灵活的项目架构提供了一个非常好的起点;

2
投票
  1. http://www.youtube.com/watch?v=0PtzyrEFG7I
  2. 您总是需要Umbraco中的doctype,即使页面不提供任何WYSIWYG类型的可编辑性
  3. 我建议使用面向服务的体系结构,你放入Umbraco的.dll可以调用该服务。然后,您可以部署此服务并完全控制数据访问方式。选择你想要的任何方法。大多数现代网站使用ORM并不重要,尽管nHIbernate和Entity Framework是最受欢迎的。不要害怕混合和匹配更直接的数据访问形式,因为它可以为您提供更多控制,尤其是在大型查询的性能优化很重要的情况下。

如果您不熟悉在Umbraco中添加自定义.NET功能,那么尝试在Umbraco中添加.NET用户控件将为您提供一个良好的开端,并帮助您了解如何在Umbraco中使用您自己的.dll:

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


2
投票
  1. 我放在与Umbraco安装相同的数据库中的任何自定义,但自定义表中的所有内容。我没有触及Umbraco标签,我不想影响我未来的版本更新。
  2. 表单提交的数据我存储在我自己的自定义表中,我避免使用那些创建内容节点,这通常很棘手,并没有给我经常需要的灵活性。我所做的是创建一个“管理”文档类型,即登录后面(硬编码访问,但如果需要,可以很容易地连接到Umbraco用户/成员)并使用我自己的自定义UI来显示我存储的自定义数据。
  3. 我使用PetaPoto(http://www.toptensoftware.com/petapoco/),它是一个微型ORM,通过单个文件添加(安装非常简单),使用相同的数据库连接字符串。然后我根据需要和MVC的一部分创建自定义模型。我通常远离路线劫持,而是使用Surface Controllers和ajax调用几乎所有东西。

希望这可以帮助!


1
投票
  1. 您可以将包含Umbraco表的数据库用于Umbraco中未使用的表。如果使用多个数据库没有托管问题,那么您只需链接到web.config中的第二个数据库 - 这比使用默认的Umbraco数据库更安全,因为Umbraco软件包经常添加数据库表,并且可能存在命名冲突。
  2. 查看非Umbraco数据(例如,从数据库中)最好通过添加使用标准.Net模式(例如剃刀脚本,.Net用户控件)访问数据的宏来完成,然后在Umbraco中添加对宏中的宏的引用。模板(视图)。您可以为任何文档类型使用多个模板(视图);因此,如果您的文档类型称为“表单”,其中不包含任何数据,则可以使用“允许的模板”复选框来说明哪些视图对此文档类型有效。添加内容项时,必须在开始时指定文档类型,但可以随时更改模板(视图)。
  3. 如果您正在存储数据.Net ORM将与Umbraco一起使用(请参阅http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#.NET)我之前使用过Linq到Sql,Subsonic和Dapper - 但是有很多选择。

0
投票

看看我在洋葱建筑中使用umbraco的例子

https://github.com/afroukh/OnionCMS

© www.soinside.com 2019 - 2024. All rights reserved.