架构问题是重要的,但它也有反对需要项目多么复杂要加以考虑。
我通常会为非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,因为它为强大而灵活的项目架构提供了一个非常好的起点;
感谢@Digbyswift, 你能解释一下吗?除非你需要一些分离和/或一些额外的咕噜声,否则我会建议使用NHibernate或EF,否则可以使用其他方法。 难道我们不能使用Petapoco分离DAL吗? – user576510 2014-09-05 00:55:18
亲切解释可能会出现一些额外需要的情况,我可能需要EF或Nhibernate? – user576510 2014-09-05 01:17:32
您可以争辩说,如果您打算使用Petapoco的单独安装,那么您可以使用Umbraco的实现,特别是如果项目不够复杂以保证它。然而,你是对的,你可以使用你自己的Petapoco,而且我有好几次。 EF和NHibernate比Petapoco这样的微型ORM提供了许多优势。例如,NHibernate具有缓存层以防止在同一会话中两次调用对象,并且还有一个成熟的查询API。 – Digbyswift 2014-09-05 08:45:01