.Net开发:ADO.NET实用技巧两则
2009-05-12 22:29:03来源:未知 阅读 ()
要想充分发挥ADO.NET的优势,不仅需要全面、深入理解ADO.net编程模型,及时总结经验、技巧也十分重要。ADO已经有多年的实践经验,ADO.NET以此为基础,提供了更加丰富、强大的工具;尽管如此,ADO.NET的设计目标毕竟不是提供一个即插即用的工具,它不会把所有的编程工作简化到仅靠鼠标点击就可以完成的程度。
ADO.NET包含了一大堆代表数据访问模型中各种逻辑实体的对象,其中尤以连接、事务这两个对象最为重要。连接的作用是建立一个与后端数据库通信的通道,创建连接对象必须以特定的.NET数据提供者为基础。事务对象可以在已有的连接对象上创建,也可以通过显式地执行一个BEGIN TRAN SQL语句创建。虽然理论很简单,但实际上,围绕连接、事务的不确定因素很多,而且它们对应用整体的稳定性和效率有着至关紧要的影响。
如何保存连接字符串,保护连接字符串中可能包含的敏感信息(例如密码)?怎样设计一个完善的数据访问策略,既考虑到安全性(即身份验证、授权),却又不至于对性能和可伸缩性造成太大的影响?如果需要用到事务,那么如何高效地实现和控制事务?采用自动事务还是手动事务?在使用ADO.NET时,这些问题都必须仔细考虑。
一、连接字符串,连接池
数据库连接是一种重要的、有限的、开销昂贵的资源,因此用好连接对象是任何应用的最基本的要求。使用数据库连接的要点可总结如下:
保存连接字符串应注意安全。
打开连接应迟,关闭连接应早。
连接字符串是访问数据库的钥匙。连接字符串除了说明要访问的数据之外,还包含了用户为什么可以访问那些数据的身份证明。在执行数据库操作时,用户身份证明是确定数据访问权限的最重要的因素。
1.1 保存连接字符串
目前,硬编码的连接字符串具有最好的性能,因为它们直接编译进了应用的代码之中。然而,硬编码的字符串影响程序的灵活性,一旦连接字符串改变,应用程序必须重新编译。
将连接字符串保存到外部提高了灵活性,代价是访问外部字符串需要付出额外的开销。但在绝大多数情况下,由此导致的性能开销可以忽略不计,真正需要担心的是安全问题。例如,攻击者可能修改、窃取连接字符串。将连接字符串保存到外部环境的常见途径有:配置文件,UDL文件,Windows注册表。
.NET框架配置文件以纯文本文件的形式部署,访问方便。如果连接字符串包含密码,文本格式将是最大的缺陷所在,因为密码将以明文的形式保存。可以考虑引入一个专用的加密/解密引擎,不过这部分工作需要开发者自己完成。
UDL文件是供OLE DB提供者使用的文本文件,也就是说,SQL Server托管提供者不支持UDL文件。UDL文件也存在和前面的配置文件一样的安全问题,总地看来优势不多。
最后,Windows注册表可以作为一个天然安全的存储场所。注册表是一个保存关键信息的系统知识库,如果结合运用加密技术,可以达到较高的安全性。使用注册表的主要缺点是部署麻烦,要求创建注册键(可能还要执行加密)以及从注册表读取数据。虽然.NET Framework提供了一组调用底层Win32 API的封装类,但这些类都没有提供加密功能。ASPnet_setreg.exe工具可以用来创建HKEY_LOCAL_MACHINE下的注册键保存用户名称和密码,例如:aspnet_setreg.exe -k "SoftwareMyData" -u:userID -p:password。该命令将加密指定的用户ID和密码。
1.2 连接池原理
连接池允许我们通过一个缓冲池重用现有的连接对象,避免每次使用连接对象时都要新建一个对象。采用连接池之后,只要少量的连接对象就可以满足大量客户端的需要。
每一个连接池都与一个独立的连接字符串及其事务上下文关联。每次打开一个新的连接,数据提供者会尝试将指定的连接字符串与连接池的字符串进行匹配。如果匹配失败,数据提供者创建一个新的连接并将它加入连接池。连接池被创建之后,除非进程结束,否则不会被拆除。有人认为这种处理方式会影响性能,其实不然,维护一个不活动的或者空的连接池不需要多少开销。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 为你介绍asp.net的执行事务代码 2020-03-18
- ASP.NET实现进度条效果 2020-03-15
- MVC数据验证详解 2020-03-14
- asp控件和html控件的概念区别 2020-03-09
- .Net MVC网站中配置文件的读写 2020-02-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash