2010-01-02 69 views
2

我有一个ASP.NET应用程序,需要存储一些设置。ASP.NET和存储动态数据 - XML或数据库?

这些设置是我的应用程序中显示的页面上的标题。标题是定期(每星期左右)改变了,我不知道如何做到这一点聪明的办法:

  1. 保存在web.config(设置慢读取时间,并且应用程序必须重新启动以检测更改)。

  2. 将设置保存到数据库中。

  3. 我自己的XML文件(例如自定义配置节在它自己的XML文件中)。

我正在寻找任何可能指向我的更好方向。

你会做什么?

+0

是什么让你觉得web.config的阅读时间很慢? – RichardOD 2010-01-02 18:26:06

回答

0

我会使用数据库。

正如其他人所说,web.config真的意味着只有应用程序级设置。与XML文件

的一个问题是,如果你决定要移动到负载平衡的情况下,那么你就不用担心如何从一台服务器复制该文件到另一个。从可伸缩性和安全性的角度来看,它被认为是在Web层的文件系统中没有任何应用程序动态数据的最佳实践(如果您希望能够更新文件,这意味着您将不得不允许您的Web应用程序写入访问本地文件系统,这是一种安全风险)。

将它放入数据库允许您在应用第一次启动时读取一次。然后,您可以使用SqlDependency或SqlCacheDependency将全部或部分内容缓存到内存中,以便代码在DB表发生更改时收到通知(如果必须,您可以使用XML文件进行类似操作)。

随着数据库的信息,您可以更轻松地添加负载平衡服务器后,如果你需要,你的Web应用程序可以保持只读。

1

这里有两个问题:

  1. 保存设置。

  2. 存储每个页面上显示的动态值。

如果您要存储应用程序设置,那么我会使用Custom Configuration Section。它允许您为您的设置创建有意义的名称,而不是使用web.configkey/value对。您可以将此自定义配置部分粘贴在其自己的XML文件中,并在您的web.config中引用它。

如果你要存储动态数据(而不是应用程序设置),那么如果你已经有一个数据库,我会使用一个数据库。

原因是web.config是为了保存设置。您可以使用它来保存键/值页面对,但这很麻烦。真正的动态数据应该与任何其他数据库数据一起保存在数据库存储中。你提到过,如果这是你要存储的数据类型,那么使用数据库是最有意义的。页面标题不是应用程序设置,它们是动态数据。如果它是本地化的数据,那么这是一个不同的故事,但你没有给出任何迹象。

0

为什么不使用umbraco作为所有网站内容/设置的内容管理系统?

在您决定集成特定元素之前,Umbraco位于asp.net网站的背景中。

你甚至可以调整页面没有代码/设置更改的更改,因为它们听起来更像内容元素。

+0

为什么要将其他CMS添加到组合中?他有一个自定义网站,他有一个数据库。为什么试图在CMS上插一些简单的东西? – 2010-01-02 18:21:17

+0

原始海报声称他的内容经常变化,他正在寻找新的方法来维护似乎是网站内容的内容。 我提出了一种cms方法,直到你调查了乳清之类的东西,就像如何创建一个简单的msintainsble网站一样,umbraco提供了你在黑暗中。 – 2010-01-03 10:18:33

1

web.config是一个地方,您可以存储与应用程序相关的信息,即应用程序不能没有的配置。因此,database server name没问题,但page name of the default.aspx不好。

其他两个选项在我看来是相等的,只有当标题由管理员修改时,才能更容易地更新记事本中的XML文件,而不是更新SQL服务器中的数据库表(除非您有更好的GUI更新它)。

编辑:你不应该害怕web.config阅读时间慢 - 只有当你“触摸”它时,即文件的“修改”属性改变时,才会重新加载文件。

0

的事实是,他们每星期左右改变纯粹基于,我想将它们存储在数据库中,并创建一个页面来管理值。

虽然这里有很多因素。需要考虑的一件事是,更改配置设置确实会导致应用程序重新启动,因为ASP.NET只会在启动时读取配置设置,然后在整个过程中缓存它们。不断更改配置文件可能会导致孤立会话和问题。这可能不是,但可能。

使用服务器上的XML文件,这是不是.NET的配置设置的一部分,将解决这个问题,但编辑更容易出错,并具有读它为每个请求的代价。

创建一个页面来管理值更最初的工作,但我认为这将在长期内还清。