配置问题:在app.config最佳实践中共享模块的连接字符串

时间:2010-07-18 04:42:11

标签: .net configuration

我在[app | web] .config和程序集(例如DAL和Reporting)中声明了依赖于此连接字符串的连接字符串。配置此类程序集的最佳选择是什么:

  • 在[app | web] .config connectionStrings部分中使用硬编码连接字符串名称,让程序集通过硬编码名称检索其配置。因此可能会有两个相同的连接字符串:“reportingServer”和“dataSource”。

  • 将connectionStrings部分中唯一的连接字符串用于您喜欢的任何名称,并通过自定义配置部分配置DAL |报告程序集以使用此名称。现在程序集检索要使用的连接字符串名称,然后检索连接字符串

  • 通过AppSettings硬编码密钥配置连接字符串名称。例如,您应始终拥有“reportingServerConnectionStringName”&在这种情况下,“dataSourceConnectionStringName”键。

  • 我错过了更好的东西...

提前谢谢!

2 个答案:

答案 0 :(得分:1)

你可以看一下这个问题的好习惯:
Connection String Best Practices

另外,ASP.NET中的企业连接字符串管理 - 最佳实践
http://weblogs.asp.net/jgalloway/archive/2004/05/11/129941.aspx

希望它有所帮助!

//编辑:添加以下内容

拥有Config文件的主要优势正是您正在处理的场景(多个项目和集中配置)。

无论哪种方式,您都需要对程序集的某些信息进行硬编码,以便能够从App / Web配置中提取所需的信息。

出于实际目的,我通常会保留两个连接字符串(“reportingServer”和“datasourceServer”),如果需要使它们动态化,请使用两个AppSettings键动态加载所需的连接字符串。

一种简单但有效的方法,可以动态加载连接字符串。

<appSettings>
<add key="reportingServer" value="reportingServerDev"/>
<add key="dataSourceServer" value="dataSourceServerDev"/>
</appSettings>
<connectionStrings>
<add name="reportingStaging" connectionString="proper connection string"/>
<add name="reportingDev" connectionString="proper connection string"/>    
<add name="dataSourceStaging" connectionString="proper connection string"/>
<add name="dataSourceDev" connectionString="proper connection string"/>
</connectionStrings>

希望这次我能在正确的背景下回答。

快乐配置!

答案 1 :(得分:1)

我通常有两种处理连接字符串的方法。第一种方式是你在第一个项目符号点列出的方式。

优点是:

  • 很容易
  • 如果组件使用相同的 连接字符串名称,你可以得到 重用

缺点是:

  • 名称已修复
  • 如果您不希望同一个连接使用相同的名称,那么您就会被卡住 - 尽管覆盖/使用add&amp; amp;在这种情况下删除元素可能有帮助,但我没有测试它

我使用的另一种技术与ASP.NET Membership等使用的提供者模型相同

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
  </connectionStrings>
  <system.web>
    <membership defaultProvider="SqlProvider">
      <providers>
        <add 
          name="SqlProvider" 
          type="System.Web.Security.SqlMembershipProvider" 
          connectionStringName="SqlServices"
          moreSettings="... other settings ..."  />
      </providers>
    </membership>
  </system.web>
</configuration>

优点是:

  • 您可以跨多个组件重用连接字符串
  • 连接字符串名称未在程序集中进行硬编码
  • 这种方法更灵活

缺点是:

  • 要设置更多工作 - 有时候对小项目来说有点过分
  • 需要了解如何设置配置部分和提供程序(不一定是坏事,有时它们非常有用)
  • 配置文件可能会变得更冗长。