2008-12-11 146 views
2

我只查看BlogEngine.Net源代码,并对它如何存储应用程序设置很感兴趣。(web.config | app.config)中的配置设置与静态类对象

代替使用我习以为常的web.config或app.config,源代码使用一个使用单例模式实现的静态类对象来实现应用程序设置。信息仍然存储在设置文件中,但任何调用信息都是通过将所有信息预载入属性值的类对象完成的。

不同方法的优点?

回答

5

如果您有一个可以更改配置设置的管理区域,写入web.config将导致应用程序重新启动并且所有用户都丢失会话数据。使用单独的配置文件可以防止这种情况发生。

+3

如果使用持久性会话管理系统(即SQLServer或ASP.Net状态服务器),根据我的测试,这不会导致会话丢失。 – JamesEggers 2009-01-07 15:17:22

1

该模型的一个严重缺陷是无法提取在应用程序之外进行的更改。由于配置设置在启动时加载并保存在内存中,所有更改都必须通过管理页面或应用程序脱机进行。

+0

更新web.config时,Web应用程序会自动循环。 – Kon 2009-01-07 15:08:50

0

有优点和缺点有属性作为配置设置访问器。

一方面,拥有这样一个有属性的类为开发团队提供了更好的组织和更可重用的代码。

另一方面,每当你添加一个新的配置设置,你将不得不更新类和重建应用程序?

0

根据我的理解,web.config文件在应用程序启动时加载到缓存中。我很长时间没有看这个,所以我可能会误解。如果这是真的,那么我真的不明白为什么单身,静态类模式会有好处。如果使用ASP.Net状态服务或SQL状态服务器代替默认的进程内会话管理,则重新启动Web应用程序(通过IIS或通过修改配置)不会影响会话。总而言之,我不完全确定为什么blogengine.net会走这条路。