關于使用ADO.NET編程連接池講解
ADO.NET經過長時間的發展,很多用戶都很了解ADO.NET編程了,這里我發表一下個人理解,和大家討論討論。要想充分發揮ADO.NET的優勢,不僅需要全面、深入理解ADO.net編程模型,及時總結經驗、技巧也十分重要。ADO已經有多年的實踐經驗,ADO.NET以此為基礎,提供了更加豐富、強大的工具;盡管如此,ADO.NET的設計目標畢竟不是提供一個即插即用的工具,它不會把所有的編程工作簡化到僅靠鼠標點擊就可以完成的程度。
#T#ADO.NET編程包含了一大堆代表數據訪問模型中各種邏輯實體的對象,其中尤以連接、事務這兩個對象最為重要。連接的作用是建立一個與后端數據庫通信的通道,創建連接對象必須以特定的.NET數據提供者為基礎。事務對象可以在已有的連接對象上創建,也可以通過顯式地執行一個BEGIN TRAN SQL語句創建。雖然理論很簡單,但實際上,圍繞連接、事務的不確定因素很多,而且它們對應用整體的穩定性和效率有著至關緊要的影響。
如何保存連接字符串,保護連接字符串中可能包含的敏感信息(例如密碼)?怎樣設計一個完善的數據訪問策略,既考慮到安全性(即身份驗證、授權),卻又不至于對性能和可伸縮性造成太大的影響?如果需要用到事務,那么如何高效地實現和控制事務?采用自動事務還是手動事務?在使用ADO.NET時,這些問題都必須仔細考慮。
連接字符串,連接池
數據庫連接是一種重要的、有限的、開銷昂貴的資源,因此用好連接對象是任何應用的最基本的要求。使用數據庫連接的要點可總結如下:
◆保存連接字符串應注意安全。
◆打開連接應遲,關閉連接應早。
連接字符串是訪問數據庫的鑰匙。連接字符串除了說明要訪問的數據之外,還包含了用戶為什么可以訪問那些數據的身份證明。在執行數據庫操作時,用戶身份證明是確定數據訪問權限的最重要的因素。
保存連接字符串
目前,硬編碼的連接字符串具有最好的性能,因為它們直接編譯進了應用的代碼之中。然而,硬編碼的字符串影響程序的靈活性,一旦連接字符串改變,應用程序必須重新編譯。將連接字符串保存到外部提高了靈活性,代價是訪問外部字符串需要付出額外的開銷。但在絕大多數情況下,由此導致的性能開銷可以忽略不計,真正需要擔心的是安全問題。例如,攻擊者可能修改、竊取連接字符串。將連接字符串保存到外部環境的常見途徑有:配置文件,UDL文件,Windows注冊表。
.NET框架配置文件以純文本文件的形式部署,訪問方便。如果連接字符串包含密碼,文本格式將是最大的缺陷所在,因為密碼將以明文的形式保存。可以考慮引入一個專用的加密/解密引擎,不過這部分工作需要開發者自己完成。