一、前言:
目前,隨著數(shù)據(jù)庫系統(tǒng)和編程語言的不斷發(fā)展,它們各自都有了自己專注的特定的功能而逐漸分離開。這導(dǎo)致產(chǎn)生了在現(xiàn)今的應(yīng)用程序中的數(shù)據(jù)存儲和業(yè)務(wù)邏輯之間的阻抗失諧。SQL Server 2008與Microsoft數(shù)據(jù)平臺技術(shù)的結(jié)合使得你可以快速并輕松的建立能夠消除這個失諧的綜合的和可擴(kuò)展的基于數(shù)據(jù)的解決方案。
尤其是,ADO.NET 實(shí)體框架為開發(fā)人員定義了一個新的方式來將數(shù)據(jù)放到易于使用的實(shí)體中,而一個叫做LINQ的創(chuàng)新技術(shù)定義了一個新的、強(qiáng)大的數(shù)據(jù)訪問查詢語法來與實(shí)際的任何數(shù)據(jù)類型直接通信,包括實(shí)體和SQL Server 2008。
SQL Server 2008專注于三個關(guān)鍵領(lǐng)域來滿足目前的數(shù)據(jù)可編程性需求:
◆ 生產(chǎn)力。SQL Server 2008和Microsoft Visual Studio®為開發(fā)人員提供了新的數(shù)據(jù)模型、語法和團(tuán)隊(duì)合作工具,提高了開發(fā)人員的生產(chǎn)力。
◆ 連接。SQL Server 2008支持新的和舊的連接技術(shù),使得開發(fā)人員可以使用最適合他們的要求的技術(shù)。
◆ 可擴(kuò)展性。SQL Server 2008提供了一個用于許多不同類型的工作負(fù)載(從移動設(shè)備到企業(yè)解決方案)的可擴(kuò)展的數(shù)據(jù)庫系統(tǒng)。它還與Visual Studio 集成,從而使得開發(fā)人員可以建立可擴(kuò)展的解決方案。
二、提高了生產(chǎn)力
Microsoft SQL Server 2008和Microsoft 數(shù)據(jù)平臺的開發(fā)技術(shù)為開發(fā)人員提供了架構(gòu)、數(shù)據(jù)連接技術(shù)、編程語言、Web services 、開發(fā)工具、和數(shù)據(jù)間的無縫集成,從而提高了開發(fā)人員的生產(chǎn)力。
ADO.NET實(shí)體框架
開發(fā)人員經(jīng)常花費(fèi)大量的時間解析數(shù)據(jù)庫架構(gòu)和編寫復(fù)雜的查詢來獲取他們的應(yīng)用程序中所需要的數(shù)據(jù)。ADO.NET 實(shí)體框架簡化了這些工作,使得開發(fā)人員可以專注于他們的應(yīng)用程序的業(yè)務(wù)邏輯。
企業(yè)系統(tǒng)經(jīng)常使用多個異構(gòu)數(shù)據(jù)源的數(shù)據(jù),這些數(shù)據(jù)使用不同的架構(gòu)和命名規(guī)則。此外,這些數(shù)據(jù)源經(jīng)常使用不同的標(biāo)準(zhǔn)化級別,這導(dǎo)致用于某個特定的業(yè)務(wù)項(xiàng)目的信息跨越了多個表和行。而這使得開發(fā)人員得寫大量的應(yīng)用邏輯來管理這些復(fù)雜的數(shù)據(jù)庫關(guān)系。
ADO.NET 實(shí)體框架基于實(shí)體數(shù)據(jù)模型,使得開發(fā)人員可以將數(shù)據(jù)庫架構(gòu)中的關(guān)系數(shù)據(jù)轉(zhuǎn)換到可以直接在應(yīng)用程序中使用的概念實(shí)體中。例如,你的應(yīng)用程序中的客戶數(shù)據(jù)可能存儲在數(shù)據(jù)庫中的多個表中。通過使用ADO.NET實(shí)體框架,架構(gòu)師和開發(fā)人員可以定義一個單獨(dú)的概念上的客戶實(shí)體,這個實(shí)體完全抽象了從應(yīng)用程序中訪問和更新客戶數(shù)據(jù)所需要的復(fù)雜關(guān)系。這個抽象層將數(shù)據(jù)訪問邏輯封裝到一組用在一個應(yīng)用程序中的良好定義的實(shí)體中,而這個抽象幫助開發(fā)人員專注于開發(fā)應(yīng)用程序的邏輯。
ADO.NET 實(shí)體框架提供了一個數(shù)據(jù)編程界面
◆ 易于理解概念數(shù)據(jù)模型。通過使用實(shí)體數(shù)據(jù)模型,你可以按照應(yīng)用程序中的業(yè)務(wù)邏輯來使用數(shù)據(jù),而不是數(shù)據(jù)源的邏輯架構(gòu)。
◆ 易于設(shè)計(jì)和開發(fā)應(yīng)用程序。開發(fā)結(jié)合了業(yè)務(wù)邏輯和數(shù)據(jù)訪問邏輯的應(yīng)用程序使得架構(gòu)師設(shè)計(jì)應(yīng)用程序和開發(fā)人員編寫代碼都變得簡單得多。
◆ 易于維護(hù)應(yīng)用程序。通過使用一個概念數(shù)據(jù)模型,開發(fā)人員可以專注于應(yīng)用程序的業(yè)務(wù)邏輯,而不是數(shù)據(jù)存儲邏輯。而且,ADO.NET 實(shí)體框架保護(hù)應(yīng)用程序,防止對后臺數(shù)據(jù)架構(gòu)的改動,這樣就將維護(hù)工作降低到最小。
因?yàn)閷?shí)體數(shù)據(jù)模型使用實(shí)體而不是表和行,開發(fā)人員需要一個與這些對象交互的查詢語言。實(shí)體SQL(Entity SQL)是一個新的語言,它能夠執(zhí)行面向集合的聲明性查詢語言和對實(shí)體數(shù)據(jù)模型中的實(shí)體和關(guān)系的更新。實(shí)體SQL與實(shí)際的數(shù)據(jù)提供商無關(guān),所以你可以重用對不同的數(shù)據(jù)庫提供商的查詢,這節(jié)省了你的編碼時間。
大多數(shù)開發(fā)人員使用面向?qū)ο蟮木幊陶Z言例如C#和Visual Basic 在他們的商業(yè)應(yīng)用程序中編寫新的代碼。這些語言模型實(shí)體將類及其活動作為它們的代碼,而ADO.NET將數(shù)據(jù)作為它的值。這導(dǎo)致了數(shù)據(jù)和應(yīng)用程序間的阻抗失諧。ADO.NET 實(shí)體框架提供了一個對象服務(wù)層,它降低了這個失諧程度。開發(fā)人員可以使用對象服務(wù)來建立類型查詢和返回、操縱和更新作為業(yè)務(wù)對象的結(jié)果。ADO.NET 實(shí)體框架從架構(gòu)中的實(shí)體數(shù)據(jù)模型實(shí)體生成.NET類。這些類是局部類,因此開發(fā)人員可以用定制的業(yè)務(wù)邏輯來擴(kuò)展它們,而不會影響已生成的代碼。這些業(yè)務(wù)對象可以通過實(shí)體SQL或語言級集成查詢能力來查詢(Language Integrated Query,LINQ)。
LINQ
目前的數(shù)據(jù)訪問代碼是內(nèi)嵌在應(yīng)用程序的字符串中的,用各個數(shù)據(jù)庫特定的SQL語言來編寫。由于這個原因,開發(fā)人員必須熟悉一個SQL語言和他們所選擇的編程語言。這增加了對基于數(shù)據(jù)的解決方案的開發(fā)人員的知識要求。字符串中的內(nèi)嵌查詢意味著代碼不能在編譯的時候進(jìn)行檢查,因此開發(fā)人員必須等到查詢代碼發(fā)送到數(shù)據(jù)庫服務(wù)器上才能確定是否是正確的。這個運(yùn)行時調(diào)試通常導(dǎo)致更復(fù)雜的調(diào)試過程。
LINQ 是一組對Microsoft .NET 框架庫、C#和Visual Basic .NET 的擴(kuò)展,它使得這些語言將數(shù)據(jù)看作是普通的對象。LINQ使得開發(fā)人員能夠以他們本地的編程語言來編寫查詢,然后這個查詢會在編譯時進(jìn)行檢測和語法檢查。因?yàn)樗?NET 語言的一個主要組成部分,LINQ還可以利用Microsoft Visual 套件開發(fā)系統(tǒng)的Microsoft IntelliSense。
LINQ 可以用于多種數(shù)據(jù)源,包括內(nèi)存數(shù)據(jù)結(jié)構(gòu)、XML文檔、數(shù)據(jù)庫、實(shí)體模型、和數(shù)據(jù)集。例如,LINQ可以用于訪問三個不同的數(shù)據(jù)源的數(shù)據(jù),操縱數(shù)據(jù),然后將它輸出到第四個數(shù)據(jù)存儲里。整個功能極大的簡化了對異構(gòu)數(shù)據(jù)源的數(shù)據(jù)的使用。
有五個使你可以訪問數(shù)據(jù)的LINQ工具:
◆ LINQ到SQL(LINQ to SQL) 支持快速的開發(fā)通過使用直接與SQL Server 架構(gòu)中的數(shù)據(jù)庫對象匹配的programmatic 對象(例如表、視圖、存儲過程和用戶定義的函數(shù))來查詢所有的Microsoft SQL Server 版本的應(yīng)用程序。
◆ LINQ 到實(shí)體(LINQ to Entities) 支持一個更靈活的對象與關(guān)系表、視圖、存儲過程和用戶定義的函數(shù)之間的匹配。你可以使用LINQ到實(shí)體通過擴(kuò)展的ADO.NET數(shù)據(jù)提供商來訪問SQL Server和其它關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)。
◆ LINQ 到數(shù)據(jù)集(LINQ to DataSet) 推出了針對常規(guī)的和類型化的數(shù)據(jù)集的豐富的查詢功能。這使得你可以創(chuàng)建和查詢數(shù)據(jù)集中數(shù)據(jù)表間的連接。
◆ LINQ 到XML(LINQ to XML) 是一個內(nèi)存XML編程應(yīng)用程序編程界面(API),它是設(shè)計(jì)用來利用最新的.NET 框架語言的創(chuàng)新。
◆ LINQ 到對象(LINQ to Object) 使得你可以對內(nèi)存對象執(zhí)行LINQ查詢。這使得你可以以你使用其它數(shù)據(jù)源的數(shù)據(jù)的相同方式來使用內(nèi)存數(shù)據(jù)。
Visual Studio
Visual Studio 將所有這些數(shù)據(jù)平臺技術(shù)結(jié)合到一個強(qiáng)大的、而且高效的和易于使用的環(huán)境中去。Visual Studio 是一個綜合的開發(fā)環(huán)境,它使得架構(gòu)師和開發(fā)人員可以輕松的設(shè)計(jì)和開發(fā)客戶端和服務(wù)器代碼。
Visual Studio 為開發(fā)人員提供了可以自動為已有的和新的數(shù)據(jù)源創(chuàng)建實(shí)體的工具??梢援a(chǎn)生能夠利用新的對象服務(wù)層的局部類。在生成了實(shí)體數(shù)據(jù)模型之后,開發(fā)人員可以使用實(shí)體SQL和LINQ以一種新的和高效的方式來為它制定計(jì)劃。
Visual Studio在開發(fā)人員編寫代碼時為其提供IntelliSense 信息。因?yàn)锳DO.NET 實(shí)體框架和LINQ是完全集成到C#和Visual Basic .NET 中的,當(dāng)使用這些功能來建立應(yīng)用程序的時候開發(fā)人員可以使用強(qiáng)大的IntelliSense功能。這導(dǎo)致生成了用于設(shè)計(jì)和開發(fā)數(shù)據(jù)庫應(yīng)用程序的更高效的開發(fā)環(huán)境、更高質(zhì)量的代碼和一個更易于維護(hù)的系統(tǒng)。
Visual Studio Team System幫助你提高你的整個開發(fā)過程的效率,它為你提供了一些功能,例如源代碼控制、跟蹤,它還為你提供了整個團(tuán)隊(duì)從項(xiàng)目經(jīng)理到測試人員都可以使用的開發(fā)工具。
更多信息請查看IT技術(shù)專欄