隨著Microsoft SQL Server 2005 Beta 2的發布,數據庫開發的方式正在改變中。作為一個數據庫開發人員,現在你可以更好的把工作關注在功能、對本機格式的數據的訪問(如XML)、以及利用強大的數據庫服務器創建更復雜的系統上。數據庫開發工作正前所未有的越來越集成,你所需要的所有工具都觸手可及。
.Net Framework集成 隨著Microsoft SQL Server 2005 Beta 2的發布,數據庫編程人員現在可以充分利用Microsoft .NET Framework 類庫和現代編程語言來開發數據庫應用。 通過集成的CLR,你可以用.NET Framework language 裡的Visual Basic .NET 和C#中面向對象的結構、結構化的錯誤處理、數組、命名空間和類來編寫存儲過程、函數和觸發器。此外,.Net Framework所提供的幾千個類和方法也擴展了服務器功能,使你能夠更容易的在服務器端使用。許多之前我們用T-SQL難以實現的任務現在可以更容易的用托管代碼實現。同時,系統還新增了兩個數據庫對象類型:聚合和用戶自定義類型。你現在能夠更好的利用已掌握的知識和技能編寫in-process 代碼。總之,SQL Server 2005 Beta 2 能夠使你的數據庫服務器更方便地在後台執行適當的計算和操作。
SQL Server 和 CLR 的集成主要提供了如下好處:
1.增強的編程模型:.Net Framework 兼容的編程語言在很多方面要比T-SQL更強大,它提供給SQL 開發人員之前沒有的架構和功能。
2.增強的安全性: 在CLR環境下運行的托管代碼被數據庫引擎所控制,這使得.Net Framework 數據庫對象能夠比以前版本的SQL Server中的擴展存儲過程運行的更安全,並具備更好的安全性。
3.用戶自定義類型和聚合: 借助宿主CLR,這兩個新的數據庫對象擴展了SQL Server 的存儲和查詢能力。
4.通用開發環境: 數據庫開發被集成到Microsoft Visual Studio 2005 開發環境中。 用來開發中間層和客戶層.Net Framework組件和服務的工具同樣可以被用來開發和調試數據庫對象和腳本。
5.性能和可伸縮性: 因為托管代碼被編譯為本機代碼得以優先執行,在某些場合性能可以得到顯著的提升。
6.利用CLR集成,你可以用Visual Basic .NET 和 C#這樣的語言寫出具有更復雜邏輯的代碼和更適用於計算型任務的代碼。而且,Visual Basic .Net 和 C# 還提供了諸如封裝、繼承、多態這樣的面向對象的功能。你現在可以更容易的把代碼和類、命名空間組織在一起,這意味著你更容易組織和維護在工作中產生的大量代碼。這種從邏輯上和物理上把代碼組織到程序集和命名空間中的功能非常有用,它將使你能夠更好的在一個大型數據庫實現項目中發現和關聯不同的代碼塊。
托管代碼在處理運算和管理復雜執行邏輯上比T-SQL更有效,並且提供了對字符串處理、正則表達式之類功能的額外支持。此外,由於現在可以利用.Net Framework類庫的功能,你可以更容易的從存儲過程、觸發器、用戶定義函數中訪問幾千個內置的類和例程(routines)。通過托管存儲過程、函數、觸發器、聚合,可以更容易的實現字符串處理、數學函數、日期操作、系統自由訪問、高級加密算法、文件訪問、圖像處理、XML數據操作等功能。
托管代碼的一個主要好處就是類型安全。在托管代碼執行前,CLR將執行一些檢查,通過一個被稱之為“驗證”的處理過程來保證所執行的代碼是安全的。例如,會檢查代碼以確保不會讀未寫的內存地址。
在Transact-SQL 和 托管代碼之間的選擇 當編寫存儲過程、觸發器、用戶自定義函數時,你現在要決定是使用傳統的Transact-SQL 還是.NET Framework兼容的編程語言,如Visual Basic .Net or C#來編寫它們。這個問題的答案依賴於使用的場合,在某些情形下,你會使用Transact-SQL,而另外一些情形下,你將使用托管代碼。
Transact-SQL 更適合代碼主要是進行數據訪問、沒有邏輯或邏輯簡單的場合。托管代碼更適合密集計算和復雜邏輯的場合,或者是那些你想利用.Net Framework 類庫的場合。
代碼放置也很重要。你可以把Transact-SQL 和 托管代碼都放在服務器上運行,代碼和數據的緊密結合使你能夠充分利用服務器的處理能力。而且因為它減少了數據層和中間層之間的流量,所以這非常有益。特別是對I/O密集的系統,可能會有顯著的好處。CLR 函數也可以利用到SQL Server 查詢處理器的並行和優化功能。另一方面,你可能不希望把密集計算的任務放在數據庫服務器上,現在的大多數客戶端計算機都很強大,你可能希望把盡可能多的代碼放到客戶端來利用其處理能力。這沒有一成不變的答案。