.NET项目是否有必要升级到.NET 3.5 + VS 2008
前言:.NET 3.5 + VS 2008已經(jīng)發(fā)布一年多了,可是還有一半以上的企業(yè)和開發(fā)團(tuán)隊(duì)在用VS2005+.Net 2.0(包括我們公司),甚至還有用.Net 1.1+VS2003的。生產(chǎn)工具是提高生產(chǎn)力的最重要途徑,但是還有許多人沒意識(shí)到08系列的強(qiáng)大。本來寫此文來說服公司領(lǐng)導(dǎo),順便也發(fā)出來,想表達(dá)這種觀點(diǎn):不與時(shí)俱進(jìn)就要時(shí)不我待啦!網(wǎng)上好像還沒有這么一篇較短篇幅的文章能系統(tǒng)說明一下08+3.5的改進(jìn)和創(chuàng)新,偶把所知道都整理出來,希望大家指正這些觀點(diǎn)的理解。
一、Visual Studio 2008環(huán)境新特性
?
·?? ??NET Framework 兼容支持
使用Visual Studio 2008可以進(jìn)行基于多個(gè).net framework 版本的開發(fā),Visual Studio 2008同時(shí)支持framework 2.0/3.0和3.5幾個(gè)版本。在不同的版本下它可以自動(dòng)的框架特性工具箱,項(xiàng)目類型,引用,智能提示……過濾功能。我們升級(jí)到Visual Studio 2008也非常簡(jiǎn)單。
·???????? ASP.NET AJAX和JavaScript智能客戶端支持
ASP.NET AJAX成為.NET 3.5的一部分,除了包括ASP.NET AJAX 1.0的所有功能外,還集成了WebParts的UpdatePanel,與<asp:menu> and <asp:treeview>這樣的控件的 ASP.NET 實(shí)現(xiàn)AJAX 集成。編寫JavaScript提供了智能提示和調(diào)試的功能,還增加了JSON的全面支持,無論在WCF還是AJAX上都有廣泛的應(yīng)用。
·???????? 全新的Web開發(fā)體驗(yàn)
Web設(shè)計(jì)器提供了分割視圖編輯、嵌套母板頁、以及強(qiáng)大的CSS編輯器集成。
ASP.NET提供了三個(gè)新的控件:<asp: ListView>、<asp: DataPager>、<asp: LinqDataSource>,這些控件對(duì)數(shù)據(jù)場(chǎng)景提供了非常好的支持,允許對(duì)輸出的標(biāo)識(shí)做完全的控制。
?
·???????? 其他
Visual Studio 2008加入拼寫檢查器,可以在編譯前對(duì)不正確的定義或返回類型進(jìn)行檢查。也優(yōu)化了特別是自動(dòng)提示和重構(gòu)功能
支持智能部署ClickOnce;.集成對(duì)Office (VSTO)和Sharepoint 2007開發(fā)的支持。
性能上,運(yùn)行一個(gè)后臺(tái)編譯器的速度比原來提高了一倍以上,而使用的內(nèi)存不到原來的一半。VS2008精簡(jiǎn)了CLR的線程池,使各種類型的多線程應(yīng)用程序也得到性能改進(jìn)。
?
二、.Net FrameWork 3.5的新語法特性:
- 自動(dòng)屬性(Auto-Implemented Properties)
- 隱含類型局部變量(Local Variable Type Inference)
- 匿名類型(Anonymous Types)
- 對(duì)象與集合初始化器(Object and Collection Initializers)
- 擴(kuò)展方法(Extension Methods)
- Lambda表達(dá)式和Lambda表達(dá)式樹 (Lambda Expression and Lambda Expression Trees)
- 語言級(jí)集成查詢Linq系列支持(Language INtegrated Query)
?
自動(dòng)屬性舉例:
??? private String name;
??? public String Name
??? {
??????? get { return name; }
??????? set { name = value; }
}
.NET 3.5下的新寫法:public String Name { set; get; }
?
隱含類型局部變量舉例:
??????? var url = "http://www.168.com";???? //url被識(shí)別String
??????? var dt = new DataTable();??????????? //dt被識(shí)別為DataTable
??????? var status = false;??????????????????? //status被識(shí)別為Boolen
?
匿名類型舉例:
??????????? var site1 = new { url = " http://1.2.3.4 ", title = "BBS", author = "Alex", qq = "4111852" };
??????????? var site2 = new { url = " http://www.168.com ", title = "Title", author = "Alex", qq = "4111852" };
??????????? site1.url = site2.url;
?
對(duì)象與集合初始化器舉例:
??????????? User user = new User();
??????????? user.Id = 1;
??????????? user.Name = "Alex";
??????????? user.Age = 22;
.NET 3.5下新的寫法:
??????????? var user = new User { Id = 1, Name = "Alex", Age = 22 };
?
擴(kuò)展方法舉例:
??? public static int Int(this HttpRequest request, string key)
??? {
??????? return int.Parse(request[key]);
}
調(diào)用方法:int id = Request.Int("id");
?
Lambda表達(dá)式和Lambda表達(dá)式樹舉例:
string[] nums = { "8", "966", "55", "-14", "33", "2" };
//選擇數(shù)組中第偶數(shù)個(gè)元素的數(shù)值平方并輸出排序后的結(jié)果
??? nums.Select(n => Int32.Parse(n))
??????? .Where(n => n % 2 == 0)
??????? .Select(n => n * n)
??????? .OrderBy(n => n)
??????? .ToList()
??????? .ForEach(n => Console.WriteLine(n));
n => n % 2 == 0,n => Console.WriteLine(n)等都是Lambda表達(dá)式。
?
Linq(Linq To Entity)舉例:
??? public IList getUserLogin()
??? {
??????? using (var TE = new TestEntities())
??????? {
??????????? var lstLogin = (from user in TE.Users where user.Enabled = 1
??????????????????????????? select new Login
??????????????????????????? {
??????????????????????????????? PW = user.Pass,
??????????????????????????????? ID = user.Id
??????????????????????????? }).ToList();
??????????? return lstLogin;
??????? }
}
?關(guān)于.Net 3.5的語言特性,老趙在博客里有極為精妙的論述,強(qiáng)烈建議沒有看過的朋友同學(xué)去讀一下。
三、歷史性的三大集成框架:
(太重要了,未來兩到三年一定會(huì)成為招聘.Net開發(fā)的基本要求)- WPF (Windows Presentation Foundation)
WPF是微軟新一代圖形系統(tǒng),為用戶界面、2D/3D 圖形、文檔、視頻、動(dòng)畫、三維等媒體提供了統(tǒng)一的描述和操作方法。基于DirectX 9/10技術(shù)的WPF不僅帶來了前所未有的3D界面,而且其圖形向量渲染引擎也大大改進(jìn)了傳統(tǒng)的2D界面,比如Vista中的半透明效果的窗體等都得益于WPF。 程序員在WPF的幫助下,要開發(fā)出媲美Mac程序的酷炫界面已不再是遙不可及的奢望。 WPF相對(duì)于Windows客戶端的開發(fā)來說,向前跨出了巨大的一步,它提供了超豐富的.NET UI 框架,集成了矢量圖形,豐富的流動(dòng)文字支持flow text support,3D視覺效果和強(qiáng)大無比的控件模型框架。
對(duì)于開發(fā)人員和設(shè)計(jì)人員,WPF引擎統(tǒng)一了開發(fā)人員和設(shè)計(jì)人員體驗(yàn)文檔、媒體和 UI 的方式他們從此只需學(xué)習(xí)一個(gè)模式。對(duì)于 .NET 開發(fā)人員,其框架是熟悉的,并且它最終將減少提供最佳用戶體驗(yàn)和通信邏輯所需的代碼行數(shù)。對(duì)于設(shè)計(jì)人員,WPF 提供的平臺(tái)可消除內(nèi)容、媒體和應(yīng)用程序之間的邊界。更重要的是,WPF可以使開發(fā)人員和設(shè)計(jì)人員像Web開發(fā)一樣同步緊密地合作,也將大大提高C/S項(xiàng)目開發(fā)效率。
?
- WCF (Windows Communication Foundation)
是Microsoft為構(gòu)建面向服務(wù)的應(yīng)用提供的分布式通信編程框架,.NET Framework 3.5的重要組成部分。使用該框架,開發(fā)人員可以構(gòu)建跨平臺(tái)、安全、可靠和支持事務(wù)處理的企業(yè)級(jí)互聯(lián)應(yīng)用解決方案。
從功能的角度來看,WCF完全可以看作是ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術(shù)的并集。利用WCF,就可以解決包括安全、可信賴、互操作、跨平臺(tái)通信等等需求。開發(fā)者再不用去分別了解.Net Remoting,ASMX等等各種技術(shù)了,同時(shí),WCF充分地考慮了與舊有系統(tǒng)的兼容性。安裝WCF并不會(huì)影響原有的.Net Remoting等技術(shù)方案。
?
- ADO.NET Entity Framework
微軟以 ADO.NET 為基礎(chǔ)所發(fā)展出來的對(duì)象關(guān)系對(duì)應(yīng) (O/R Mapping) 解決方案。
ADO.NET Entity Framework 以 Entity Data Model (EDM) 為主,將數(shù)據(jù)邏輯層切分為三塊,分別為 Conceptual Schema, Mapping Schema 與 Storage Schema 三層,其上還有 Entity Client,Object Context 以及 LINQ 可以使用。Entity Framework在 Visual Studio 2008 和.Net 3.5 CLR中都有充分的支持,也非常容易上手。使用Entity Framework,可以減少70%-90%的數(shù)據(jù)訪問層代碼,極大地提高.Net程序的開發(fā)效率、維護(hù)效率及程序健壯性。
總結(jié)
以上是生活随笔為你收集整理的.NET项目是否有必要升级到.NET 3.5 + VS 2008的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux|UNIX下LAMP环境的搭建
- 下一篇: 读:[你必须知道的.NET] 第五回:深