知识大全 如何存贮connection string

Posted 文件

篇首语:韬略终须建新国,奋发还得读良书。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何存贮connection string相关的知识,希望对你有一定的参考价值。

  关于connection string应该存放在哪里 有许多不同的方法 每个都有自己的使用场合 根据MSDN和我以前编程的经验 总结/摘录了一篇文章 希望对大家有所帮助  

  在程序中要存储connection strings 我们有不少的选择的 每一种方法都有自己的优缺点 特别是在灵活性和安全性上 当然 很多人就直接把connection strings写在了程序里 这样虽然效率提高了一些 可是实在是非常不方便将来的修改和配置 所以并不是一种推荐的行为  

  在选择connection strings存储方式时 感觉最重要的是安全性和易配置性 其次就是性能 在各类资料中 我们可以看到 存储的方式主要有      )程序配置文件 例如asp net中的web config文件     )windows注册表中     )UDL文件     )在+的catalog中(只用于serviced ponent) 

  下面 我们逐个来讨论一下这几种方法的优缺点   

   )使用XML程序配置文件    我们可以使用<appSettings>来把 connection string存储在程序配置文件的custom settings部分     <configuration>     <appSettings>      <add key= DBConnStr value= server=(local);Integrated Security=SSPI;database=northwind;username= ;password= />      </appSettings>    </configuration> 

  优点     a)很明显 容易分发 connection string可以跟随 NET的xcopy机制极其简单的deploy     b)易编程性 我们可以使用 ConfigurationSettings 中的AppSetting来读取connection string    using System Configuration;    private string GetDBaseConnectionString()         return ConfigurationSettings AppSettings[ DBConnStr ];        c)在ASP NET中使用的话 可以自动更新 也就是说 如果一个管理员修改了web config中的connection string 下一次这个string被访问是 修改后的内容会被使用 这点在web编程中非常实用  

  缺点     安全性 虽然ASP NET中已经明确写了带 config后缀的文件是不能被客户访问的 并且NTFS文件系统可以用来进一步加强安全性 在web server中用明文来存储connection string还是让人觉得不爽啊 幸运的是 MS还提供了在配置文件中用encrypted方式存储的办法 这下基本上就OK乐  

   )使用UDL文件    OLE DB NET Data Provider支持在connection string中使用UDL文件 具体方法可以参考KB Q HOW TO: Use Data Link Files with the OleDbConnection Object in Visual C NET 不过要注意的是这种方法SQL Server NET Data Provider不支持  

  优点     这也是一种比较标准的方法 特别是你以前就一直用UDL      缺点     a) 性能 每次connection打开时都需要去读取和分析UDL文件      b) 安全性 UDL文件是以明文的方式存放的 我们只能通过NT的文件系统设置它的访问权限     要注意在ASP NET中 要保证ASP NET跑的账号有读的权限 并且 注意不要把UDL文件放在虚拟目录中 不然它有可能会被客户下载

   )使用注册表    当然我们也可以在注册表中增加一个键来存储connection 但是这样比较难以分发  

  优点     a) 安全性 我们可以对注册表的键使用ACL来控制读写权限 也可以考虑加密信息      b) 易编程性 NET也提供了很多类使我们可以容易的操作注册表     缺点     分发 这种方式必须要把相应注册表的修改也放入程序的分发过程中 一定程度上就与 NET的xcopy不相符合了         )使用自定义文件    我们当然也可以自定义一种文件格式来储存connection string 但是这样的话就没有太多优点了 而且需要额外的编程 并且不容易分发 所以在很多场合下不太适用  

   )使用+的catalog和construction arguments    在使用到+的时候 我们也会把connection string存到+的catalog中 然后通过object construction string来传递给object +会在初始化对象时调用对象的construct函数 这种方法只适用于service ponents 当我们用到分布式transaction或object pooling时 我们就可以考虑这种方法  

  优点     管理 Admin可以非常容易的使用MMC配置connection string     缺点     安全性 虽然我们可以通过+中的role来进行一定的控制 + catalog 不是一个非常安全的存储地区 所以不要以明文的形式在其中存储connection string   分发性 + catalog中的内容也必须和我们的程序一起分发 这部分的内容比较多 这里我就不一一详述了  

cha138/Article/program/net/201311/15560

相关参考

知识大全 对于Connection 对象讲述与谈论

对于Connection对象讲述与谈论  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  能通过本地

知识大全 Hibernate 使用外部 Connection 的问题

Hibernate使用外部Connection的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 JNDI Connection 池化

JNDIConnection池化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JNDI(Jav

知识大全 IBM DB2 Connect简介(1)

IBMDB2Connect简介(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!正在看的db2教

可编程序控制器中的存贮器,按其存贮内容,可分为()

可编程序控制器中的存贮器,按其存贮内容,可分为()A、地址存贮器B、用户存贮器C、数据存贮器D、系统存贮器参考答案:BCD

可编程序控制器中的存贮器,按其存贮内容,可分为()

可编程序控制器中的存贮器,按其存贮内容,可分为()A、地址存贮器B、用户存贮器C、数据存贮器D、系统存贮器参考答案:BCD

知识大全 Oracle--树的使用(Connect By)

Oracle--树的使用(ConnectBy)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  表

知识大全 数据库连接池Data Connection Framework

数据库连接池DataConnectionFramework  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 nginx报错 readv() failed (104: Connection res

nginx报错readv()failed(104:Connectionres  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让

知识大全 c#中String和string的区别

c#中String和string的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  strin