• RFID会议签到系统总结(五)――系统配置(上)


     

    由于在XML处理方面的长足进步,现在写程序在配置方面比之以前是方便多了。比如在.net 1.1里,对于很简单的配置,用<appSettings>节就可以轻而易举的解决问题,你要读取配置一行代码就解决问题了。即使是要配置的变量稍微多一点,但化繁为简后用上述方法也可以胜任。(不过我看到过上百个<add key=”” value=”” />在同一个配置文件里,这样的话呢就太恐怖了,不知那是如何维护的)

    这个系统要配置的东西不算很多,不过有几点比较的棘手。首先是有些变量是要求可写的,比较象数据库连接,象签到终端所属的管控端地址等,这些东西不是你程序安装时配置好就行的。再就是有些变量之间是有结构、有层次的,比如关于硬件方面的配置,一种硬件设备就有一组配置;比如象管控端程序的菜单呀,工具栏呀这些东西,每一项都带很多参数,一项项地再层层组成一个大集合。最后就是程序可能是不止一个配置文件的(管控端程序就是分为几个配置文件的)。这样势必得自己在配置管理方面下点功夫,不能直接用Framework里现成的了。

    现成的东西是不能用了,但在Framework里半现成的还是有,我们可以自定义配置节,然后自己实现配置节处理程序,这样在应用端跟现成的基本没什么区别了。

    .net 1.1里,所有的配置节处理程序都必须实现IConfigurationSectionHandler这个接口,这个接口只有Create这么一个方法,在这个方法里我们可以决定如何分析配置节的XML,以向外提供一个系统可以认识的一种配置结构。我很顺理成章的就决定用XML序列化的方法来实现配置文件XML字串与配置设置类之间的转化。

    第一步先要设计一些配置设置的类,签到终端程序的配置基本上可以分下数据库、通讯、硬件及其他这四个部分(在管控端还有菜单、工具栏等等)。类的设计没什么好说的,重要的就是要注意一些XmlAttribute的运用,这些东西在XML序列化时会派上用场。关于配置设置类举一个简单但比较齐全的例子,其中即有Element,又有Attribute,而且还有不用序列化的属性。

    下面是数据方面的配置设置

    数据访问、数据同步配置类


     

    (因为这个配置设置类在管控端只需要一个数据库连接串即可,但为此多写一个类又觉得心有不甘,所以偷懒加了个编译指令双方可以共用)

    相应的在配置文件里的配置就象下面这个样子:

        <Data Local="DGkDBWoADigKLAIMkiOk+vy5sd5Dg=="

           Remote="DGnRBWoADiH4jOnb4uqjdE5ZQmEIsVw==">

           <Detect-ms>1000</Detect-ms>

           <Sync-ms>1000</Sync-ms>

        </Data>

     

    二头的东西都具备,现在写中间的配置节处理程序。因为配置节比较多,而且每一个处理程序的写法都是一样的,所以又多了个处理程序的基类。

    自定义配置节处理程序的基类


      

    上面HandlerSectionObjectMap.Dictionary里存放着各个SectionHandler与具体的配置设置类的类型的映射。

    SetSection方法则是为写配置文件而准备的,其实就是一个XML序列化的过程(而Create则是反序列化过程)。

    这样以后,只要在应用里写ConfigurationSettings.GetConfig("Data") as DataCfg就可以把配置文件的配置读出来了。当然最后别忘了在配置文件的开头加上相应的<section>,比如:

    <section name="Data"

           type="SectionHandler.DataSectionHandler,Common" />

     

    一贴代码这文章就长了好多,今天先到这儿了,写配置文件的问题下篇再述。

     

  • 相关阅读:
    Contract
    VS.NET 发布 常识
    案例分析:培训合同与赔款事宜
    DNN最新资源,目前在学SAP,所以.Net的工作就停滞了。
    劳动争议处理依据劳动法
    开发网格应用程序<1>
    BI在中国成了装饰品
    VOIP侵蚀电信利益,未来最赚钱的行业.
    [转]个人知识管理-Web2.0技术下的一个热点
    [转]冲杯三鹿奶粉给你喝!
  • 原文地址:https://www.cnblogs.com/lichdr/p/781441.html
Copyright © 2020-2023  润新知