【问题标题】:asp.net CMS solution: best mechanism for storing the data in SQLasp.net CMS 解决方案:在 SQL 中存储数据的最佳机制
【发布时间】:2008-11-24 00:20:02
【问题描述】:
我曾使用.NET 平台开发过许多CMS 系统(CMS 管理系统在ASP.NET 中,呈现内容的站点是ASP.NET 和PHP)。
传统上,我将生成的内容存储在序列化为 XML 的类中,这些类存储在 MSSQL 2005/2008 中的 varchar(max) 字段中。这使得内容的不同消费者在结构上可以方便地使用,并且可以绑定到类(用于重新打开 CMS 记录并对其进行编辑,或用于消费网站)。
但是,我一直想知道其他 CMS 商店流行哪种类型的存储机制,以及是否有人喜欢或对我最熟悉的方法有严重的问题。
好,坏,丑?你会怎么做?
【问题讨论】:
标签:
asp.net
content-management-system
content-management
【解决方案1】:
我个人将数据视为将存储在系统中的任何其他数据,例如,我为 DNN 构建了一个存储文本数据集合的模块,我在表中有以下列集合。
- EntryId
- 更新者
- 更新日期
- 创建者
- 创建日期
- 排序顺序
- 内容 (NTEXT)
- 隐藏(位)
我发现这使数据易于查找,并且无论调用者如何都易于操作。
【解决方案2】:
在我们的 CMS 中,我们使用与 Mitchel Sellers 所描述的结构类似的结构,但我们将内容分隔在自己的表格中。这在优化数据库时很有用,并允许我们轻松共享内容版本控制的功能。然后,我们为每个“实体类型”(如文档、产品等)提供一个表格,用于描述实体。
【解决方案3】:
我们有一个 ASP.NET CMS 作为我们的主要产品,所以我很熟悉这个问题。这取决于您所说的“生成的内容”是什么意思。如果您的意思是用户输入的,那么我们使用表格结构将 HTML 存储为 ntext 和其他页面元素,该结构允许我们为每个页面元素拥有一组灵活的字段(有些配置使用一个或两个字段,其他则有几十个)。
这样做的主要好处是数据库中的数据代表了用户实际输入的内容。将 XML 存储在 SQL 数据库中只是添加了一层我们不需要的重定向。您可能试图让 SQL 像 OO 存储一样工作,这是 ORM 帮助解决的典型问题。
您可能会遇到的一个问题是难以将现有的 SQL 搜索机制与 XML 数据重用。