2014-09-03 172 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调用几乎所有的东西。

希望这会有所帮助!