一、導言
這些年隨著數據庫系統和編程語言的不斷發展,它們各自都有了自己專注的特定的功能而逐漸分離開。這導致產生了在現今的應用程序中的數據存儲和業務邏輯之間的阻抗失諧。SQL Server 2008與Microsoft數據平台技術的結合使得你可以快速並輕松的建立能夠消除這個失諧的綜合的和可擴展的基於數據的解決方案。
尤其是,ADO.Net 實體框架為開發人員定義了一個新的方式來將數據放到易於使用的實體中,而一個叫做LINQ的創新技術定義了一個新的、強大的數據訪問查詢語法來與實際的任何數據類型直接通信,包括實體和SQL Server 2008。
SQL Server 2008專注於三個關鍵領域來滿足目前的數據可編程性需求:
· 生產力。SQL Server 2008和Microsoft Visual Studio®為開發人員提供了新的數據模型、語法和團隊合作工具,提高了開發人員的生產力。
· 連接。SQL Server 2008支持新的和舊的連接技術,使得開發人員可以使用最適合他們的要求的技術。
· 可擴展性。SQL Server 2008提供了一個用於許多不同類型的工作負載(從移動設備到企業解決方案)的可擴展的數據庫系統。它還與Visual Studio 集成,從而使得開發人員可以建立可擴展的解決方案。
二、提高了生產力
Microsoft SQL Server 2008和Microsoft 數據平台的開發技術為開發人員提供了架構、數據連接技術、編程語言、Web services 、開發工具、和數據間的無縫集成,從而提高了開發人員的生產力。
ADO.Net實體框架
開發人員經常花費大量的時間解析數據庫架構和編寫復雜的查詢來獲取他們的應用程序中所需要的數據。ADO.Net 實體框架簡化了這些工作,使得開發人員可以專注於他們的應用程序的業務邏輯。
企業系統經常使用多個異構數據源的數據,這些數據使用不同的架構和命名規則。此外,這些數據源經常使用不同的標准化級別,這導致用於某個特定的業務項目的信息跨越了多個表和行。而這使得開發人員得寫大量的應用邏輯來管理這些復雜的數據庫關系。
ADO.NET 實體框架基於實體數據模型,使得開發人員可以將數據庫架構中的關系數據轉換到可以直接在應用程序中使用的概念實體中。例如,你的應用程序中的客戶數據可能存儲在數據庫中的多個表中。通過使用ADO.Net實體框架,架構師和開發人員可以定義一個單獨的概念上的客戶實體,這個實體完全抽象了從應用程序中訪問和更新客戶數據所需要的復雜關系。這個抽象層將數據訪問邏輯封裝到一組用在一個應用程序中的良好定義的實體中,而這個抽象幫助開發人員專注於開發應用程序的邏輯。
ADO.Net 實體框架提供了一個數據編程界面,使得:
· 易於理解概念數據模型。通過使用實體數據模型,你可以按照應用程序中的業務邏輯來使用數據,而不是數據源的邏輯架構。
· 易於設計和開發應用程序。開發結合了業務邏輯和數據訪問邏輯的應用程序使得架構師設計應用程序和開發人員編寫代碼都變得簡單得多。
· 易於維護應用程序。通過使用一個概念數據模型,開發人員可以專注於應用程序的業務邏輯,而不是數據存儲邏輯。而且,ADO.Net 實體框架保護應用程序,防止對後台數據架構的改動,這樣就將維護工作降低到最小。
因為實體數據模型使用實體而不是表和行,開發人員需要一個與這些對象交互的查詢語言。實體SQL(Entity SQL)是一個新的語言,它能夠執行面向集合的聲明性查詢語言和對實體數據模型中的實體和關系的更新。實體SQL與實際的數據提供商無關,所以你可以重用對不同的數據庫提供商的查詢,這節省了你的編碼時間。
大多數開發人員使用面向對象的編程語言例如C#和Visual Basic 在他們的商業應用程序中編寫新的代碼。這些語言模型實體將類及其活動作為它們的代碼,而ADO.NET將數據作為它的值。這導致了數據和應用程序間的阻抗失諧。ADO.NET 實體框架提供了一個對象服務層,它降低了這個失諧程度。開發人員可以使用對象服務來建立類型查詢和返回、操縱和更新作為業務對象的結果。ADO.NET 實體框架從架構中的實體數據模型實體生成.Net類。這些類是局部類,因此開發人員可以用定制的業務邏輯來擴展它們,而不會影響已生成的代碼。這些業務對象可以通過實體SQL或語言級集成查詢能力來查詢(Language Integrated Query,LINQ)。
LINQ
目前的數據訪問代碼是內嵌在應用程序的字符串中的,用各個數據庫特定的SQL語言來編寫。由於這個原因,開發人員必須熟悉一個SQL語言和他們所選擇的編程語言。這增加了對基於數據的解決方案的開發人員的知識要求。字符串中的內嵌查詢意味著代碼不能在編譯的時候進行檢查,因此開發人員必須等到查詢代碼發送到數據庫服務器上才能確定是否是正確的。這個運行時調試通常導致更復雜的調試過程。
LINQ 是一組對Microsoft .NET 框架庫、C#和Visual Basic .NET 的擴展,它使得這些語言將數據看作是普通的對象。LINQ使得開發人員能夠以他們本地的編程語言來編寫查詢,然後這個查詢會在編譯時進行檢測和語法檢查。因為它是.Net 語言的一個主要組成部分,LINQ還可以利用Microsoft Visual 套件開發系統的Microsoft IntelliSense。
LINQ 可以用於多種數據源,包括內存數據結構、XML文檔、數據庫、實體模型、和數據集。例如,LINQ可以用於訪問三個不同的數據源的數據,操縱數據,然後將它輸出到第四個數據存儲裡。整個功能極大的簡化了對異構數據源的數據的使用。
有五個使你可以訪問數據的LINQ工具:
· LINQ到SQL(LINQ to SQL) 支持快速的開發通過使用直接與SQL Server 架構中的數據庫對象匹配的programmatic 對象(例如表、視圖、存儲過程和用戶定義的函數)來查詢所有的Microsoft SQL Server 版本的應用程序。
· LINQ 到實體(LINQ to EntitIEs) 支持一個更靈活的對象與關系表、視圖、存儲過程和用戶定義的函數之間的匹配。你可以使用LINQ到實體通過擴展的ADO.Net數據提供商來訪問SQL Server和其它關系數據庫中的數據。
· LINQ 到數據集(LINQ to DataSet) 推出了針對常規的和類型化的數據集的豐富的查詢功能。這使得你可以創建和查詢數據集中數據表間的連接。
· LINQ 到XML(LINQ to XML) 是一個內存XML編程應用程序編程界面(API),它是設計用來利用最新的.Net 框架語言的創新。
· LINQ 到對象(LINQ to Object) 使得你可以對內存對象執行LINQ查詢。這使得你可以以你使用其它數據源的數據的相同方式來使用內存數據。
Visual Studio
Visual Studio 將所有這些數據平台技術結合到一個強大的、而且高效的和易於使用的環境中去。Visual Studio 是一個綜合的開發環境,它使得架構師和開發人員可以輕松的設計和開發客戶端和服務器代碼。
Visual Studio 為開發人員提供了可以自動為已有的和新的數據源創建實體的工具。可以產生能夠利用新的對象服務層的局部類。在生成了實體數據模型之後,開發人員可以使用實體SQL和LINQ以一種新的和高效的方式來為它制定計劃。
Visual Studio在開發人員編寫代碼時為其提供IntelliSense 信息。因為ADO.NET 實體框架和LINQ是完全集成到C#和Visual Basic .Net 中的,當使用這些功能來建立應用程序的時候開發人員可以使用強大的IntelliSense功能。這導致生成了用於設計和開發數據庫應用程序的更高效的開發環境、更高質量的代碼和一個更易於維護的系統。
Visual Studio Team System幫助你提高你的整個開發過程的效率,它為你提供了一些功能,例如源代碼控制、跟蹤,它還為你提供了整個團隊從項目經理到測試人員都可以使用的開發工具。
三、全面的數據平台
SQL Server 2008與目前的和新的數據訪問技術結合使用,為開發人員提供了一個全面的數據平台,在其之上建立訪問、使用和管理從任何數據源而來的數據,並流線化的發送它到相關的用戶的基於數據的解決方案。
數據連接技術
Microsoft 為開發人員提供了一個廣泛的數據連接技術,使得他們可以訪問和管理從異構數據源而來的數據。
本地數據訪問技術,例如ODBC驅動和ADO/OLEDB ,為開發人員提供了對廣泛的數據庫和數據源的訪問。ODBC仍然是最常用的數據訪問技術,並支持Visual Studio解決方案訪問SQL Server 2008。ADO和OLEDB使得開發人員可以連接到數據庫和其它數據源,包括SQL Server 2008。
Microsoft 還支持一組受控數據訪問技術,包括ADO.NET 實體框架、ADO.NET 數據提供商、和.NET 框架LINQ。ADO.NET 實體框架使得開發人員可以在概念級別上使用數據,消除了邏輯數據庫架構和應用程序的業務邏輯之間的阻抗失諧。ADO.Net 數據提供商使得開發人員可以在廣泛的應用程序中訪問任何類型的數據源的任何類型的數據,從傳統的客戶端服務器到運行在精簡設備上的應用程序。LINQ使得開發人員可以使用他們本地的編程語言來查詢和管理所有類型的數據。
Microsoft 數據平台還使得開發人員可以使用像XML、JDBC drivers和PHP驅動之類的技術來訪問非Microsoft的數據。
豐富的數據可編程性能力
在SQL Server和ADO.Net的新版本中的豐富、可用的數據平台技術使得開發人員可以建立滿足最苛刻的要求的下一代基於數據的解決方案。這些技術還降低了設計、開發、和維護基於數據的解決方案的整個的復雜性。
LINQ 提供了對Visual Basic和C#的擴展,使得開發人員可以本地的以這些語言查詢數據。這為應用程序中的數據訪問和業務邏輯代碼提供了一個一致的語法。當使用LINQ時,與內嵌在業務邏輯中的SQL代碼相比,開發人員可以獲得更快的查詢處理、設計時錯誤檢查和拼寫檢查,還獲得了在開發環境中的對數據訪問代碼的IntelliSense 支持。
傳統上,開發人員通過參考數據存儲的表和列來訪問數據。這意味著開發人員需要熟悉數據庫結構和充分認識到對這個結構的任何改動都會顯著的影響應用程序。ADO.Net 實體框架使開發人員可以通過使用實體和關系在概念級別上使用數據,這使得開發人員不需要了解後台數據庫存儲結構,從而分離了應用程序中的數據訪問邏輯。它還簡化了解決方案的開發和維護,因為開發人員可以使用反映了他們的應用程序域中的實體的業務實體。
商業應用程序通常要求發生在數據庫級別上的復雜的程序操作。Transact-SQL 設計用來使用關系數據和基於集合的操作,但是不是程序編程,所以開發人員通常提取數據,在業務邏輯或數據訪問層使用它,然後將數據保存回數據庫。這導致在層間傳遞了過多的數據,可能還會通過網絡,這會影響應用程序性能。或者是,開發人員編寫擴展的存儲過程和函數,並使用COM協同工作來使用它們。然而,這些解決方案都不是理想的,因為編寫這樣的代碼太復雜。隨著SQL Server 2005的發布,SQL Server 數據庫引擎有了.Net 框架公共運行時(CLR)。這使得開發人員可以使用像Visual Basic和C#這樣的語言在管理代碼中編寫存儲過程和用戶定義的函數。
你的數據,隨時、隨地
Microsoft 數據平台使得開發人員可以創建可以隨時訪問任何地點的數據的基於數據的解決方案,並支持極廣泛的本地和管理的連接技術、編程語言、編程框架和Web services。
通過對多個編程語言的支持,數據平台使得開發人員可以使用最適合他們需求的語言,而不會限制開發人員可以使用的數據源或任務。
然而,一些應用程序不能持有對他們使用的數據源的永久連接。數據平台支持這種情景,它提供了SQL Server Compact Edition和Microsoft同步服務來支持偶爾連接解決方案。
四、可擴展的基於數據的解決方案
SQL Server 2008提供了開發人員建立可擴展的針對任何工作負載(從最小的設備到最大的服務器)的基於數據的解決方案所需要的功能,並使得應用可以隨著業務需求的發展而發展。
可擴展的數據存儲
SQL Server 是一個幾個版本中都可以高度可擴展的數據庫服務器,每一個都設計用來滿足一個特定的工作負載的要求。例如,有一個版本是用於移動設備、桌面電腦、工作組、部門、和企業應用程序。每一個版本都提供強大的、隨著你的應用程序的需求和數據存儲要求的發展而發展的數據管理。SQL Server 2008包括一組豐富的數據平台特性,它們提高了應用程序的可擴展性來滿足你的業務需求。
通過在SQL Server 中使用.Net 框架CLR,開發人員可以使用可維護性高的受控代碼來輕松的編寫存儲過程和用戶定義的函數。這提高了可擴展性,因為受控代碼更有效,而且它直接作用於數據庫中的數據。
SQL Server 2008支持許多數據類型,幫助應用程序有效的進行擴展。GEOMETRY和GEOGRAPHIC數據類型使得開發人員可以直接使用地理數據。新的FILESTREAM特性使得數據庫應用程序可以在數據庫之外的文件系統上以它的本地格式存儲BLOB數據,同時維護一個到數據庫的無縫連接。這使得用戶訪問數據就好像它是存儲在數據庫中一樣,同時確保了數據庫規模維持在可管理的狀態。
SQL Server 提供給開發人員強大的流式API,使得他們可以有效的處理大量的數據。SQL Server 2008和LINQ提供了流和LINQ到XML ,使得開發人員可以以一種簡單的方式輸出大量的XML數據。
可擴展的應用程序
每一個SQL Server 版本包含了為針對這個版本的應用程序提供數據管理要求的功能。開發人員可以建立針對任何規模的使用的應用程序,如果需要,可以很容易的擴展設計和代碼來升級到一個更強大的SQL Server版本。一個應用程序可能基於一個數據庫架構建立起來,後來要求架構改變。在這個實體框架之前,這個解決方案要求對應用程序代碼作許多更新來支持這樣的改變。有了實體框架,應用程序能被保護於這樣的改動,並能很容易的進行更新。
而且,開發人員可能通過使用LINQ到SQL來建立一個項目,然後發現因為需求改變了,他們需要更加靈活的匹配或對其它數據庫的訪問。Microsoft 將為這些客戶提供工具和指導來遷移他們的應用程序到LINQ到實體中。
Service Broker 是一個非常可靠的信息傳遞和查詢技術,它為數據庫應用程序提供了一個異步的編程模型。它支持在一個單獨的SQL Server實例和多個服務器上的多個實例中的高速的信息傳遞。它通過使用有保證的、及時的、有序的和安全的Transact-SQL使得應用程序可以發送和接收異步的信息。這使得開發人員可以建立安全的、可以輕松的進行擴展來使用SQL Server的其它實例上的服務的數據庫應用程序。
SQL Server Compact Edition是一個內嵌在數據庫引擎中的需要很少的維護且占用資源很少的版本,它使得開發人員可以為桌上電腦和移動設備建立數據庫應用程序。當結合使用SQL Server Compact edition和Microsoft同步服務時,開發人員可以建立下一代偶爾連接解決方案(OCS)。這使得移動用戶可以使用他們數據庫的本地拷貝,並在與一個中央服務器連接時保持與其同步。在客戶端設備和數據庫服務器之間分配工作量可以極大提高你的解決方案的可擴展性。
Visual Studio Team System 為企業解決方案團隊的所有成員提供了一個開發平台。與SQL Server 2008結合使用,開發人員可以輕松的通過HTTP顯示對象、數據源、和商業智能組件。這使得更多的客戶端可以從不同種類的環境中通過使用標准的協議來訪問SQL Server 數據,並增加了商業智能組件的親和力和重用性,例如通過Web services實現的報表和立方體。
五、總結
SQL Server 2008是一個全面的數據平台用於為移動設備、桌面、工作組和企業建立強大的可擴展的基於數據的解決方案。將最新的.NET 框架和ADO.NET 版本相結合,開發人員會變得更高效和編寫得更好,更可維護源代碼。LINQ到SQL使得開發人員可以用本地編程語言來編寫數據訪問代碼,並利用Visual Studio中的完整的語法檢查和IntelliSense 功能。SQL Server 2008支持使用許多數據連接技術,並提供了一組豐富的編程功能,例如Service Broker和.Net 框架CLR。它還支持針對所有類型的設備的應用程序。最後,SQL Server 2008在數據存儲和應用程序需求方面都是可擴展的。