DotNET.doc_第1頁
DotNET.doc_第2頁
DotNET.doc_第3頁
DotNET.doc_第4頁
DotNET.doc_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

.NET百科名片.NET 是 Microsoft XML Web services 平臺。XML Web services 允許應(yīng)用程序通過 Internet 進行通訊和共享數(shù)據(jù),而不管所采用的是哪種操作系統(tǒng)、設(shè)備或編程語言。Microsoft .NET 平臺提供創(chuàng)建 XML Web services 并將這些服務(wù)集成在一起之所需。對個人用戶的好處是無縫的、吸引人的體驗。 目錄隱藏組成.net軟件技術(shù)的組件 1. CLR 與 CLI.net域名 C#3.0中的新特性 .net 3.5的新特性 1. 一些Web開發(fā)新特性之快速指南 2. 語言改進和LINQ 3. 說不盡的其他改進 4. 重要的安裝注意事項 5. 結(jié)語組成.net軟件技術(shù)的組件 1. CLR 與 CLI.net域名 C#3.0中的新特性 .net 3.5的新特性 1. 一些Web開發(fā)新特性之快速指南 2. 語言改進和LINQ 3. 說不盡的其他改進 4. 重要的安裝注意事項 5. 結(jié)語編輯本段組成.net軟件技術(shù)的組件組件之一,“智能”客戶端應(yīng)用軟件和操作系統(tǒng),包括PC、PD A、手機或其他移動設(shè)備通過互聯(lián)網(wǎng)、借助Web Services技術(shù),用戶能夠在任何時間、任何地點都可以得到需要的信息和服務(wù)。例如:可以在手機上閱讀新聞、定購機票、瀏覽在線相冊等等?,F(xiàn)在我們假設(shè)一種場景,如公司內(nèi)使用的CRM系統(tǒng),應(yīng)用了.NET的解決方案后所有的業(yè)務(wù)人員便可以通過手機或PDA直接訪問客戶信息了。如何創(chuàng)建“智能”終端Web Services是智能終端軟件的基礎(chǔ),微軟為用戶創(chuàng)建智能終端提供了一整套豐富的解決方案,包括:.NET Framework - 智能終端實現(xiàn)跨平臺(設(shè)備無關(guān)性)的執(zhí)行環(huán)境Visual Studio .NET 建立并集成Web Services和應(yīng)用程序的快速開發(fā)工具 Microsoft Windows Server 2003 新一代的企業(yè)服務(wù)器,用于提供建立和發(fā)布各種解決方案Microsoft Office Professional Edition 2003 內(nèi)建的工具集也能幫助開發(fā)智能終端現(xiàn)在發(fā)展最快的終端非手機莫屬了,有兩大陣營在開發(fā)SmartPhone技術(shù),一個是微軟為代表的Stinger應(yīng)用于三星,另一個就是以NOKIA、愛立信組成的Symbian。Web Services是.NET的核心技術(shù)。那什么是Web Services呢?正如Web是新一代的用戶與應(yīng)用交互的途徑,XML是新一代的程序之間通訊的途徑一樣,Web Services是新一代的計算機與計算機之間一種通用的數(shù)據(jù)傳輸格式,可讓不同運算系統(tǒng)更容易進行數(shù)據(jù)交換。Web Services有以下幾點特性:Web services允許應(yīng)用之間共享數(shù)據(jù);Web services分散了代碼單元;基于XML這種internet數(shù)據(jù)交換的通用語言,實現(xiàn)了跨平臺、跨操作系統(tǒng)、跨語言。那微軟的ASP和Web services究竟有什么不同呢,ASP仍然是一個集中式計算模型的產(chǎn)物,只不過是披著一層互聯(lián)網(wǎng)的外衣。但Web Services卻是一個迥然不同的精靈,它秉承“軟件就是服務(wù)”的真言,同時順應(yīng)分布式計算模式的潮流。而它的存在形式又與以往軟件不同。這種組件模式,小巧、單一,對于開發(fā)人員來講,開發(fā)成本較低。在這里指出Web services不是微軟發(fā)明的,同樣也不屬于微軟專有。Web services是一個開放的標(biāo)準(zhǔn),和HTTP、 XML、SOAP一樣。他們是一個工業(yè)標(biāo)準(zhǔn)而非微軟標(biāo)準(zhǔn),WS-I是為了促進Web Services互通性的聯(lián)盟組織,最初是由IBM和微軟所發(fā)起,其它的成員包括BEA System、惠普計算機(HP)、甲骨文(Oracle)、英特爾(Intel)和SUN 計算機(Sun Microsystem)。如今網(wǎng)絡(luò)上存在的大多Web services其實沒有使用.NET構(gòu)架,Web services具有互操作屬性,你同樣可以使用Windows開發(fā)客戶端來調(diào)用運行于Linux上面的Web services的方法。先前提到的接口規(guī)范問題,在.NET中,Web service接口通常使用Web Services Description Language (WSDL)描述。 WSDL 使用XML來定義這種接口操作標(biāo)準(zhǔn)及輸入輸出參數(shù),看起來很像COM和CORBA的接口定義語言(IDLS)Interface Definition Languages。接口定義后就必須使用一些協(xié)議調(diào)用接口,如SOAP協(xié)議,SOAP源于一種叫做XML RPC(XML遠(yuǎn)程進程調(diào)用remote procedure calling)的協(xié)議,而Java則根據(jù)XML-RPC發(fā)展了自己的JAX-RPC協(xié)議用來調(diào)用Web Services。發(fā)布和訪問Web Services的接口就用到UDDI了,這里我們只需要知道WSDL使用XML定義Web Services接口,通過SOAP訪問Web Services,在internet上尋找Web Services使用UDDI就行了,更多的Web Services將在最后一課介紹。Microsoft提供了最佳的服務(wù)器構(gòu)架Microsoft Windows Server System便于發(fā)布、配置、管理、編排Web Services。為了滿足分布式計算的需要微軟構(gòu)造了一系列的服務(wù)器系統(tǒng),這些內(nèi)建安全技術(shù)的系統(tǒng)全部支持XML,這樣加速了系統(tǒng)、應(yīng)用程序以及同樣使用Web Services的伙伴應(yīng)用之間的集成。Microsoft Windows Server System包括:Microsoft Application Center 2000 - 配置和管理Web應(yīng)用程序Microsoft BizTalk Server 2002 - 建立基于XML的跨應(yīng)用和組織的商業(yè)邏輯 Microsoft Commerce Server 2002 能夠迅速建立大規(guī)模電子商務(wù)的解決方案Microsoft Content Management Server 2002 管理動態(tài)電子商務(wù)網(wǎng)站的目錄Microsoft Exchange Server 2000 用于進行隨時隨地的通訊協(xié)作Microsoft Host Integration Server 2000 用于和主機系統(tǒng)之間傳輸數(shù)據(jù)Microsoft Internet Security and Acceleration Server 2000 (ISA Server) internet連接Microsoft Mobile Information Server 2002 用于支持手持設(shè)備Microsoft Operations Manager 2000 描述企業(yè)級解決方案的操作管理 Microsoft Project Server 2002 - 提供項目管理的最佳方案 Microsoft SharePoint Portal Server 2001 查詢、共享、發(fā)布商業(yè)信息Microsoft SQL Server 2000 企業(yè)級數(shù)據(jù)庫Microsoft Visual Studio .NET和Microsoft .NET Framework對于建立,發(fā)布并運行Web Services是一個完美的解決方案。 Microsoft .Net 框架 SDK 快速入門教程:/quickstart/微軟官方的教程。 CLR 與 CLI.NET的初級組成是CLI和CLR。CLI是一套運作環(huán)境說明,包括一般系統(tǒng)、基礎(chǔ)類庫和與機器無關(guān)的中間代碼,全稱為通用中間語言(CLI)。CLR則是確認(rèn)操作密碼符合CLI的平臺。在CLI執(zhí)行前,CLR必須將指令及時編譯轉(zhuǎn)換成原始機械碼。所有CLI都可經(jīng)由.NET自我表述。CLR檢查元資料以確保正確的方法被調(diào)用。元資料通常是由語言編譯器生成的,但開發(fā)人員也可以通過使用客戶屬性創(chuàng)建他們自己的元資料。如果一種語言實現(xiàn)生成了CLI,它也可以通過使用CLR被調(diào)用,這樣它就可以與任何其他.NET語言生成的資料相交互。CLR也被設(shè)計為作業(yè)系統(tǒng)無關(guān)性。當(dāng)一個匯編體被載入時,CLR執(zhí)行各種各樣的測試。其中的兩個測試是確認(rèn)與核查。在確認(rèn)的時候,CLR檢查匯編體是否包含有效的元資料和CLI,并且檢查內(nèi)部表的正確性。核查則不那么精確。核查機制檢查代碼是否會執(zhí)行一些“不安全”的操作。核查所使用的演算法非常保守,導(dǎo)致有時一些“安全”的代碼也通不過核查。不安全的代碼只有在匯編體擁有“跳過核查”許可的情況下才會被執(zhí)行,通常這意味著代碼是安裝在本機上的。通過.NET,你可以用SOAP和不同的Web services進行交互。34 編輯本段.net域名.net是國際最廣泛流行的通用域名格式。.net一般用于從事Internet相關(guān)的網(wǎng)絡(luò)服務(wù)的機構(gòu)或公司,當(dāng)然任何人都可注冊。類型:.net規(guī)則:1、只提供英文字母(a-z,不區(qū)分大小寫)、數(shù)字(0-9)、以及-(英文中的連詞號,即中橫線),不能使用空格及特殊字符(如!、$、&、? 等)。2、-不能用作開頭和結(jié)尾3、長度不能超過63個字符 編輯本段C#3.0中的新特性第一個特性:隱式類型化本地變量 這個特性非常簡單,有些JavaScript的影子,我們可以統(tǒng)一使用使用var關(guān)鍵字來聲明局部變量,而不再需要指明變量的確切類型了,變量的確切類型可通過聲明變量時的初始值推斷出來。這樣一來,可以大大簡化我們聲明局部變量的工作量了,下面是一個例子: class LocalVariables : AppRunner.AbstractApplication public override void Run() var intValue = 5; var stringValue = This is a string; var customClass = new LocalVariables(); var intArray = new int3 1, 2, 3 ; foreach (var value in intArray) Console.WriteLine(value); 上面的代碼將被解析成: class LocalVariables : AppRunner.AbstractApplication public override void Run() int intValue = 5; string stringValue = This is a string; LocalVariables customClass = new LocalVariables(); int intArray = new int3; foreach (int value in intArray) Console.WriteLine(value); 要特別注意的是,由于變量的類型是通過變量初始值推斷而來的,所以在聲明變量的同時必需為變量指定初始值。并且,變量并不是沒有類型的,變量一旦初始化之后,類型就確定下來了,以后就只能存儲某種類型的值了,比如上面的stringValue的類型經(jīng)推斷為string,所以該變量就只能保存string類型的值了。 第二個特性:匿名類型 有些時候我們需要臨時保存一些運算的中間結(jié)果,特別是當(dāng)這些中間結(jié)果是由多個部份組成時,我們常常會去聲明一個新的類型,以方便保存這些中間結(jié)果。表面上看起來這很正常,而細(xì)想之后就會發(fā)現(xiàn),這個新類型只服務(wù)于這個函數(shù),其它地方都不會再使用它了,就為這一個函數(shù)而去定義一個新的類型,確實有些麻煩。 現(xiàn)在,C#3.0中的匿名類型特性就可以很好的解決上面提到的問題,通過匿名類型,我們可以簡單使用new 屬性名1=值1, 屬性名2=值2, . , 屬性名n=值n 的形式直接在函數(shù)中創(chuàng)建新的類型,看下面這個例子: class AnonymousType : AppRunner.AbstractApplication public override void Run() var anonymousType1 = new CardNumber = 10001, Name = vans, Sex = true ; Console.WriteLine(anonymousType1.CardNumber); Console.WriteLine(anonymousType1.Name); var anonymousType2 = new CardNumber = 10002, Name = martin, Sex = true ; anonymousType2 = anonymousType1; 在新類型中只能有字段成員,而且這些字段的類型也是通過初值的類型推斷出來的。如果在聲明新的匿名類型時,新類型的字段名、順序以及初始值的類型是一致的,那么將會產(chǎn)生相同的匿名類型,所以上例中anonymousType1和anonymousType2的類型是相同的,自然能進行anonymousType2=anonymousType1的賦值。 第三個特性:隱式類型化數(shù)組 這個特性是對隱式類型化本地變量的擴展,有了這個特性,將使我們創(chuàng)建數(shù)組的工作變得簡單。我們可以直接使用new關(guān)鍵字來聲明數(shù)組,后面跟上數(shù)組的初始值列表。在這里,我們并沒有直接指定數(shù)組的類型,數(shù)組的類型是由初始化列表推斷出來的。 class AnonymousTypeArray : AppRunner.AbstractApplication public override void Run() var intArray = new 1, 2, 3, 4, 5 ; var doubleArray = new 3.14, 1.414 ; var anonymousTypeArray = new new Name=vans, Sex=false, Arg=22 , new Name=martin, Sex=true, Arg=23 ; Console.WriteLine(intArray); Console.WriteLine(doubleArray); Console.WriteLine(anonymousTypeArray0.Name); 上面的代碼中,anonymousTypeArray變量的聲明同時運用了隱式類型化數(shù)組和匿名類型兩種特性,首先創(chuàng)建匿名類型,然后再初始值列表,推斷出數(shù)組的確切類型。 第四個特性:對象構(gòu)造者 我們在聲明數(shù)組時,可以同時對其進行初始化,這樣就省去了很多麻煩,但是在創(chuàng)建類的對象時,這招可就不靈了,我們要么調(diào)用該類的構(gòu)造函數(shù)完成對象的初始化,要么就手工進行初始化。這兩種方法都不太方便,使用構(gòu)造函數(shù)來對對象進行初始化時,我們?yōu)榱四撤N靈活性,可能需要編寫構(gòu)造函數(shù)的多個重載版本,實在是麻煩。 C#3.0中加入的對象構(gòu)造者特性,使得對象的初始化工作變得格外簡單,我們可以采用類似于數(shù)組初始化的方式來初始化類的對象,方法就是直接在創(chuàng)建類對象的表達(dá)式后面跟上類成員的初始化代碼。具體示例如下: class Point public int X get; set; public int Y get; set; public override string ToString() return ( + X.ToString() + , + Y.ToString() + ); class Rectangle public Point P1 get; set; public Point P2 get; set; public Rectangle() P1 = new Point(); P2 = new Point(); public override string ToString() return P1: + P1 + , P2: + P2; class ObjectBuilder : AppRunner.AbstractApplication public override void Run() Point thePoint = new Point() X = 1, Y = 2 ; Console.WriteLine(Point(X, Y) = , thePoint); Rectangle theRectangle = new Rectangle() P1 = X = 1, Y = 1 , P2 = X = 100, Y = 200 ; Console.WriteLine(theRectangle); 我們在定義Point類的X和Y屬性時,只須寫上該屬性的get和set訪問器聲明,C#編譯器會自動為我們生成默認(rèn)的get和set操作代碼,當(dāng)我們需要定義簡單屬性時,這個特性非常有用。 我們以new Point() X = 1, Y = 2 語句,輕松的完成了對Point類的初始化工作。在創(chuàng)建類的對象時,我們可以按照需要去初始化類的對象,只要在類的創(chuàng)建表達(dá)式后跟上要初始化屬性的列表即可,且可以只對需要初始化的屬性賦初值,而無需把所有屬性的初始值都寫上去。 在theRectangle對象的初始化表達(dá)式中,我們首先對P1屬性進行初始化,然而P1屬性也是一個自定義的類型,所以P1屬性的初始化是另一個類型(Point)的初始化表達(dá)式,我們可以這樣的方式來對更加復(fù)雜的類型進行初始化。 上篇文章中介紹了C# 3.0中比較簡單的四個特性,分別是隱式類型化本地變量、匿名類型、隱式類型化數(shù)組,以及對象構(gòu)造者,下面我將對C# 3.0中的較復(fù)雜,同時也是非常強大的幾個特性進行介紹,供大家快速瀏覽。第五個特性:集合構(gòu)造者我們可以在聲明數(shù)組的同時,為其指定初始值,方法是直接在數(shù)組聲明的后面跟上初始值列表。這樣就使數(shù)組的初始化工作變得簡單,而對于我們自己創(chuàng)建的集合類型,就無法享受到與普通數(shù)組一樣的待遇了,我們無法在創(chuàng)建自定義集合對象的同時,使用數(shù)組的初始化語法為其指定初始值。C# 3.0中加入的集合構(gòu)造者特性,可使我們享受到與普通數(shù)組一樣的待遇,從而在創(chuàng)建集合對象的同時為其指定初始值。為了做到這一點,我們需要讓我們的集合實現(xiàn)ICollection接口,在這個接口中,完成初始化操作的關(guān)鍵在于Add函數(shù),當(dāng)我使用初始化語法為集合指定初始值時,C#編譯器將自動調(diào)用ICollection中的Add函數(shù)將初始列表中的所有元素加入到集合中,以完成集合的初始化操作。使用示例如下:class CollectionInitializer : AppRunner.AbstractApplicationclass StringCollection : ICollectionpublic void Add(string item)Console.WriteLine(item);/ Other ICollection Memberspublic override void Run()StringCollection strings = new StringCollection() Vans, Brog, Vicky ;在這個示例中,編譯器會自動為strings對象調(diào)用Add方法,以將初始值列表中的所有元素加入到集合中,這里我們只是簡單將初始值列表中的元素輸出到控制臺。第六個特性:Lambda表達(dá)式C# 2.0中加入的匿名代理,簡化了我們編寫事件處理函數(shù)的工作,使我們不再需要單獨聲明一個函數(shù)來與事件綁定,只需要使用delegate關(guān)鍵字在線編寫事件處理代碼。而C# 3.0則更進一步,通過Lambda表達(dá)式,我們可以一種更為簡潔方式編寫事件處理代碼,新的Lambda事件處理代碼看上去就像一個計算表達(dá)式,它使用=符號來連接事件參數(shù)和事件處理代碼。我可以這樣寫:SomeEvent += 事件參數(shù) = 事件處理代碼;下面是完整的示例:delegate T AddDelegate(T a, T b);class LambdaExpression : AppRunner.AbstractApplicationpublic static event EventHandler MyEvent;public override void Run()MyEvent += delegate(object s, EventArgs e)Console.WriteLine(s);MyEvent += (s, e) = Console.WriteLine(s); ;MyEvent(this, null);AddDelegate add = (a, b) = a + b;Console.WriteLine(add(Lambda, Expression);在上面的例子中,分別使用了匿名代理和Lambda表達(dá)式來實現(xiàn)同樣的功能,可以明顯看出Lambda表達(dá)式的實現(xiàn)更為簡潔。我們在使用Lambda表達(dá)式編寫事件處理代碼時,無需指明事件參數(shù)的類型,且返回值就是最后一條語句的執(zhí)行結(jié)果。第七個特性:擴展方法當(dāng)我們需要對已有類的功能進行擴展時,我們通常會想到繼承,繼承已有類,然后為其加入新的行為。而C# 3.0中加入的擴展方法特性,則提供了另一種實現(xiàn)功能擴展的方式,我們可以在不使用繼承的前提下實現(xiàn)對已有類本身的擴展,這種方法并不會產(chǎn)生新的類型,而是采用向已有類中加入新方法的方式來完成功能擴展。在對已有類進行擴展時,我們需將所有擴展方法都寫在一個靜態(tài)類中,這個靜態(tài)類就相當(dāng)于存放擴展方法的容器,所有的擴展方法都可以寫在這里面。而且擴展方法采用一種全新的聲明方式:public static 返回類型 擴展方法名(this 要擴展的類型 sourceObj ,擴展方法參數(shù)列表),與普通方法聲明方式不同,擴展方法的第一個參數(shù)以this關(guān)鍵字開始,后跟被擴展的類型名,然后才是真正的參數(shù)列表。下面是使用示例:static class Extensionspublic static int ToInt32(this string source)return Int32.Parse(source);public static T Slice(this T source, int index, int count)if (index 0 | count source.Length)throw new ArgumentException();T result = new Tcount;Array.Copy(source, index, result, 0, count); return result;class ExtensionMethods : AppRunner.AbstractApplicationpublic override void Run()string number = 123;Console.WriteLine(number.ToInt32();int intArray = new int 1, 2, 3 ;intArray = intArray.Slice(1, 2);foreach (var i in intArray)Console.WriteLine(i);在上面的示例中,靜態(tài)的Extensions類中有兩個擴展方法,第一個方法是對string類的擴展,它為string類加入了名為ToInt32的方法,該方法沒有參數(shù),并返回一個int類型的值,它將完成數(shù)字字符向整數(shù)的轉(zhuǎn)換。有了這個擴展方法之后,就可對任意string類的對象調(diào)用ToInt32方法了,該方法就像其本身定義的一樣。第二個擴展方法是一個范型方法,它是對所有數(shù)組類型的擴展,該方法完成數(shù)組的切片操作。C# 3.0中的Linq表達(dá)式,就是大量運用擴展方法來實現(xiàn)數(shù)據(jù)查詢的。第八個特性:Linq查詢表達(dá)式C# 3.0中加入的最為復(fù)雜的特性就是Linq查詢表達(dá)式了,這使我們可直接采用類似于SQL的語法對集合進行查詢,這就使我們可以享受到關(guān)系數(shù)據(jù)查詢的強大功能。Linq查詢表達(dá)式是建立在多種C# 3.0的新特性之上的,這也是我為什么最后才介紹Linq的原因。下面看一個例子:class LinqExpression : AppRunner.AbstractApplicationpublic override void Run()/ 定義匿名數(shù)組persons, 并為其賦初值var persons = new new Name=Vans, Sex=false, Age=22 ,new Name=Martin, Sex=true, Age=30 ,new Name=Jerry, Sex=false, Age=24 ,new Name=Brog, Sex=false, Age=25 ,new Name=Vicky, Sex=true, Age=20 ;/*執(zhí)行簡單Linq查詢檢索所有年齡在24歲以內(nèi)的人查詢結(jié)果放在results變量中results變量的類型與數(shù)組persons相同 */var results = from p in personswhere p.Age = 2007select new c.Name, o.OrderNo, o.OrderDate, o.OrderName ;foreach (var customer in someCustomers)Console.WriteLine(customer.Name + , + customer.OrderName + , +customer.OrderDate.ToString(D);從上面的例子中,我們可以看到Linq查詢的強大特性,它允許我們進行簡單查詢,或者進行更為復(fù)雜的多重連接查詢。且查詢的結(jié)果還可以是自定義的匿名類型。 編輯本段.net 3.5的新特性 一些Web開發(fā)新特性之快速指南VS 2008的多定向支持 VS 2008允許你構(gòu)建針對多個.NET框架版本的應(yīng)用。你可以從下面的博客貼子里進一步了解其中的工作原理: VS 2008 Multi-Targeting Su ort VS 2008 Web設(shè)計器和C 支持 VS 2008包含一個顯著改進的HTML web設(shè)計器。該設(shè)計器提供了分割視圖編輯,嵌套母板頁,以及出色的C 集成。A .NET還提供了一個新的控件,該控件對數(shù)據(jù)UI場景提供了非常靈活的支持,允許對輸出的標(biāo)識做完全的定制,與VS 2008中的新C 支持還有良好的協(xié)作。A .NET AJAX和JavaScript支持.NET 3.5 內(nèi)置提供A .NET AJAX,還添加了支持We art的UpdatePanel,支持JSON的WCF,以及N個缺陷修補和性能改進等方面的新特性。VS 2008還對集成JavaScript和AJAX進你的應(yīng)用提供了極棒的支持:VS 2008 JavaScript Intellise eVS 2008 JavaScript Debugging 語言改進和LINQVS 2008中的新VB和C#編譯器對這些語言做了顯著的改進。兩者都添加了函數(shù)式編程概念的支持,允許你編寫更干凈,更簡潔,更具有表達(dá)性的代碼。這些特性還促成了我們稱之為LINQ(語言級集成查詢)的新編程模型,使得查詢和操作數(shù)據(jù)成為.NET中的一等編程概念。下面是我撰寫的一些討論這些新語言特性的文章(用C#作為示例):自動屬性,對象初始化器,和集合初始化器 擴展方法 Lambda表達(dá)式 查詢句法 匿名類型LINQ t2o SQL中的數(shù)據(jù)訪問改進LINQ to SQL是.NET 3.5中內(nèi)置的OR/M (對象關(guān)系映射器)。它允許你使用.NET 對象模型對關(guān)系數(shù)據(jù)庫進行建模。然后你可以使用LINQ對數(shù)據(jù)庫進行查詢,以及更新、插入,刪除數(shù)據(jù)。LINQ to SQL完整支持事務(wù),視圖和存儲過程。它還提供了一個把業(yè)務(wù)邏輯和驗證規(guī)則結(jié)合進你的數(shù)據(jù)模型的簡易方式。下面是一些我討論如何使用LINQ to SQL的文章:Part 1: Introduction to LINQ to SQLPart 2: Defining our Data Model Cla esPart 3: Querying our DatabasePart 4: Updating our DatabasePart 5: Binding UI using the A :LinqDataSource Control我會在以后的幾周內(nèi)再往這個系列里添加幾篇文章。我認(rèn)為你會發(fā)現(xiàn)LINQ to SQL顯著地簡化了構(gòu)建非常干凈的數(shù)據(jù)模型以及編寫極其干凈的數(shù)據(jù)代碼。 說不盡的其他改進上面的列表只是所做改進的一小部分。針對客戶端開發(fā),VS 2008 包含了WPF1設(shè)計器和項目支持。ClickOnce 和WPF XBA 現(xiàn)在在FireFox中也工作了。WinForms和WPF項目現(xiàn)在也能使用A .NET 應(yīng)用服務(wù)(成員,角色和用戶數(shù)據(jù))來漫游用戶數(shù)據(jù)了。辦公開發(fā)也更加豐富了,包括對Office 2007 Ri on的集成支持。WCF和Workflow項目和設(shè)計器也包括在VS 2008中了。單元測試的速度大為提高,而且單元測試的支持現(xiàn)在包括在VS Profe ional版本(而不僅僅是VSTS版了)中了。連續(xù)集成支持現(xiàn)在也內(nèi)置于TFS中了。AJAX web測試(單元和壓力)現(xiàn)在也由VS Test產(chǎn)品支持了。還有許許多多多的改進,這里無法一一提及了。 重要的安裝注意事項在安裝VS 2008 和.NET 3.5 Beta2之后,還有2件重要的事情你應(yīng)該馬上做:1) 你應(yīng)該下載和運行這個批文件。這只要幾秒鐘就可以運行完,它修補了這個星期早些時候我們發(fā)現(xiàn)的System.Web.Exte io .dll版本政策的問題,該程序集包含了 A .NET AJAX。如果你不運行這個批文件,那么用A .NET AJAX 1.0 和 VS 2005構(gòu)建的現(xiàn)有的A .NET 2.0項目就會自動地運載隨 .NET 3.5 Beta2發(fā)布的新A .NET AJAX 版本。這會工作而且運行良好,但會不小心導(dǎo)致你的VS2005應(yīng)用依賴于.NET 3.5。運行這個批文件會改變新的System.Web.Exte io .dll 程序集的版本綁定政策,確保你只在你明確構(gòu)建.NET 3.5項目時才使用新的.NET 3.5 A .NET AJAX版本。2) 假如你曾經(jīng)在你的機器上安裝過Orcas或VS 2008的早期版本(Beta1 或某個CTP 版本)的話,你需要在安裝Beta2后重新設(shè)定你的VS 2008設(shè)置。如果你不這么做的話,有些設(shè)置會非常奇怪(一些窗口在出現(xiàn)在奇怪的地方),你也有可能看到一些IDE性能問題。你可以在命令行上對VS 2008的IDE版本鍵入“DevEnv /resetsettings”來重新設(shè)定你的配置:加密信息安全是計算機應(yīng)用的首要問題之一,但目前關(guān)于.NET加密功能的范例卻少之又少。有鑒于此,本文探討了在.NET平臺下加密/解密文件的一般過程,并提供了一個加密/解密文件的工具。 Web服務(wù)以不容置疑的態(tài)勢迅速發(fā)展,促使許多單位開始考慮.NET之類的開發(fā)平臺。但是,出于對安全問題的擔(dān)心,一些單位總是對采用新技術(shù)心存顧慮。好在有許多成熟的安全和網(wǎng)絡(luò)技術(shù),例如虛擬私有網(wǎng)絡(luò)(VPN)和防火墻等,能夠極大地提高Web服務(wù)應(yīng)用的安全和性能,讓開發(fā)者擁有選擇安全技術(shù)的自由,而不是非得使用尚在發(fā)展之中的XML安全技術(shù)不可。 雖然安全是信息系統(tǒng)的首要問題,但有關(guān).NET安全和加密工具的范例卻少之又少??纯创蠖鄶?shù).NET書籍的目錄,找不到任何有關(guān)安全的題目,更不用說關(guān)于密碼系統(tǒng)的探討了。 有鑒于此,本文將介紹如何在VB開發(fā)中運用.NET的加密和密鑰生成類,提供一個可用來加密和解密文件的工具Cryption。有了這個工具,你就可以在硬盤上保存各種機密文件,例如所有的密碼/用戶名字信息、收支文件、以及其他想要保密的信息,還可以加密那些通過Internet發(fā)送的文件。加密技術(shù)的用途非常廣泛,你可以進一步定制本文提供的工具滿足某些特殊需要,例如增加批處理能力等。 一、兩類重要的安全威脅 攻擊和泄密是計算機面臨的兩大安全威脅。攻擊可能來自病毒,例如它會刪除文件、降低機器運行速度或引發(fā)其它安全問題。相比之下,泄密往往要隱蔽得多,它侵害的是你的隱私:未經(jīng)授權(quán)訪問硬盤文件,截取通過Internet發(fā)送的郵件,等等。泄密還可能伴隨著攻擊,例如修改機密文件等。 針對泄密的最佳防范措施就是加密。有效的加密不僅杜絕了泄密,而且還防范了由泄密引發(fā)的攻擊。加密技術(shù)有時還用于通信過程中的身份驗證如果某個用戶知道密碼,那么他應(yīng)該就是那個擁有這一身份的人。 然而必須說明的是,沒有一種防范泄密的安全技術(shù)是絕對堅固的,因為密碼有可能被未經(jīng)授權(quán)的人獲得。 二、使用.NET加密功能的前提 首先,要想使用.NET的安全功能,就必須用Imports語句引入加密用的包。試驗本文涉及的任何代碼之前,請在VB代碼窗口的頂部加入下列Imports語句: Imports System.IO Imports System.Text Imports System.Security.Cryptography 第二,美國政府過去限制某些加密技術(shù)出口。雖然這些限制不再有效,.NET框架在Windows的出口版本中禁用了“高級”加密技術(shù)。如果你的 Windows不帶高級加密能力,可以從微軟網(wǎng)站下載更新包:對于Windows 2000,安裝Service Pack 2包含的High Encryption Pack;對于NT,安裝Service Pack 6a。對于Windows ME、95、98的用戶,IE 5.5也包含了High Encryption Pack。 三、加密/解密工具概況 本文提供的工具可用來加密和解密文件,如果你急著給一些文件加密,只需直接啟動本文后面提供的工具即可。 這個工具提供了一個用來輸入文件名字的文本框和一個輸入密鑰的文本框,通過便捷的用戶界面提供加密、解密和密鑰生成功能。在圖一中,上方的文本框用來輸入待加密/解密文件的名字;下面的文本框用來輸入8個字符的密碼。執(zhí)行加密操作之后將生成一個新的文件,這個經(jīng)過加密的文件和原始文件在同一目錄下,文件名字也和原始文件的一樣,但加上了“xx”后綴,例如,假設(shè)原始文件是MyFile.txt,則加密得到的文件是MyFilexx.txt。 加密好之后,原始文件不一定非刪除不可,但一般來說最好刪除,因為加密的根本目的就是為了隱藏原始文件的數(shù)據(jù)。如果要從加密后的文件恢復(fù)出原始文件,在上面的文本框中輸入MyFilexx.txt,然后提供密碼,Cryption工具將創(chuàng)建一個與原始文件一樣的MyFile.txt文件。也就是說, Cryption把文件名字后面的“xx”看作是要求解密密文的標(biāo)志。 注意:加密文件之后如果忘記了用來加密該文件的密碼,再想恢復(fù)出原始文件就不可能了。當(dāng)然,這與密碼本身的復(fù)雜程度有關(guān),要想保證文件的安全,最好采用較復(fù)雜的密碼,例如混合運用字母、數(shù)字和特殊字符(如“$”符號等)。 .NET提供的加密技術(shù)不止一種,不過本文討論的主要是對稱加密。對稱加密也稱為私有密鑰加密,它的特點是加密和解密用的是同一個密鑰(實際上是同一種算法),解密方和加密方都有責(zé)任保障密碼的安全(對于公用密鑰、不對稱加密,密鑰一共有兩個,其中一個密鑰是公開的,這是當(dāng)前公認(rèn)最有效的加密技術(shù),但就速度而言要比對稱加密算法慢不少)。 在正式利用.NET加密類加密文件之前,首先必須從用戶提供的密碼生成一個密鑰。密鑰可以利用Hash函數(shù)生成,Hash函數(shù)把用戶的密碼字符串轉(zhuǎn)換成一組類似隨機數(shù)序列的、無意義的數(shù)據(jù),這組數(shù)據(jù)可作為密鑰使用,在加密過程中對原始數(shù)據(jù)進行唯一性變形處理。 例如,用密鑰加密數(shù)據(jù)的一種辦法是把原始數(shù)據(jù)的ASCII碼加上密鑰的ASCII碼: 密鑰:ab = ASCII: 97, 98 數(shù)據(jù):merry = ASCII: 109, 101, 114, 114, 121 把這組數(shù)據(jù)的ASCII碼加上密鑰的ASCII碼(必要時重復(fù)使用密鑰),得到的加密結(jié)果是: 97 98 97 98 97 +109 +101 +114 +114 +121 206 199 211 212 218 對于同樣的數(shù)據(jù),Hash算法總是生成同樣的結(jié)果(這就是說,對于同一個密碼,同一Hash

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論