我们有一个高度可配置的asp.net web应用程序。不同的组(100多个组)可以登录到应用程序。对于每个组,我们都有一个可配置的xml文件,其中包含有关如何显示页面的信息。当用户根据他们的组ID和xml文件中的配置设置登录时,显示网页。在asp.net中保存动态网页配置数据的最佳方法
例如: 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>
在上面的例子,形状和颜色是文本框和提交是一个按钮。根据值(True或False),我们显示文本框或隐藏文本框,从而动态呈现网页。
将此类型数据保存在app_data文件夹中的xml文件中,迄今为止效果很好。但是,随着我们在每个页面上添加更多组和更多元素,管理每个xml文件以确保每个xml文件具有相同的元素和正确的值变得越来越困难(有数千个元素和50多个网页)。
我们尝试将此数据保存在数据库的表中。但是,进行如此多的数据库调用来逐个读取值是非常昂贵的,并且页面性能下降。
我们尝试将此数据保存在表中,并在加载页面时将表保存在数据表会话变量中。但是这些配置设置可以被其他组更改。由于其他组所做的更改不会被加载到当前用户的会话中,直到他们刷新页面为止,所以我们得到了不理想的结果。
我们还尝试在app_data文件夹中使用excel文件,并将其用作表格一次读取一个值,所以即使其他组更改值,我们也始终会获取最新的值以呈现页面。不知道这是否是正确或优雅的解决方案。
什么是存储这种类型的配置信息的最佳方式,即使有大量的读写操作,页面的性能也不会降低,并且同时很容易管理所有组中的所有这些配置设置?