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