2014-10-10 79 views
0

我们在某些服务器上有一组VB.NET/IIS Web服务,并且它们在网站的根目录中有web.config文件,它们已经在阅读配置。有一种新的配置需要被添加,它会立即比其他配置长得多,并且它只会成长。它本质上是一个以逗号分隔的值,我希望将其专门保存在某种配置文件中。web.config与用于存储逗号分隔值的文本文件

起初我开始用文本文件做这个,但是有一个问题。当Web服务线程和进程正在运行时,文本文件的内容可能会发生变化,因此每次需要访问其值时都需要重新读取该文件。我想过使用某种缓存,但除非每次更新文件时都重新启动Web服务,否则缓存会阻止立即使用文件的更新。但每次从文本文件中读取都很慢...

然后,将这个值放在web.config中,以及服务已经使用的其他配置。当web.config被改变时,这些改变可以被缓存在代码中,在立即进入游戏之前。然而,web.config是web.config,它不是一个完全不重要的文本文件,只是简单地从代码中读出。 IIS以特殊方式处理web.config。

我很想去考虑在web.config中放置一个逗号分隔值的任何负面影响,将它们存储在文本文件(或数据库,可能不能用于这反正),但我想我最好问。

在web.config中存储一个可能很长的逗号分隔值而不是它自己的小文本文件会产生什么影响?要么是文件特别好还是坏主意?对我来说,似乎web.config很容易相处,而不必一遍又一遍地重新读取文件,但肯定比普通用户意识到的要多。谢谢!

+1

频繁请问这数据的变化?如果是这样,web.config将是一个坏主意。每次更改web.config时,应用程序池都会被回收。 – Namrehs 2014-10-10 13:22:27

+0

@Namrehs它的变化频率可能会有小幅上升,但大多数情况下,它应该相当稳定。 – Panzercrisis 2014-10-10 13:23:34

+1

@Namrehs这很有启发。你想用它作为答案吗? – Panzercrisis 2014-10-10 14:11:17

回答

1
+0

其他人的一点信息:一旦给定的文件被改变,Cache对象中的键值对就可以被设置为无效。将这与将逗号分隔的列表放在文本或csv文件中相结合,您可以非常接近所有世界中最好的。这些值被缓存直到文件再次被更改,然后它们可以被立即重新应用,您不会持续读取文件,应用程序池不会被回收等等。唯一需要注意的是,您可能拥有以完全限定对Cache对象的引用的名称... – Panzercrisis 2014-10-10 14:29:56

+0

...不像他们的文档所暗示的那样只是说'Cache(“myKey”)',你可能不得不说'System.Web.HttpContext.Current .Cache( “的myKey”)'。另一个解决方法是存储对“System.Web.HttpContext.Current.Cache”的引用,以便您不必每次输入太多内容 - 可选地调用引用本身“Cache”。 – Panzercrisis 2014-10-10 14:33:16