【发布时间】:2014-10-08 14:25:58
【问题描述】:
我们有一个高度可配置的 asp.net Web 应用程序。不同的组(100+组)可以登录到应用程序。对于每个组,我们都有一个可配置的 xml 文件,其中包含有关如何显示页面的信息。当用户登录时,根据他们的组 id 和 xml 文件中的配置设置,将显示网页。
例如: Group1.xml
<Group1>
<item key="Shape" value="True" />
<item key="Color" value="False" />
<item key="Submit" value="False" />
<Group1>
Group2.xml
<Group2>
<item key="Shape" value="True" />
<item key="Color" value="True" />
<item key="Submit" value="True" />
<Group2>
在上面的例子中,Shape 和 Color 是文本框,Submit 是一个按钮。根据值(True 或 False),我们要么显示文本框,要么隐藏文本框,从而动态呈现网页。
到目前为止,将这种类型的数据保存在 app_data 文件夹中的 xml 文件中效果非常好。但是随着我们在每个页面上添加更多组和更多元素,管理每个 xml 文件以确保每个 xml 文件具有相同的元素和正确的值变得越来越困难(有数千个元素和 50 多个网页)。
我们尝试将这些数据保存在数据库的表中。但是,一次读取一个值进行如此多的数据库调用是昂贵的,并且页面的性能会降低。
我们尝试将这些数据保存在表格中,并在页面加载时将表格保存在数据表格会话变量中。但是这些配置设置可以被其他组更改。由于其他组所做的更改在刷新页面之前不会加载到当前用户的会话中,因此我们会得到不希望的结果。
我们还尝试使用 app_data 文件夹中的 excel 文件,并将其用作表格来一次读取一个值,因此即使其他组更改了值,我们总是会获得最新的值来呈现页面。不确定这是否是正确或优雅的解决方案。
存储此类配置信息的最佳方式是什么,这样即使有大量的读取和写入,页面的性能也不会降低,同时又足够容易管理所有组的所有这些配置设置?
【问题讨论】: