我有一个ASP.NET应用程序,需要存储一些设置。
除其他外,设置是我的应用程序中显示的页面上的标题。标题会定期更改(每周左右),我想知道如何以聪明的方式做到这一点:
保存web.config
中的设置(慢读取时间,必须重新启动应用程序以检测更改)。
将设置保存在数据库中。
我自己的XML文件(例如自己的XML文件中的自定义配置部分)。
我正在寻找可以指向更好方向的任何事情。
你会做什么?
答案 0 :(得分:1)
这里有两个问题:
存储设置。
存储每页显示的动态值。
如果您要存储应用程序设置,那么我会使用Custom Configuration Section。它允许您为设置创建有意义的名称,而不是key/value
使用的web.config
对方法。您可以将此自定义配置部分粘贴在自己的XML文件中,并在web.config
。
如果您要存储动态数据(不是应用程序设置),那么如果您已有数据库,我会使用数据库。
原因是web.config旨在保存设置。您可以使用它来保存键/值页面对,但这很麻烦。真正的动态数据应与任何其他数据库数据一起保存在数据库存储中。您提到过,因此如果您将要存储的数据类型使用数据库最有意义。页面标题不是应用程序设置,它们是动态数据。如果它是本地化数据,那么这是一个不同的故事,但你没有给出任何迹象表明它。
答案 1 :(得分:1)
web.config
是存储与应用程序相关的信息的地方,即应用程序不能没有的配置。因此,database server name
是正常的,但page name of the default.aspx
不正常。
在我看来,其他两个选项是相同的,只有当管理员更改了标题时,才能更容易更新记事本中的XML文件,而不是SQL服务器中的数据库表(除非你有一个很好的GUI来更新它)。
编辑:您不应该害怕web.config
读取时间较慢 - 只有在您“触摸”文件时,即文件的“已修改”属性发生更改时,才会重新加载文件。
答案 2 :(得分:0)
为什么不将umbraco用作所有网站内容/设置的内容管理系统?
Umbraco位于asp .net网站的背景中,直到您决定整合特定元素。
您甚至可以安排更改页面而不需要代码/设置更改,因为它们听起来更像是内容元素。
答案 3 :(得分:0)
纯粹基于每周更改它们的事实,我将它们存储在数据库中,并创建一个页面来管理值。
但这里有很多因素。需要考虑的一件事是,更改配置设置会导致应用程序重新启动,因为ASP.NET仅在启动时读取配置设置,然后在持续时间内缓存它们。不断更改配置文件可能会导致孤立会话和诸如此类的问题。这可能不是非常,但可能。
在服务器上使用xml文件,这不是.NET配置设置的一部分,可以解决这个问题,但编辑它更容易出错,并且每次请求都需要读取它。
创建一个用于管理值的页面是更初始的工作,但我认为从长远来看它会得到回报。
答案 4 :(得分:0)
我会使用数据库。
正如其他人所说,web.config
仅适用于应用程序级设置。
XML文件的一个问题是,如果您决定转向负载平衡方案,那么您必须担心如何将该文件从一个服务器复制到另一个服务器。从可扩展性和安全性角度来看,它被认为是在Web层的文件系统中没有任何应用程序动态数据的最佳实践(如果您希望能够更新文件,则意味着您必须允许您的Web应用程序进行写入访问本地文件系统,这是一个安全风险)。
将其放入数据库可让您在应用首次启动时阅读一次。然后,您可以使用SqlDependency或SqlCacheDependency将全部或部分内容缓存在内存中,以便代码在DB表更改时收到通知(如果必须,您可以使用XML文件执行类似操作)。
使用数据库中的信息,您可以在以后更轻松地添加负载平衡服务器(如果需要),并且您的Web应用程序可以保持只读状态。