【问题标题】:How to cache/store application settings in a class library如何在类库中缓存/存储应用程序设置
【发布时间】:2011-02-20 00:29:19
【问题描述】:

我创建了一个可以从 Windows 或 Web 应用程序使用的类库。 类库集中需要的一些设置应该从类库中大部分方法调用应用的app.config或web.config中读取。 为了提高性能,我想为每个应用缓存一些这些设置信息。

我们该怎么做呢?一个建议是使用 HttpRuntime.Cache 对象。另一种方法可能是使用一些静态变量来存储数据,但它可能存在 AppDomain / Scope 冲突问题..

所以,我不确定这样做的最佳方法是什么(请注意,它是一个通用类,可以从 Windows 或 Web 应用程序中使用)

【问题讨论】:

  • 请注意,我应该对配置设置进行一些处理以获取我实际需要使用的内容,这可能很耗时!例如基于数据库提供者名称或类似问题创建一个 DbFactory..

标签: .net caching class-library


【解决方案1】:

您确定调用 App.config 成员时存在性能问题还是只是猜测?
如果在生成编译属性时正确编码,配置访问器实际上不会从您的配置类执行 I/O,所以我认为这不是什么大问题,我怀疑您是否会通过缓存它来获得性能。

【讨论】:

  • 您在某种程度上关于配置访问是正确的,但我应该对配置设置进行一些处理以获取我实际需要使用的内容,这可能很耗时!例如基于数据库提供者名称或类似问题创建一个 DbFactory..
【解决方案2】:

关于是否应该将类库设置存储在调用者的 .config 中,或者是否应该在实例化时将该配置信息传递给类库,我有很多内部冲突。一种解决方案是更改您的类库,以便在创建时获取其配置信息(调用应用程序仍然可以从其 .config 生成此信息)。这样您就可以让调用应用程序控制配置数据的缓存。

例如 - Web 应用程序为每个请求读取其 web.config 并将其作为配置对象传递,而 Windows 应用程序将其 app.config 一次读取到配置对象中并将其存储在某处,以便它可以不断地重新实例化库无需重新读取其 app.config。

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 2011-07-05
    • 2021-07-26
    • 2016-09-13
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2011-03-23
    相关资源
    最近更新 更多