Windows窗体中的全局配置

时间:2014-06-11 06:51:02

标签: c# winforms

我正在使用Windows窗体创建客户端服务器应用程序。所有应用程序配置都保存在名为Configuration的数据库表中,并且有用于更改其值的接口。配置表中的一些记录用于事务,例如“日志激活”。如果此日志激活值为true,则在保存事务时,它将创建一个日志文件。

因此,每次保存事务时,我总是将日志激活配置读取到数据库以获取其值。在我的情况下,我不仅读取1个配置,而且我可以读取1个或更多配置。我担心的是会有很多数据库往返来获取每个配置值,这在客户端 - 服务器架构中并不是很好的设计。

然后我尝试使用设置文件,但这种方法不适合我的应用程序,因为我使用Windows窗体开发客户端 - 服务器应用程序。每次我更新设置文件中的值时,它只会影响该计算机,而其他人则不会。

那么解决这个问题的最佳解决方案是什么,而不是在每次交易中直接读取数据库?

1 个答案:

答案 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();
            }
        }
    }