我正在使用Windows窗体创建客户端服务器应用程序。所有应用程序配置都保存在名为Configuration的数据库表中,并且有用于更改其值的接口。配置表中的一些记录用于事务,例如“日志激活”。如果此日志激活值为true,则在保存事务时,它将创建一个日志文件。
因此,每次保存事务时,我总是将日志激活配置读取到数据库以获取其值。在我的情况下,我不仅读取1个配置,而且我可以读取1个或更多配置。我担心的是会有很多数据库往返来获取每个配置值,这在客户端 - 服务器架构中并不是很好的设计。
然后我尝试使用设置文件,但这种方法不适合我的应用程序,因为我使用Windows窗体开发客户端 - 服务器应用程序。每次我更新设置文件中的值时,它只会影响该计算机,而其他人则不会。
那么解决这个问题的最佳解决方案是什么,而不是在每次交易中直接读取数据库?
答案 0 :(得分:1)
这实际上取决于配置机制的工作方式。是否应在所有情况下使用当前配置值,或者在重新启动应用程序后检测配置更改是否足够?
在第一种情况下,您需要在需要之前阅读所需的值,就像现在一样。
在第二种情况下,创建一个公共静态类就足够了,每个设置都有一个成员,并且能够在应用程序启动时设置新值并读取所有值。正如我所说,缺点是在所有客户端重新启动之前不会应用设置。
后者的示例类:
public static final class Configuration
{
private static string m_setting1;
private static bool m_setting2;
static Configuration()
{
// Read all settings
...
}
public static string Setting1
{
get { return m_setting1; }
set
{
if (!m_setting1.Equals(value))
{
m_setting1 = value;
StoreSettings();
}
}
}
public static bool Setting2
{
get { rteurn m_setting2; }
set
{
if (!m_setting2 == value)
{
m_setting2 = value;
StoreSettings();
}
}
}