当前位置:首页 > Web开发 > 正文

.NET开源类库Nini手册(INI、XML、注册表的配置应用)

2024-03-31 Web开发

@(目录)

Nini .NET配置库()
VB代码的注释我保留了原文注释,它和C#注释的内容是一样的,下载链接在文章末尾。

1.简介 1.1什么是应用程序配置数据?

作为开发人员,您始终需要处理应用程序配置数据。常见的示例是INI 文件,XML文件, .NET配置文件(也称为“ .config”),Windows注册表和命令行(argv)参数。配置文件的优点是它们加载速度快,不占用大量空间且易于编辑。

1.2问题

尝试创建配置文件访问方案不能满足程序员或最终用户的需求。为了给出真实的生活场景,我为一个使用Windows注册表API(应用程序编程接口)配置其原始程序的组织工作。后来,他们开发了自己的ASP配置类。大约在同一时间,另一个小组开发了一个API,该API可从数据库中获取数据。然后,当ASP.NET出现时,他们开始使用Web.config。在短短的几年之内,配置数据源的数量就从一增加到了四个!不用说,获取配置数据通常成为一项艰巨的任务。以下是可以改进配置管理的三个主要方面:

API
开发人员使用配置文件格式,以使其应用程序在尽可能短的时间内运行。但是,通常在事后才添加用于访问此数据的API,从而导致API不够灵活。在很小的应用程序中,这可能不是问题,但是随着程序代码库的增长,配置信息通常会遍及整个应用程序代码。

最终用户
配置文件通常不会考虑最终用户。通常,配置选项是简洁的编程术语,只有最勇敢的用户才敢更改它们。这导致开发人员不得不编写复杂的配置文件编辑器,或更糟糕的是,它们会完全重新设计其原始API。

多个配置源
随着您软件的成熟,添加更多应用程序配置类型的情况并不少见(例如我之前给您的示例)。这通常是由于合并其他项目中的代码,新的改进格式以及迁移到不同的编程平台而引起的。这迫使程序员学习多个API。最终结果是代码不一致,也不适合新程序员。不会替换旧的配置文件,因为程序员及其经理不适应更改成熟的代码。编辑文件的用户可以抵制此更改,因为他们希望不学习新的文件格式。

1.3介绍Nini

Nini是一个功能强大的 .NET配置 库,旨在帮助快速构建高度可配置的应用程序。Nini提供了一种解决方案,试图消除上述问题。它提供了一个大型功能集,可为您提供从概念到成熟产品的每个阶段都将使用的功能。这是通过简单但灵活的API实现的,该API提供了对基础配置源的抽象。它解决了我上面描述的所有问题。我们将在下面的示例中看到如何完成此操作。

2.入门 2.1一个简单的例子

为了向您展示Nini如何解决这些问题,让我们来看一个示例。首先,让我们看一个示例配置文件。对于本手册中的大多数示例,我将选择INI 格式。INI文件是一种久经考验的真实配置文件类型,用于诸如MySQL,PHP和Samba之类的著名开源项目 。实际上,Nini支持多种INI文件类型。它们非常简单且易于编辑,因此仍然是非常受欢迎的选择。Nini包含它自己的INI解析器类(IniDocument),该类 完全用C#编写,没有 Windows API代码,因此它是跨平台的。这是此示例的MyApp.ini文本:

; MyApp.ini [Logging] File Name = MyApp.log MessageColumns = 5 MaxFileSize = 40000000000000

以下是一段C#示例代码,它描述了如何从上述文件中的INI文件访问配置数据:

using Nini.Config; IConfigSource source = new IniConfigSource("MyApp.ini"); string fileName = source.Configs["Logging"].Get("File Name"); int columns = source.Configs["Logging"].GetInt("MessageColumns"); long fileSize = source.Configs["Logging"].GetLong("MaxFileSize");

这是VB中的示例:

Imports Nini.Config Dim source As New IniConfigSource("MyApp.ini") Dim fileName As String = source.Configs("Logging").Get("File Name") Dim columns As Integer = source.Configs("Logging").GetInt("MessageColumns") Dim fileSize As Long = source.Configs("Logging").GetLong("MaxFileSize")

好的,那个例子给您带来了一些麻烦。首先,我们使用Nini.Config将Nini的配置名称空间包含在虚构的应用程序中。接下来,我们使用IniConfigSource 类加载INI文件。在Nini中,每种配置文件类型都有其自己的“ Source”类。此类知道如何加载和保存文件。这些类中的每一个都实现IConfigSource 接口,因此您可以更轻松地抽象地使用多种配置类型。加载文件后,所有部分(在本例中为[Logging]部分)都将转换为接口IConfig。 并添加到Source类的集合中。IConfig类提供了非常快速的访问权限,,以检索,添加或删除配置密钥(例如上述INI文件中的“文件名”)。IConfig类的方法包括 Get, GetString, GetInt, GetFloat, GetDouble和GetLong 方法。所有以“ Get”为前缀的方法都将重载以提供更多数据。接下来的几节描述了如何使用这些重载。

2.2默认值

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41945.html