![]() |
1
1
把它拆开。使用固定的XML存储文件解决方案进行数据库连接,并使用.NET内置的加密程序功能进行加密(不要自行滚动)。然后,使用结果数据库连接,在数据库中查找“设置表”。这样,您就可以在不重新部署的情况下修改设置。如果您的客户需要在不使用Visual Studio的情况下更改数据库连接字符串,只需编写一个能够生成加密连接字符串并保存固定XML存储文件的小Windows窗体应用程序,如有必要,还可以连接到数据库(通过同一文件)并根据用户需要修改设置表。 |
![]() |
2
3
system.configuration.configurationmanager.connectionStrings和system.configuration.configurationmanager.appsettings 包含来自正在执行的应用程序的设置,以便在DAL中可以获取存储在web.config文件中的设置。 对于您的系统,您可以创建一个自定义配置节,该节将位于web.config文件中,或者DAL的消费者*.config文件中,您可以指定它们从设计和位置的单独配置文件中加载。 Referencing external config files from Web.Config How to: Create Custom Configuration Sections Using ConfigurationSection |
![]() |
3
2
您可以添加一个名为app.config的web.config文件,该文件编译成一个名为后面代码的dll或exe项目的文件。这是完全可变的,不需要重新编译。您可以使用连接字符串的标准设置,以及可以在键/值对中定义的各种应用程序设置,或者您可以定义自己的自定义配置设置类和节。您甚至可以在应用程序配置中引用设置—这样,您可以在应用程序中存储3个设置(dev、qa、prod),然后只在运行时在app.config文件中引用所需的设置。下面是一个为Web服务设置创建的示例。
<?xml version=“1.0”encoding=“utf-8”?gt;
|
![]() |
4
2
如果我读得正确的话,听起来你不明白web.config/app.config是如何工作的。假设您有如下结构: DAL项目 参考文献:
Classes:
网站项目 参考文献:
页:
在您的databasehelper类中,您可以这样引用连接字符串:
当这种情况在运行时发生时,您的databaseHelper类将在与您的网页相同的应用程序域下运行,因此,对configurationManager的任何调用都将从Web项目提供的web.config文件加载请求。 因此,您只需要web/console/winforms/etc中的一个配置文件…项目,并且不需要担心在设计时在每个类库项目中都有一个。 如果您实际将DAL作为服务或单独的控制台应用程序或其他应用程序运行,那么只有这样,您才需要给DAL项目提供自己的app.config/web.config文件。 |
![]() |
5
1
一个完全不同的方法是使用 SQLite 并将所有应用程序设置存储在其中。如果这对应用程序很重要,您可以对有问题的数据库进行密码保护,并且可以创建一些简单的属性/值表来存储数据。 使用 SQLite ADO adapter 只需要在项目中添加一个DLL就可以访问设置,而那些不想使用Visual Studio的人也可以访问sqlite db本身。甚至还有一个插件可以让火狐与sqlite数据库交互。 |
![]() |
6
1
您可以将设置存储在任何旧的XML文件中,并使用XmlSerializer获取类并将其从XML转换为<->。在另一个 answer 我写了一些代码。链接的答案序列化简单对象的列表,但也可以序列化一个大型配置对象。 因为xmlserializer在公共属性之间进行序列化,所以如果不希望更改值,则可能需要使类本身不可变(popsicle样式),或者在反序列化的类前面具有只读外观。 这是一个很好的技巧。您可以通过configurationmanager.appsettings[]设置它,使用它自己的配置节和外部文件引用,或者您也可以为每个配置类硬编码一个特定的XML文件名。 |
![]() |
7
1
看一看 Config.Net - 最简单的.NET开发人员配置框架 . 一个全面的易于使用和强大的.NET配置库,完全覆盖了单元测试,并在数千台服务器和应用程序上进行了野外测试。 |
![]() |
8
0
您可以有一个接口来映射DAL上使用的设置。然后在应用程序上,你可以使用IOC将设置反馈给DAL。 |
![]() |
9
0
如果您使用的是DI框架(如Unity),那么可以指定构造函数参数。因此,假设DAL提供者可以有一个获取其连接字符串的构造函数。 我知道您不能在接口中强制构造函数,但这是我们必须处理的事情。我知道这个框架有几个地方对构造函数签名有着无法言喻的依赖性… |
![]() |
Haim Ohayon · 这些链接之间有什么区别? 3 年前 |