出版時(shí)間:2009-7 出版社:清華大學(xué) 作者:丁士鋒//朱毅//楊明羽 頁(yè)數(shù):782
Tag標(biāo)簽:無(wú)
前言
讀必有所學(xué),學(xué)必有所用,用必有所成!.NET 3.5框架中到底發(fā)生了什么巨變?2009年最流行的開(kāi)發(fā)語(yǔ)言是C#,2009年最流行的框架是.NET 3.5,這些是微軟的口號(hào)和目標(biāo)。因?yàn)槲④浥c眾多中國(guó)企業(yè)有合作關(guān)系,所以.NET 3.5的普及像颶風(fēng)一樣登陸中國(guó)。很多企業(yè)在招聘條件中留下了這樣一條:會(huì)Visual Studio 2008和.NET 3.5框架者 優(yōu)先。微軟為什么力推.NET 3.5框架,它究竟能為企業(yè)帶來(lái)什么?這些問(wèn)題的答案值得讀 者反復(fù)思考。本書(shū)寫(xiě)作的目的就是為了尋找這些答案。下面來(lái)看一下.NET 3.5框架的結(jié) 構(gòu)圖。 這是一個(gè)整體的開(kāi)發(fā)框架,除最下面是微軟的操作系統(tǒng),基本與.NET框架沒(méi)有關(guān)系外。中間部分和最上面的應(yīng)用程序類(lèi)型,其實(shí)都發(fā)生了巨大的改變。在數(shù)據(jù)庫(kù)開(kāi)發(fā)方面,原有的ADO.NET又增加了一種LINQ(集成查詢語(yǔ)言)方式。這種方式給數(shù)據(jù)庫(kù)開(kāi)發(fā)帶來(lái)了變革,這是ORM(對(duì)象關(guān)系映射)流行開(kāi)發(fā)的一個(gè)結(jié)果。ORM就是把數(shù)據(jù)庫(kù)的每張表,都作為一個(gè)對(duì)象,映射到.NET應(yīng)用程序框架中。而WPF、WCF和WF則是新增加的框架,每種技術(shù)都能為開(kāi)發(fā)速度和開(kāi)發(fā)質(zhì)量帶來(lái)質(zhì)的飛躍。四大利器都能完成什么功能?所有研究.NET 3.5框架的人都把這些新技術(shù)稱(chēng)為四大利器。但還是有很多人不明白這些究竟能為項(xiàng)目帶來(lái)什么優(yōu)勢(shì)?能為程序員帶來(lái)什么便利?能具體應(yīng)用到哪些地方?這些問(wèn)題是所有開(kāi)發(fā)人員都關(guān)注的問(wèn)題,也是本書(shū)要介紹的重點(diǎn)知識(shí)。(1)LINQ技術(shù)將傳統(tǒng)查詢語(yǔ)言(如SQL)和傳統(tǒng)開(kāi)發(fā)語(yǔ)言(如C#)集成到一起,使得對(duì)內(nèi)存數(shù)據(jù)的查詢更加高效、語(yǔ)法更簡(jiǎn)單。這種變革涉及LINQ語(yǔ)法、LINQ to ADO.NET和LINQ to XML等技術(shù)。(2)WPF是創(chuàng)建華麗用戶界面的基本技術(shù),讓用戶的Windows界面像Vista系統(tǒng)一樣。WPF能開(kāi)發(fā)什么東西呢?WPF應(yīng)用程序:獨(dú)立可執(zhí)行應(yīng)用程序,類(lèi)似exe應(yīng)用程序。WPF瀏覽器應(yīng)用程序:基于XAML的瀏覽器的應(yīng)用程序(好似B/S應(yīng)用程序)。WPF用戶控件庫(kù):用于創(chuàng)建可重用的、組件化的用戶控件庫(kù)。WPF自定義控件庫(kù):用于開(kāi)發(fā)WPF自定義控件的控件庫(kù)項(xiàng)目。(3)WCF(Windows Communication Foundation)作為微軟對(duì)SOA(Service Oriented Architecture,面向服務(wù))這一熱潮的回應(yīng),成為了.NET 3.5中最為重要的組成部分之一。WCF整合了以前微軟對(duì)分布式系統(tǒng)開(kāi)發(fā)所作出的所有努力,如.NET Remoting、WSE 2.0、WSE 3.0等。WCF是不是SOA?是不是面向服務(wù)的編程?這個(gè)疑問(wèn)從一開(kāi)始就有很多人提出來(lái)。的確,WCF簡(jiǎn)化了SOA面向服務(wù)開(kāi)發(fā)技術(shù),并且支持跨區(qū)域、跨服務(wù)器的各種分布式開(kāi)發(fā),也支持未來(lái)的開(kāi)發(fā)模式,想不學(xué)習(xí)都難!面向服務(wù)開(kāi)發(fā),就是一個(gè)程序調(diào)用的服務(wù)可能來(lái)自不同的服務(wù)器,如下圖所示就是一個(gè)客戶調(diào)用了來(lái)自不同地方的4個(gè)服務(wù)。(4)WF就是工作流,所有做過(guò)OA系統(tǒng)的人都知道,所有做過(guò)項(xiàng)目的人也都知 道,任何一個(gè)系列頭離不開(kāi)流程,如項(xiàng)目的初期規(guī)劃、項(xiàng)目的進(jìn)度、項(xiàng)目的管理資源分配。WF都能給你一個(gè)完美的解決方案。如下圖給出了一個(gè)訂單批核的工作流。如果用普通的C#語(yǔ)言開(kāi)發(fā),一般程序員可能用一周,而如果用WF,那最多用半天,簡(jiǎn)化了程序員的勞動(dòng)程序。C#開(kāi)發(fā)語(yǔ)言即將何去何從?C#是微軟推出的面向?qū)ο箝_(kāi)發(fā)語(yǔ)言,因?yàn)槲④浀闹ν茝V,目前已經(jīng)超過(guò)Visual Basic,成為最流行的最快速的開(kāi)發(fā)語(yǔ)言。目前最新的C#版本是3.0,支持.NET 3.0和.NET 3.5框架,最新的開(kāi)發(fā)工具是Visual Studio 2008。提升了版本,那究竟用C#都能干什么呢?學(xué)習(xí)了一身武藝,該如何施展呢?下面用幾個(gè)老作者的話來(lái)幫助讀者分析分析。? C#的開(kāi)發(fā)方向涉及了幾乎所有的領(lǐng)域,如窗體開(kāi)發(fā)、網(wǎng)絡(luò)開(kāi)發(fā)、手機(jī)開(kāi)發(fā)、通信開(kāi)發(fā)、數(shù)據(jù)庫(kù)開(kāi)發(fā)等。? C#基于.NET框架之上,只需要學(xué)習(xí)兩部分內(nèi)容:語(yǔ)法基礎(chǔ)和如何調(diào)用類(lèi)庫(kù)。因?yàn)?NET框架幾乎提供了各種應(yīng)用開(kāi)發(fā)所需要的類(lèi)庫(kù),如針對(duì)安全的、針對(duì)驗(yàn)證的、針對(duì)網(wǎng)絡(luò)的、針對(duì)數(shù)據(jù)庫(kù)的等。? C#開(kāi)發(fā)語(yǔ)言會(huì)越來(lái)越犀利,它已經(jīng)結(jié)合了Visual Basic的快速開(kāi)發(fā)功能和Java的快速安全功能,但它還是不能具備與平臺(tái)無(wú)關(guān)性。? C#具有語(yǔ)法表現(xiàn)能力強(qiáng)、簡(jiǎn)單易學(xué)的特點(diǎn),同時(shí)微軟提供的Visual Studio開(kāi)發(fā)工具,能幫助開(kāi)發(fā)人員快速、方便地找到各種錯(cuò)誤、技巧和方法與類(lèi)的定義,而且Visual Studio還集編碼、調(diào)試、測(cè)試為一體。如何學(xué)好C#?——多位資深程序員的心得共享如何學(xué)好C#,這是每個(gè)初學(xué)者必問(wèn)的問(wèn)題。下面來(lái)聽(tīng)聽(tīng)資深開(kāi)發(fā)者的這些話吧。? 找問(wèn)題、提問(wèn)題、解決問(wèn)題,這是我學(xué)習(xí)新技術(shù)的三大法寶。? 選擇好的開(kāi)發(fā)語(yǔ)言、好的開(kāi)發(fā)工具和好的開(kāi)發(fā)方向,這是C#的門(mén)檻。? 不是所有的語(yǔ)言都要學(xué),但語(yǔ)言的語(yǔ)法一定要學(xué)精。同時(shí)要了解這門(mén)語(yǔ)言能帶來(lái)什么,能提升什么,能為我們做什么。? 了解技術(shù)的先進(jìn)性,掌握基礎(chǔ)語(yǔ)法、先進(jìn)技術(shù)和技巧,多實(shí)踐。下圖是我從一個(gè)C#初學(xué)者到高級(jí)研究員的行走曲線。 本書(shū)內(nèi)容特色本書(shū)不僅講解了.NET 3.5框架之上的4種開(kāi)發(fā)技術(shù):LINQ、WPF、WF和WCF,還通過(guò)這些技術(shù),深入學(xué)習(xí)了.NET 3.5的底層開(kāi)發(fā)技術(shù)。本書(shū)知識(shí)點(diǎn)豐富、應(yīng)用實(shí)例廣泛,是多位作者共同努力的結(jié)果。每位作者在.NET不同的領(lǐng)域,都有自己最擅長(zhǎng)的技術(shù)。全書(shū)講解方式簡(jiǎn)單直白,難點(diǎn)注釋清楚,實(shí)例力求接近實(shí)際。本書(shū)內(nèi)容主要有以下特色。? 本書(shū)首先從C#的基礎(chǔ)語(yǔ)法和面向?qū)ο缶幊讨v起,為初學(xué)者鋪墊入門(mén)之路。? 本書(shū)盡量減少長(zhǎng)篇代碼段,力爭(zhēng)每個(gè)代碼段都讓讀者明明白白。? 本書(shū)知識(shí)點(diǎn)豐富,涉及這4項(xiàng)關(guān)鍵技術(shù)方方面面的應(yīng)用。? 本書(shū)實(shí)例面向?qū)嶋H開(kāi)發(fā),讀者可根據(jù)實(shí)際情況順手拈來(lái)。? 對(duì)于讀者工作中經(jīng)常遇到的問(wèn)題,給出了技巧、注意等專(zhuān)門(mén)說(shuō)明。本書(shū)知識(shí)結(jié)構(gòu)體系本書(shū)首先普及了C#的基礎(chǔ)語(yǔ)法,然后介紹了如何用C#進(jìn)行面向?qū)ο缶幊?。最后將?nèi)容分解,逐一介紹.NET 3.5的4大法寶。本書(shū)共分成5篇。第1篇(第1章~第3章):這是C#面向?qū)ο箝_(kāi)發(fā)的基礎(chǔ),包括語(yǔ)法和面向?qū)ο缶幊?。主要是帶領(lǐng)讀者學(xué)習(xí)和回顧一些C#的關(guān)鍵知識(shí)點(diǎn)。第2篇(第4章~第6章):介紹.NET 3.5中的集成查詢技術(shù)LINQ。這種技術(shù)代替了原有的SQL,而且可以提供更好的完全面向?qū)ο箝_(kāi)發(fā)的數(shù)據(jù)通信技術(shù)。LINQ可以與常見(jiàn)的數(shù)據(jù)庫(kù)、XML、Dataset等進(jìn)行交互,是多功能集成查詢技術(shù)。本篇提供了20個(gè)完整案例,供讀者進(jìn)行理論學(xué)習(xí)后的實(shí)踐操作。第3篇(第7章~第18章):WPF一直被稱(chēng)為最絢麗的技術(shù),是微軟公司在.NET Framework 3.5平臺(tái)上推出的一個(gè)圖形平臺(tái)。使用WPF可以在Windows Vista操作系統(tǒng)平臺(tái)上開(kāi)發(fā)出具有絢麗視覺(jué)效果的應(yīng)用程序,而且這些效果還可以應(yīng)用在Windows XP或者是Windows 2003操作系統(tǒng)上。本篇是全書(shū)的重點(diǎn)推薦篇。因?yàn)殡S著技術(shù)的發(fā)展,如何讓人們覺(jué)得網(wǎng)絡(luò)生活更美、更有趣、更智能是開(kāi)發(fā)人員的追求,而WPF是實(shí)現(xiàn)這一追求的目標(biāo)。本篇共有130多個(gè)案例,其中有10多個(gè)大的案例。第4篇(第19章~第22章):WF是微軟在.NET 3.0之后推出的一套工作流開(kāi)發(fā)框架,是所有OA系統(tǒng)必需的一項(xiàng)功能。最早的WinFx是WF的前身,在.NET 3.5框架中,推出了更完整的工作流定義程序。WF不是一個(gè)獨(dú)立的工作流應(yīng)用程序,它提供了一些類(lèi)庫(kù)用于輔助工作流應(yīng)用程序的開(kāi)發(fā),并提供了實(shí)現(xiàn)工作流應(yīng)用程序時(shí)所需要實(shí)現(xiàn)的一些機(jī)制。本篇30個(gè)大小案例,其中大的案例有5個(gè),實(shí)戰(zhàn)項(xiàng)目1個(gè)。第5篇(第23章~第28章):WCF是與SOA息息相關(guān)的技術(shù)。本篇會(huì)讓讀者首先明白究竟什么是SOA,然后介紹SOA技術(shù)的原理,最后會(huì)讓讀者學(xué)會(huì)使用WCF技術(shù)。WCF的設(shè)計(jì)目的是為分布式計(jì)算提供可管理的方法,提供廣泛的互操作性,并為服務(wù)定位提供直接的支持。本篇有50多個(gè)案例。適合閱讀本書(shū)的讀者有哪些?? 想學(xué)習(xí)C# 3.0開(kāi)發(fā)技術(shù)的人員;? C# 3.0初級(jí)、中級(jí)人員;? 想開(kāi)發(fā)絢麗的WinForm窗體應(yīng)用程序開(kāi)發(fā)的人員;? 想使用WPF進(jìn)行應(yīng)用程序開(kāi)發(fā)的人員;? 想學(xué)習(xí)LINQ使用的人員;? 想學(xué)習(xí)OA系統(tǒng)的人員;? 想學(xué)習(xí)WCF遠(yuǎn)程通信技術(shù)的人;? 想深入了解.NET框架的開(kāi)發(fā)人員;? 想使用書(shū)中其他具體技術(shù)的人員。本書(shū)編委會(huì)本書(shū)由歐振旭任主編,組織人員編寫(xiě)。其他編委有武冬、郅曉娜、孫美芹、衛(wèi)麗行、尹翠翠、蔡繼文、陳曉宇、遲劍、鄧薇、郭利魁、金貞姬、李敬才、李萍、劉敬、陳慧、劉艷飛。本書(shū)作者本書(shū)由丁士鋒、朱毅、楊明羽主筆編寫(xiě)。其他參與編寫(xiě)和資料整理的人員有武冬、郅曉娜、孫美芹、衛(wèi)麗行、尹翠翠、蔡繼文、陳曉宇、遲劍、鄧薇、郭利魁、金貞姬、李敬才、李萍、劉敬、陳慧、劉艷飛、呂博、全哲、佘勇、宋學(xué)江、王浩、王康、王楠、楊宗芳、張嚴(yán)虎、周玉、張平、張靖波、周芳、楊罡、于海濱、張晶杰、張利峰、楊景鳳、陳鍇、鄭劍鋒、葉佩思、張濤、趙東彪、王雙、王賢勤、陳燕良、朱奇俊、張承明、郭建利、胡超、黃艷、張?jiān)?、李琳娜、楊紹波、李寧、李鵬程、翟寶利、趙輝、岳付強(qiáng)、辛本柱、辛立偉、趙生超、徐建等。在此一并表示感謝!編者2009年1月
內(nèi)容概要
C#是微軟推出的一種面向?qū)ο箝_(kāi)發(fā)語(yǔ)言,其能讓已有經(jīng)驗(yàn)的開(kāi)發(fā)人員輕松上手,并在很短的時(shí)間內(nèi)就可以使用C#高效地進(jìn)行工作。這是讀者選擇C#的原因。目前最新的C#版本就是.NET3.5框架上的C#3.0。本書(shū)借助VisualStudio2008開(kāi)發(fā)工具,詳細(xì)介紹了.NET框架中的4大開(kāi)發(fā)利器:LINQ、WPF、WF和WCF。LINQ是集成查詢語(yǔ)言,它在對(duì)象和數(shù)據(jù)之間建立一種對(duì)應(yīng)關(guān)系,可以使用訪問(wèn)內(nèi)存對(duì)象的方式查詢數(shù)據(jù)集合。WPF是C#開(kāi)發(fā)的圖形平臺(tái),它改變了傳統(tǒng)Windows程序員的開(kāi)發(fā)觀念和開(kāi)發(fā)方式。WF不是一個(gè)獨(dú)立的工作流應(yīng)用程序,它提供了一些類(lèi)庫(kù)用于輔助工作流應(yīng)用程序的開(kāi)發(fā),并提供了實(shí)現(xiàn)工作流應(yīng)用程序時(shí)所需要實(shí)現(xiàn)的一些機(jī)制,比如持久化、補(bǔ)償、跟蹤機(jī)制等。WCF是遠(yuǎn)程通訊技術(shù),其傳承了SOA設(shè)計(jì)的優(yōu)勢(shì)?! 毒–# 3.0與NET 3.5高級(jí)編程:LINQ、WCF、WPF、WF》實(shí)例具有代表性、編碼規(guī)范、講解詳細(xì),可作為特定技術(shù)開(kāi)發(fā)人員的指導(dǎo)教程,也可以讓讀者更深入地學(xué)習(xí).NET3.5框架的原理和組成。
作者簡(jiǎn)介
丁士鋒 畢業(yè)于國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院。有多年的大型軟件系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn),有近8年的.NET軟件項(xiàng)目研發(fā)經(jīng)驗(yàn),擅長(zhǎng)C#語(yǔ)言,對(duì).NET框架及其底層機(jī)制有深入的理解。曾經(jīng)任職于三星電子、諾基亞等公司,從事軟件項(xiàng)目開(kāi)發(fā)。對(duì)企業(yè)軟件的設(shè)計(jì)與架構(gòu)有深入的研究和大量經(jīng)驗(yàn),主導(dǎo)過(guò)多個(gè)大型的企業(yè)分布式項(xiàng)目的開(kāi)發(fā)。朱毅 畢業(yè)于上海交通大學(xué),獲信息工程、計(jì)算機(jī)科學(xué)雙學(xué)士學(xué)位。之后又獲得了復(fù)旦大學(xué)軟件工程碩士學(xué)位。有6年多的.NET研發(fā)經(jīng)驗(yàn),涉及分布式系統(tǒng)、B/S體系結(jié)構(gòu)系統(tǒng)、C/S體系結(jié)構(gòu)系統(tǒng)的架構(gòu)和開(kāi)發(fā)。曾任職于西門(mén)子移動(dòng)通信有限公司,擔(dān)任項(xiàng)目經(jīng)理,致力于企業(yè)ERP系統(tǒng)的架構(gòu)。現(xiàn)任職于惠普有限公司ISEE項(xiàng)目組進(jìn)行項(xiàng)目開(kāi)發(fā)。長(zhǎng)期活躍于各大技術(shù)社區(qū),曾著有《.NET程序員面試指南》一書(shū)。業(yè)余時(shí)間喜歡閱讀和旅游。楊明羽 畢業(yè)于浙江大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè),高級(jí)軟件工程師。多年來(lái)一直從事軟件開(kāi)發(fā)和項(xiàng)目管理類(lèi)工作,有近10年的軟件開(kāi)發(fā)經(jīng)驗(yàn)。擅長(zhǎng)C#語(yǔ)言,深入理解.NET框架底層機(jī)制,長(zhǎng)期追蹤.NET框架的最新技術(shù)。曾任職于263在線、阿里巴巴等網(wǎng)絡(luò)公司?,F(xiàn)任職于上海某大型網(wǎng)絡(luò)科技公司,擔(dān)任技術(shù)總監(jiān)一職。
書(shū)籍目錄
第1篇 C#面向?qū)ο箝_(kāi)發(fā)基礎(chǔ)第1章 .NET框架和Visual Studio 2008 開(kāi)發(fā)工具 21.1 .NET 3.5框架一覽 21.1.1 框架包含的開(kāi)發(fā)語(yǔ)言 21.1.2 C#開(kāi)發(fā)語(yǔ)言的特點(diǎn) 31.1.3 C#的運(yùn)行機(jī)制 31.1.4 C#的類(lèi)庫(kù)框架 41.2 Visual Studio 2008 開(kāi)發(fā)界面 41.2.1 Visual Studio 2008界面一覽 51.2.2 菜單欄 51.2.3 工具欄 61.2.4 工具箱 71.2.5 屬性窗口 71.2.6 解決方案資源管理器 71.2.7 服務(wù)器資源管理器 81.3 創(chuàng)建C#應(yīng)用程序 91.3.1 控制臺(tái)應(yīng)用程序(Console) 91.3.2 Windows 應(yīng)用程序(Forms) 101.3.3 ASP.NET 3.5網(wǎng)站 111.4 小結(jié) 12第2章 C#的語(yǔ)法知識(shí) 132.1 變量、常量和表達(dá)式 132.1.1 常量 132.1.2 變量 132.1.3 變量的類(lèi)型 142.1.4 類(lèi)型轉(zhuǎn)換 142.1.5 變量的作用域和生存周期 152.1.6 表達(dá)式 152.2 運(yùn)算符 162.2.1 算術(shù)運(yùn)算符 162.2.2 關(guān)系運(yùn)算符和邏輯運(yùn)算符 162.2.3 賦值運(yùn)算符 172.2.4 ?運(yùn)算符 172.2.5 運(yùn)算符優(yōu)先級(jí) 172.3 流程控制語(yǔ)句 182.3.1 if語(yǔ)句 182.3.2 switch語(yǔ)句 182.3.3 for語(yǔ)句 202.3.4 foreach語(yǔ)句 202.3.5 while語(yǔ)句 212.4 方法和函數(shù) 212.4.1 方法和函數(shù)的定義 212.4.2 函數(shù)的參數(shù) 222.4.3 函數(shù)的返回值 222.4.4 函數(shù)的重載 222.4.5 委托 232.5 泛型 232.5.1 什么是泛型 232.5.2 泛型的應(yīng)用范圍 242.6 小結(jié) 24第3章 C#的面向?qū)ο筇匦?253.1 面向?qū)ο缶幊谈攀?253.1.1 什么是類(lèi)和對(duì)象 253.1.2 用C#如何創(chuàng)建類(lèi) 263.1.3 用C#如何創(chuàng)建對(duì)象 273.1.4 什么是面向?qū)ο缶幊?273.2 面向?qū)ο蟮募夹g(shù) 283.2.1 接口 283.2.2 用C#如何創(chuàng)建接口 283.2.3 繼承 293.2.4 用C#如何實(shí)現(xiàn)繼承 293.2.5 多態(tài) 303.2.6 用C#如何實(shí)現(xiàn)多態(tài) 313.3 面向?qū)ο箝_(kāi)發(fā)的簡(jiǎn)單實(shí)例 313.3.1 面向?qū)ο蠊δ茉O(shè)計(jì) 313.3.2 面向?qū)ο蟮念?lèi)設(shè)計(jì) 323.3.3 面向?qū)ο蟮膽?yīng)用 323.4 小結(jié) 34第2篇 C#中的LINQ開(kāi)發(fā)第4章 LINQ查詢基礎(chǔ) 364.1 LINQ基礎(chǔ)概念 364.1.1 什么是LINQ 364.1.2 如何使用LINQ 374.1.3 LINQ查詢 384.2 LINQ查詢表達(dá)式 394.2.1 查詢表達(dá)式 394.2.2 用from子句指定數(shù)據(jù)源 404.2.3 用select子句指定目標(biāo)數(shù)據(jù) 414.2.4 用where子句指定篩選條件 444.2.5 用orderby子句進(jìn)行排序 464.2.6 用group子句進(jìn)行分組 484.2.7 用from子句進(jìn)行復(fù)合查詢 504.2.8 用join子句進(jìn)行聯(lián)接 524.2.9 用join子句進(jìn)行內(nèi)部聯(lián)接 524.2.10 用join子句進(jìn)行分組聯(lián)接 534.2.11 用join子句進(jìn)行左外部聯(lián)接 544.3 LINQ查詢方法 554.3.1 IEnumerable接口 554.3.2 Lambda表達(dá)式 574.3.3 用Where()方法進(jìn)行篩選 584.3.4 用OrderBy()方法進(jìn)行排序 604.3.5 用Skip()、SkipWhile()跳過(guò)元素 624.3.6 用Take()、TakeWhile()提取元素 634.3.7 用Max()等對(duì)元素進(jìn)行數(shù)值計(jì)算 644.3.8 用Distinct()消除集合中相等的元素 664.3.9 用Concat()連接兩個(gè)集合 684.3.10 用Union()等進(jìn)行集合操作 694.4 小結(jié) 71第5章 LINQ to ADO.NET——支持LINQ 語(yǔ)言與ADO.NET的交互 725.1 LINQ to ADO.NET概述 725.1.1 LINQ to DataSet概述 725.1.2 LINQ to SQL概述 735.2 LINQ to DataSet——實(shí)現(xiàn)復(fù)雜數(shù)據(jù)查詢 745.2.1 使用LINQ to DataSet 745.2.2 查詢單個(gè)數(shù)據(jù)表 755.2.3 查詢多個(gè)數(shù)據(jù)表 785.2.4 用查詢創(chuàng)建數(shù)據(jù)表 815.2.5 修改表中字段數(shù)據(jù) 835.2.6 使用數(shù)據(jù)視圖DataView 845.3 LINQ to SQL——對(duì)象模型 875.3.1 對(duì)象模型的原理 875.3.2 生成對(duì)象關(guān)系設(shè)計(jì)器 885.3.3 對(duì)象關(guān)系設(shè)計(jì)器的構(gòu)成 905.3.4 深入LINQ to SQL類(lèi) 915.3.5 通過(guò)綁定瀏覽數(shù)據(jù)庫(kù)記錄 935.3.6 用LINQ查詢LINQ to SQL類(lèi) 955.3.7 修改數(shù)據(jù)庫(kù)記錄 965.4 小結(jié) 98第6章 LINQ To XML——支持LINQ語(yǔ)言與 XML語(yǔ)言的交互 996.1 LINQ to XML概述 996.1.1 什么是LINQ to XML 996.1.2 LINQ to XML與DOM 1016.2 構(gòu)造XML樹(shù) 1026.2.1 構(gòu)造簡(jiǎn)單的XML元素 1026.2.2 構(gòu)造具有屬性的XML元素 1046.2.3 構(gòu)造具有子元素的XML元素 1076.2.4 用XElement類(lèi)構(gòu)造XML樹(shù) 1086.3 查詢XML樹(shù) 1096.3.1 查找具有特定屬性的元素 1096.3.2 查找具有特定子元素的元素 1116.3.3 對(duì)XML元素進(jìn)行排序 1126.3.4 基于上下文查詢?cè)?1136.4 操作XML樹(shù) 1156.4.1 加載和保存XML樹(shù) 1156.4.2 添加元素到XML樹(shù) 1166.4.3 移除XML樹(shù)的元素和屬性 1186.5 小結(jié) 122第3篇 WPF美輪美奐技術(shù)第7章 WPF編程入門(mén) 1267.1 WPF概述 1267.1.1 理解Windows圖形系統(tǒng) 1267.1.2 WPF的功能特點(diǎn) 1277.1.3 WPF架構(gòu)簡(jiǎn)介 1277.1.4 WPF的類(lèi)層次結(jié)構(gòu) 1287.2 WPF開(kāi)發(fā)工具簡(jiǎn)介 1307.2.1 Visual Studio 2008開(kāi)發(fā)工具 1307.2.2 Microsoft Expression Blend設(shè)計(jì)工具 1317.2.3 XAMLPad標(biāo)記文本查看器 1327.2.4 ZAM 3D第三方工具(3D模型) 1337.3 第一個(gè)WPF應(yīng)用程序 1337.4 WPF應(yīng)用程序結(jié)構(gòu) 1357.5 WPF與.NET Framework 3.5平臺(tái) 1357.5.1 Windows Communication Foundation概述 1367.5.2 Windows CardSpace概述 1377.5.3 Windows Workflow Foundation 概述 1377.6 小結(jié) 138第8章 XAML標(biāo)記語(yǔ)言 1398.1 理解XAML 1398.1.1 XAML是什么 1398.1.2 用C#模擬XAML實(shí)現(xiàn)的內(nèi)容 1418.1.3 XAML的種類(lèi) 1438.2 XAML基礎(chǔ) 1438.2.1 命名空間 1448.2.2 代碼后置文件 1468.2.3 使用簡(jiǎn)單的屬性和類(lèi)型轉(zhuǎn)換器 1498.2.4 屬性語(yǔ)法與屬性元素語(yǔ)法 1508.2.5 標(biāo)記擴(kuò)展特性 1528.2.6 附加屬性 1538.2.7 特定的字符和空白 1558.2.8 在XAML中使用事件 1578.2.9 使用其他命名空間中的類(lèi)型 1588.2.10 加載和編譯XAML 1608.3 小結(jié) 164第9章 Application全局應(yīng)用程序類(lèi) 1669.1 應(yīng)用程序生命周期 1669.1.1 創(chuàng)建Application對(duì)象 1669.1.2 創(chuàng)建一個(gè)自定義的Application類(lèi) 1689.1.3 關(guān)閉應(yīng)用程序 1699.1.4 應(yīng)用程序事件 1709.2 事件執(zhí)行周期 1719.2.1 Startup應(yīng)用程序啟動(dòng)事件 1719.2.2 Activated和Deactiveated事件——激活與取消激活 1729.2.3 DispatherUnhandledException事件——處理應(yīng)用程序未處理的異常 1739.2.4 SessionEnding事件——注銷(xiāo)或關(guān)閉系統(tǒng) 1749.2.5 Exit事件——退出應(yīng)用程序 1759.3 Application類(lèi)的任務(wù) 1779.3.1 處理命令行參數(shù) 1779.3.2 訪問(wèn)當(dāng)前的應(yīng)用程序 1789.3.3 單實(shí)例應(yīng)用程序 1819.4 小結(jié) 185第10章 WPF布局 18710.1 理解WPF布局 18710.1.1 WPF的布局原理 18710.1.2 布局的過(guò)程 18810.1.3 布局容器 18810.2 使用StackPanel進(jìn)行簡(jiǎn)單地布局 18910.2.1 StackPanel示例 18910.2.2 StackPanel布局屬性 19110.3 使用WrapPanel和DockPanel 19310.3.1 使用WrapPanel控件布局 19310.3.2 使用DockPanel控件布局 19410.3.3 簡(jiǎn)單對(duì)話框的實(shí)現(xiàn) 19610.4 Grid控件 19810.4.1 創(chuàng)建Grid控件 19810.4.2 調(diào)整行列尺寸 19910.4.3 編程創(chuàng)建Grid控件 20110.4.4 合并行和列 20310.4.5 窗體分割 20510.4.6 共享尺寸組 20810.4.7 使用UniformGrid控件 21210.5 基于坐標(biāo)布局的Canvas 21210.5.1 Canvas控件的使用方法 21310.5.2 Canvas的Z軸 21410.5.3 InkCanvas介紹 21410.6 小結(jié) 217第11章 內(nèi)容控件 21811.1 理解內(nèi)容控件 21811.1.1 什么是內(nèi)容控件 21811.1.2 Content屬性介紹 22011.1.3 內(nèi)容的對(duì)齊屬性 22211.2 內(nèi)容容器控件 22311.2.1 ScrollViewer滾動(dòng)條控件 22311.2.2 GroupBox組合框和TabItem標(biāo)簽頁(yè)控件 22711.2.3 Expander可折疊控件 22911.3 裝飾控件 23211.3.1 Border邊框控件 23211.3.2 Viewbox自動(dòng)縮放控件 23311.4 小結(jié) 235第12章 WPF依賴(lài)屬性和事件路由 23612.1 WPF中的樹(shù) 23612.1.1 邏輯樹(shù)和視覺(jué)樹(shù) 23612.1.2 編程遍歷樹(shù)結(jié)構(gòu) 23812.2 理解依賴(lài)屬性 23912.2.1 依賴(lài)屬性的概念 24012.2.2 定義依賴(lài)屬性 24212.2.3 依賴(lài)屬性示例 24412.2.4 共享依賴(lài)屬性 24812.2.5 注冊(cè)附加屬性 24912.3 理解事件路由 25012.3.1 路由事件的概念 25012.3.2 定義和注冊(cè)路由事件 25312.3.3 事件路由策略 25412.3.4 RoutedEventArgs類(lèi)型的參數(shù) 25712.3.5 附加事件 25812.4 WPF中的事件 25912.4.1 生命周期事件 25912.4.2 鍵盤(pán)事件 26112.4.3 鍵盤(pán)焦點(diǎn) 26412.4.4 鍵盤(pán)狀態(tài) 26512.4.5 鼠標(biāo)事件 26612.4.6 捕捉鼠標(biāo) 27012.4.7 鼠標(biāo)拖放編程 27212.4.8 文件拖放示例 27512.5 小結(jié) 277第13章 標(biāo)準(zhǔn)控件 27813.1 控件基礎(chǔ) 27813.1.1 背景色和前景色畫(huà)刷 27813.1.2 透明度設(shè)置 28013.1.3 更改字體 28113.1.4 更改鼠標(biāo)光標(biāo) 28213.2 內(nèi)容控件 28613.2.1 Label標(biāo)簽控件 28613.2.2 Button控件 28713.2.3 CheckBox和RadioButton控件 29013.2.4 ToolTip提示控件 29113.2.5 使用ToolTipService對(duì)象ToolTip 29313.2.6 使用Popup控件 29513.3 文本控件 29813.3.1 TextBox控件 29913.3.2 選擇文本 30013.3.3 PasswordBox密碼框控件 30113.3.4 TextBlock控件 30313.4 列表控件 30513.4.1 ListBox列表框控件 30513.4.2 獲取ListBox選定項(xiàng) 30713.4.3 在ListBox中進(jìn)行多選 30913.4.4 ComboBox下拉列表框控件 31013.5 范圍控件 31313.5.1 ProgressBar進(jìn)度條控件 31313.5.2 Slider滑動(dòng)條控件 31413.6 小結(jié) 317第14章 窗口與導(dǎo)航 31814.1 Windows類(lèi)簡(jiǎn)介 31814.1.1 Window類(lèi)的基本屬性 31914.1.2 窗口的生命周期 32214.1.3 模式與非模式窗口 32414.1.4 窗口的定位和尺寸 32514.1.5 保存和恢復(fù)窗口位置 32614.2 對(duì)話框窗口 32714.2.1 窗口的宿主 32714.2.2 對(duì)話框模型 32814.2.3 MessageBox消息框 33014.2.4 通用對(duì)話框 33114.3 非矩形窗口 33314.3.1 圓角窗口 33414.3.2 圖形窗口 33514.3.3 調(diào)整非矩形窗口尺寸 33714.4 一個(gè)簡(jiǎn)單的導(dǎo)航應(yīng)用程序示例 33814.5 基于頁(yè)面的用戶界面 34014.5.1 Page類(lèi)簡(jiǎn)介 34014.5.2 使用Hyperlink超級(jí)鏈接 34114.5.3 片段導(dǎo)航 34214.5.4 NavigationWindow導(dǎo)航窗口 34314.5.5 Frame頁(yè)面框架 34414.5.6 導(dǎo)航歷史記錄 34714.6 NavigationService導(dǎo)航服務(wù) 34814.6.1 編程控制導(dǎo)航 34814.6.2 導(dǎo)航生命期事件 35014.6.3 導(dǎo)航記錄管理 35314.6.4 使用頁(yè)函數(shù)PageFunction 35714.7 XAML瀏覽器應(yīng)用程序 36014.7.1 XBAP的特點(diǎn) 36114.7.2 創(chuàng)建XBAP應(yīng)用程序 36114.8 小結(jié) 362第15章 WPF資源、樣式和控件模板 36315.1 程序集資源 36315.1.1 添加資源 36315.1.2 獲取程序集資源 36415.2 對(duì)象資源 36515.2.1 資源集合 36615.2.2 靜態(tài)和動(dòng)態(tài)資源 36815.2.3 非共享資源 36815.2.4 編程訪問(wèn)資源 36915.2.5 應(yīng)用程序資源 36915.2.6 系統(tǒng)資源 37015.2.7 使用資源字典組織資源 37115.3 樣式基礎(chǔ) 37215.3.1 創(chuàng)建一個(gè)樣式對(duì)象 37315.3.2 在樣式中設(shè)置屬性 37415.3.3 根據(jù)指定的類(lèi)型自動(dòng)應(yīng)用樣式 37515.3.4 多級(jí)樣式 37615.3.5 綁定事件處理器 37715.4 樣式觸發(fā)器 37815.4.1 創(chuàng)建簡(jiǎn)單觸發(fā)器 37815.4.2 創(chuàng)建事件觸發(fā)器 38115.4.3 數(shù)據(jù)觸發(fā)器 38115.5 控件模板 38315.5.1 理解控件模板 38415.5.2 一個(gè)按鈕模板示例 38415.5.3 模板的綁定 38615.5.4 模板觸發(fā)器 38715.6 小結(jié) 389第16章 形狀、變換和畫(huà)刷 39016.1 WPF圖形 39016.1.1 Shape類(lèi) 39016.1.2 Rectangle和Ellipse類(lèi) 39116.1.3 Stretch屬性 39216.1.4 Line直線對(duì)象 39316.1.5 Polyline多段線對(duì)象 39416.1.6 Polygon多邊形對(duì)象 39516.1.7 線帽和線連接點(diǎn) 39716.1.8 繪制虛線 39816.2 畫(huà)刷 39916.2.1 LinearGradientBrush線性漸變畫(huà)刷 39916.2.2 RadialGradientBrush徑向漸變畫(huà)刷 40116.2.3 ImageBrush圖像畫(huà)刷 40216.2.4 VisualBrush可視化對(duì)象畫(huà)刷 40416.2.5 OpacityMask不透明蒙板 40516.3 WPF變換 40716.3.1 應(yīng)用變換 40816.3.2 TranslateTransform移動(dòng)變換 40916.3.3 RotateTransform旋轉(zhuǎn)變換 40916.3.4 ScaleTransform縮放變換 41016.3.5 SkewTransform扭曲變換 41116.3.6 TransformGroup組合變換 41216.4 位圖效果 41316.4.1 模糊 41416.4.2 凹凸效果 41516.4.3 浮雕效果 41616.4.4 發(fā)光和陰影 41716.5 小結(jié) 418第17章 幾何圖形、圖像和可視化層 41917.1 路徑和幾何圖形 41917.1.1 線型、矩形和橢圓幾何圖形 41917.1.2 使用GeometryGroup組合形狀 42017.1.3 使用CombinedGeometry結(jié)合形狀 42217.1.4 認(rèn)識(shí)PathGeometry對(duì)象 42317.1.5 用PathGeometry對(duì)象繪制直線 42417.1.6 用PathGeometry對(duì)象繪制弧線 42417.1.7 用PathGeometry對(duì)象繪制貝塞爾曲線 42517.1.8 使用幾何迷你語(yǔ)言 42617.1.9 幾何圖形的裁切 42717.2 繪圖 42817.2.1 繪制形狀 42817.2.2 繪制圖像 43017.2.3 組合繪制 43017.3 可視化層 43117.3.1 在Visual上繪圖 43217.3.2 DrawingVisual宿主容器 43317.3.3 使用命中測(cè)試 43517.4 小結(jié) 437第18章 WPF數(shù)據(jù)綁定 43818.1 數(shù)據(jù)綁定基礎(chǔ) 43818.1.1 綁定到元素屬性 43818.1.2 使用程序代碼創(chuàng)建綁定 43918.1.3 綁定多個(gè)屬性 44018.1.4 綁定的方向 44118.1.5 綁定更新 44318.1.6 綁定到非元素的對(duì)象 44418.2 數(shù)據(jù)庫(kù)綁定 44818.2.1 創(chuàng)建數(shù)據(jù)訪問(wèn)組件 44818.2.2 實(shí)現(xiàn)數(shù)據(jù)實(shí)體對(duì)象 45018.2.3 顯示綁定對(duì)象 45018.2.4 更新數(shù)據(jù)庫(kù) 45218.3 小結(jié) 454第4篇 WF工作流編程第19章 WF編程入門(mén) 45619.1 WF基礎(chǔ) 45619.1.1 WF簡(jiǎn)介 45619.1.2 WF的開(kāi)發(fā)環(huán)境 45819.1.3 第一個(gè)工作流示例程序 45919.1.4 WF架構(gòu)簡(jiǎn)介 46319.2 使用WorkflowRuntime和WorkflowInstance類(lèi) 46419.2.1 理解WorkflowRuntime工作流引擎 46419.2.2 理解WorkflowInstance工作流實(shí)例 46719.3 工作流類(lèi)型和創(chuàng)建模式 46919.3.1 WF工作流的類(lèi)型 46919.3.2 一個(gè)簡(jiǎn)單的狀態(tài)機(jī)工作流示例 46919.3.3 WF工作流的創(chuàng)建模式 47119.4 小結(jié) 472第20章 WF活動(dòng) 47320.1 理解WF活動(dòng) 47320.1.1 活動(dòng)的類(lèi)層次結(jié)構(gòu) 47320.1.2 活動(dòng)條件類(lèi)型 47420.2 使用WF的基本活動(dòng) 47620.2.1 使用IfElseActivity活動(dòng) 47720.2.2 使用WhileActivity活動(dòng) 47820.2.3 使用ParalleActivity活動(dòng) 47920.2.4 使用ReplicatorActivity活動(dòng) 48220.2.5 使用ConditionedActivityGroup活動(dòng) 48520.2.6 使用InvokeWorkflowActivity活動(dòng) 48820.2.7 使用TerminateActivity活動(dòng) 49120.2.8 使用SuspendActivity活動(dòng) 49120.3 本地服務(wù)和事件驅(qū)動(dòng)的活動(dòng) 49320.3.1 理解和實(shí)現(xiàn)本地服務(wù) 49420.3.2 使用本地服務(wù)在宿主和工作流之間通信 49520.3.3 事件驅(qū)動(dòng)的活動(dòng)簡(jiǎn)介 49820.3.4 EventDrivenActivity和ListenActivity使用示例 49920.3.5 使用EventHandlingScopeActivity活動(dòng) 50220.4 小結(jié) 507第21章 WF服務(wù) 50821.1 WF服務(wù)基礎(chǔ) 50821.1.1 WF服務(wù)的分類(lèi) 50821.1.2 默認(rèn)的服務(wù)類(lèi)簡(jiǎn)介 50921.2 WF持久化服務(wù) 51021.2.1 準(zhǔn)備數(shù)據(jù)庫(kù) 51021.2.2 創(chuàng)建工作流 51121.2.3 使用SqlWorkflowPersistenceService 51321.3 WF跟蹤服務(wù) 51921.3.1 使用工作流跟蹤服務(wù) 51921.3.2 跟蹤服務(wù)配置文件 52321.4 小結(jié) 524第22章 基于ASP.NET的工作流批核系統(tǒng) 52522.1 工作流批核系統(tǒng)簡(jiǎn)介 52522.1.1 系統(tǒng)運(yùn)行效果 52522.1.2 系統(tǒng)基本結(jié)構(gòu) 52822.2 Workflows工作流項(xiàng)目 52922.2.1 基于事件驅(qū)動(dòng)的活動(dòng)實(shí)現(xiàn) 52922.2.2 UserActivity用戶活動(dòng)實(shí)現(xiàn) 53122.2.3 SaveWorkItems自定義活動(dòng)實(shí)現(xiàn) 53722.2.4 ApprovedWorkItemWorkflow工作流實(shí)例的實(shí)現(xiàn) 53822.2.5 工作流項(xiàng)目幫助類(lèi)的實(shí)現(xiàn) 54122.3 ASP.NET宿主應(yīng)用程序項(xiàng)目 54222.3.1 初始化工作流運(yùn)行時(shí)引擎 54322.3.2 創(chuàng)建工作流實(shí)例 54422.3.3 編輯和審核工作申請(qǐng)表單 54622.4 小結(jié) 549第5篇 WCF開(kāi)發(fā)第23章 SOA和WCF基礎(chǔ)介紹 55223.1 SOA架構(gòu)介紹 55223.1.1 軟件設(shè)計(jì)思想發(fā)展的簡(jiǎn)要介紹 55223.1.2 什么是SOA 55323.2 WCF簡(jiǎn)要介紹 55423.2.1 什么是WCF 55423.2.2 WCF體系框架 55523.2.3 WCF基礎(chǔ)概念介紹 55723.3 第一個(gè)WCF程序 55923.3.1 HelloWorld服務(wù)契約的定義 55923.3.2 HelloWorld的宿主程序 56123.3.3 訪問(wèn)HelloWorld服務(wù)的客戶端程序 56323.4 小結(jié) 565第24章 通道模型和綁定 56624.1 WCF通道模型 56624.1.1 WCF通道模型概述 56624.1.2 消息交換模式和通道形狀 56724.1.3 數(shù)據(jù)報(bào)模式 56724.1.4 請(qǐng)求-響應(yīng)模式 57024.1.5 雙工模式 57324.1.6 帶會(huì)話的數(shù)據(jù)報(bào)模式、請(qǐng)求-響應(yīng)模式和雙工模式 57424.1.7 通道形狀的改變 57524.1.8 通道性狀和上層服務(wù)協(xié)議 57624.1.9 通道管理器 57724.1.10 ICommunicationObject接口和狀態(tài)改變 57724.2 標(biāo)準(zhǔn)綁定介紹 58124.2.1 綁定的基本概念 58124.2.2 標(biāo)準(zhǔn)綁定 58124.2.3 設(shè)置綁定的方式 58224.2.4 如何選擇綁定 58324.3 本機(jī)WCF-WCF交互的綁定和地址 58524.3.1 場(chǎng)景概述 58524.3.2 IPC基本概念 58524.3.3 使用netNamedPipeBinding 58624.3.4 netNamedPipeBinding的地址和配置 58724.3.5 netNamedPipeBinding特點(diǎn)總結(jié) 58924.4 跨主機(jī)WCF-WCF交互的綁定和地址 58924.4.1 場(chǎng)景概述 59024.4.2 TCP協(xié)議概述 59024.4.3 Net.Tcp端口共享 59124.4.4 使用netTcpBinding 59124.4.5 netTcpBinding的地址和配置 59224.4.6 netTcpBinding特點(diǎn)總結(jié) 59524.5 與WS-I Basic Web服務(wù)進(jìn)行交互的綁定和地址 59524.5.1 場(chǎng)景概述 59524.5.2 SOAP協(xié)議概述 59624.5.3 使用basicHttpBinding 59724.5.4 basicHttpBinding的地址和配置 59824.5.5 basicHttpBinding特點(diǎn)總結(jié) 60024.6 與改進(jìn)Web服務(wù)進(jìn)行交互的綁定和地址 60024.6.1 場(chǎng)景概述 60124.6.2 改進(jìn)Web服務(wù)協(xié)議概述 60124.6.3 使用wsHttpBinding 60624.6.4 wsHttpBinding的地址和配置 60724.6.5 wsHttpBinding特點(diǎn)總結(jié) 60924.6.6 使用wsDualHttpBinding 61024.6.7 wsDualHttpBinding的地址和配置 61124.6.8 wsDualHttpBinding特點(diǎn)總結(jié) 61324.6.9 使用ws2007HttpBinding 61324.7 使用脫機(jī)模式進(jìn)行消息交互的綁定和地址 61324.7.1 場(chǎng)景概述 61424.7.2 MSMQ協(xié)議概述 61424.7.3 使用netMsmqBinding 61524.7.4 netMsmqBinding的地址和配置 61624.7.5 netMsmqBinding特點(diǎn)總結(jié) 61924.7.6 使用msmqIntegrationBinding 61924.7.7 msmqIntegrationBinding的地址和配置 62024.7.8 msmqIntegrationBinding特點(diǎn)總結(jié) 62224.8 小結(jié) 623第25章 定義服務(wù):契約編程 62425.1 契約定義和分類(lèi) 62425.1.1 什么是契約 62425.1.2 契約分類(lèi) 62425.2 服務(wù)契約 62525.2.1 服務(wù)契約和WSDL 62525.2.2 服務(wù)契約的重載問(wèn)題 62725.2.3 定義請(qǐng)求-響應(yīng)操作 62925.2.4 定義單程操作 63025.2.5 定義雙程操作 63225.2.6 WCF中事件的實(shí)現(xiàn) 64025.3 數(shù)據(jù)契約 64425.3.1 數(shù)據(jù)契約和XSD 64425.3.2 使用DataContract特性定義數(shù)據(jù)契約 64625.3.3 數(shù)據(jù)契約的繼承 64925.3.4 已知類(lèi)型的定義 65025.3.5 數(shù)據(jù)契約的等效性 65525.3.6 數(shù)據(jù)契約的版本控制 65825.3.7 定義必需的數(shù)據(jù)成員 66025.3.8 數(shù)據(jù)默認(rèn)值的發(fā)送 66225.3.9 數(shù)組和集合的處理 66325.4 消息契約 66725.4.1 消息契約基本概念 66725.4.2 強(qiáng)類(lèi)型消息 66825.4.3 弱類(lèi)型消息 67425.5 錯(cuò)誤處理和錯(cuò)誤契約 67825.5.1 SOAP消息的錯(cuò)誤處理 67825.5.2 服務(wù)端未捕獲的異常 67925.5.3 包含詳細(xì)異常信息 68125.5.4 捕捉服務(wù)異常 68225.5.5 FaultCode和FaultReason的使用 68425.5.6 使用錯(cuò)誤契約和FaultException 68525.6 小結(jié) 688第26章 WCF中的行為 68926.1 實(shí)例管理 68926.1.1 實(shí)例管理的設(shè)置 68926.1.2 PerCall實(shí)例策略 69026.1.3 PerSession實(shí)例策略和會(huì)話 69226.1.4 Single實(shí)例策略 69526.2 并發(fā)管理 69826.2.1 并發(fā)管理的設(shè)置 69826.2.2 Single并發(fā)模式 69926.2.3 Multiple并發(fā)模式 70126.2.4 Reentrant并發(fā)模式 70326.3 元數(shù)據(jù)的發(fā)布 70626.3.1 HTTP-GET方式發(fā)布元數(shù)據(jù) 70626.3.2 MEX終節(jié)點(diǎn)方式發(fā)布元數(shù)據(jù) 70826.4 事務(wù)管理 71026.4.1 事務(wù)的基本概念和特性 71026.4.2 單服務(wù)事務(wù) 71026.4.3 分布式事務(wù) 71526.4.4 事務(wù)協(xié)議和事務(wù)管理器 72126.5 小結(jié) 723第27章 安全 72427.1 常用概念介紹 72427.1.1 身份驗(yàn)證 72427.1.2 授權(quán) 72527.1.3 保密性 72527.1.4 完整性 72527.1.5 憑據(jù) 72527.2 傳輸安全性 72627.2.1 傳輸安全性的三要素 72627.2.2 WCF支持的傳輸安全模式 72627.2.3 傳輸安全模式的配置 72727.2.4 Transport安全模式下的憑證 72827.2.5 Message安全模式下的憑證 72927.3 局域網(wǎng)內(nèi)Windows平臺(tái)系統(tǒng)的安全性 72927.3.1 場(chǎng)景分析 72927.3.2 服務(wù)定義 73027.3.3 身份認(rèn)證 73227.3.4 授權(quán) 73427.4 跨Internet系統(tǒng)的安全性 73827.4.1 場(chǎng)景概述和綁定選擇 73827.4.2 消息安全 73927.4.3 身份認(rèn)證 74227.4.4 授權(quán) 74427.5 安全機(jī)制的日志和跟蹤 74527.6 小結(jié) 746第28章 自動(dòng)點(diǎn)滴管理系統(tǒng) 74728.1 需求分析 74728.1.1 系統(tǒng)介紹 74728.1.2 客戶端功能 74728.1.3 服務(wù)端功能 74828.2 系統(tǒng)設(shè)計(jì) 74828.2.1 服務(wù)邊界和接口 74828.2.2 傳輸和寄宿的設(shè)計(jì) 74928.2.3 界面的設(shè)計(jì) 74928.3 系統(tǒng)實(shí)現(xiàn) 75028.3.1 服務(wù)契約的定義 75028.3.2 數(shù)據(jù)契約的定義 75128.3.3 服務(wù)的實(shí)現(xiàn) 75628.3.4 控制臺(tái)實(shí)現(xiàn) 76228.3.5 客戶端實(shí)現(xiàn) 77028.4 運(yùn)行和測(cè)試 77828.5 小結(jié) 778
章節(jié)摘錄
第1章 .NET框架和Visual Studio 2008開(kāi)發(fā)工具C#(讀作C Sharp)語(yǔ)言是.NET框架重點(diǎn)推出的開(kāi)發(fā)語(yǔ)言,其具備C++語(yǔ)言的安全性和Visual Basic(以下簡(jiǎn)稱(chēng)VB)語(yǔ)言的快速開(kāi)發(fā)特點(diǎn),是目前最流行的開(kāi)發(fā)語(yǔ)言之一。因?yàn)镃#語(yǔ)言的類(lèi)庫(kù)全部封裝在.NET框架中,所以在講解具體的C#開(kāi)發(fā)語(yǔ)言前,本章會(huì)先介紹.NET 框架,其目前的最新版本是3.5。在介紹完框架后,為了方便程序開(kāi)發(fā),本章還會(huì)簡(jiǎn)單介紹C#的開(kāi)發(fā)工具Visual Studio 2008簡(jiǎn)稱(chēng)VS 2008。1.1 .NET 3.5框架一覽.NET 3.5是Microsoft推出的最新開(kāi)發(fā)框架,其支持目前最流行的開(kāi)發(fā)語(yǔ)言VB和C#,也封裝了一些常用的類(lèi)庫(kù)和組件,通過(guò)此框架,可以開(kāi)發(fā)和運(yùn)行常見(jiàn)的Windows程序和Web程序。本節(jié)簡(jiǎn)要介紹框架的內(nèi)容和運(yùn)行機(jī)制。%注意:.NET 3.5框架之前有個(gè).NET 3.0框架,但并沒(méi)有流行起來(lái)。.NET 3.5包含了.NET 2.0框架和.NET 3.0框架的所有內(nèi)容。1.1.1 框架包含的開(kāi)發(fā)語(yǔ)言Java語(yǔ)言也是很流行的一種語(yǔ)言,但其必須運(yùn)行在虛擬機(jī)上,這樣可以實(shí)現(xiàn)一些跨平臺(tái)的應(yīng)用。而現(xiàn)在最新版本的Visual C# 2008和Visual Basic 2008則必須運(yùn)行在.NET 3.5框架上。如果要在服務(wù)器上運(yùn)行Visual C# 2008的程序,則必須在服務(wù)器上安裝.NET 3.5框架。%提示:Microsoft最新的操作系統(tǒng)Vista自帶.NET 3.0 框架。雖然.NET 3.5是一個(gè)成熟的框架,但其底層類(lèi)庫(kù)依然調(diào)用的是.NET 2.0以前封裝好的所有類(lèi)。圖1.1所示的是.NET 3.5框架的基本組成,最上層就是其支持的開(kāi)發(fā)語(yǔ)言。在.NET 3.5支持的開(kāi)發(fā)語(yǔ)言中,C#和VB最流行。VB一般用來(lái)快速開(kāi)發(fā),在小型Windows應(yīng)用系統(tǒng)中最常用。C#是Microsoft重點(diǎn)推出的開(kāi)發(fā)語(yǔ)言,其結(jié)合了C和C++的一些優(yōu)點(diǎn),然后又去除了指針等難于理解的概念,是一門(mén)易于上手和開(kāi)發(fā)的語(yǔ)言。圖1.1 .NET 3.5的框架基本組成1.1.2 C#開(kāi)發(fā)語(yǔ)言的特點(diǎn)C#是最流行的開(kāi)發(fā)語(yǔ)言。相比較其他語(yǔ)言,其具備簡(jiǎn)單、方便、快速開(kāi)發(fā)等優(yōu)點(diǎn),主要特色如下所示。* C#語(yǔ)法與C、C++類(lèi)似,適合剛畢業(yè)的學(xué)生入門(mén)。* C#支持面向?qū)ο箝_(kāi)發(fā),并有.NET底層類(lèi)庫(kù)的支持,可以輕松創(chuàng)建對(duì)象。* C#的高開(kāi)發(fā)效率。C#的開(kāi)發(fā)工具VS 2005支持拖放式添加控件,開(kāi)發(fā)人員可以輕松完成桌面的布局。* C#通過(guò)內(nèi)置的服務(wù),使組件可以轉(zhuǎn)化為XML網(wǎng)絡(luò)服務(wù)。這樣就可以被其他程序調(diào)用,也可以被網(wǎng)絡(luò)上其他機(jī)器的其他程序調(diào)用,實(shí)現(xiàn)了一次創(chuàng)造、重復(fù)利用的高效開(kāi)發(fā)模式。* XML語(yǔ)言是一種最流行的數(shù)據(jù)描述語(yǔ)言。C#提供了對(duì)XML的強(qiáng)大支持,可以輕松地創(chuàng)建XML,也可以將XML數(shù)據(jù)應(yīng)用到程序中。* 自動(dòng)的資源回收功能,不用再像C++一樣,為程序運(yùn)行中的內(nèi)存管理傷腦筋。* 類(lèi)型安全是編寫(xiě)代碼優(yōu)先考慮的問(wèn)題。C#提供的類(lèi)型安全機(jī)制,可以避免一些常見(jiàn)的類(lèi)型問(wèn)題,如類(lèi)型轉(zhuǎn)換、數(shù)組類(lèi)型越界等。* 在.NET框架中,C#可以自由地和其他語(yǔ)言(VB、J#等)進(jìn)行轉(zhuǎn)換。1.1.3 C#的運(yùn)行機(jī)制如果只是學(xué)習(xí)用C#編寫(xiě)一段程序,那很簡(jiǎn)單,短短幾行代碼便可以實(shí)現(xiàn);而了解其真正實(shí)現(xiàn)的原理,則有助于開(kāi)發(fā)出安全、便于重構(gòu)的高性能程序。.NET 框架下所有的語(yǔ)言,實(shí)際上都是把代碼翻譯成中間語(yǔ)言(簡(jiǎn)稱(chēng)MSIL),然后生成標(biāo)準(zhǔn)程序集。無(wú)論是VB語(yǔ)言還是C#語(yǔ)言,它們使用的命名空間和類(lèi)庫(kù)都是中間語(yǔ)言書(shū)寫(xiě)的,所以能夠相互操作和相互調(diào)用。從本質(zhì)上講,就是在個(gè)別語(yǔ)言之下加上了一個(gè)共同解釋。.NET中的CLR(公共語(yǔ)言運(yùn)行時(shí)),用來(lái)運(yùn)行生成的MSIL,其實(shí)就是將MSIL轉(zhuǎn)換成COM以執(zhí)行程序。目前CLR只能在Windows 平臺(tái)上運(yùn)行。綜合上面所述,下面就是一個(gè)C#程序編譯運(yùn)行的簡(jiǎn)單步驟。(1)將編寫(xiě)的C#程序翻譯成中間語(yǔ)言。(2)經(jīng)過(guò)C#編譯器生成程序集(*.exe/*.dll)。編譯可以使用.NET框架提供的CSC命令,也可以在開(kāi)發(fā)工具Visual Studio中自動(dòng)編譯。(3)由公共語(yǔ)言運(yùn)行庫(kù)(CLR)執(zhí)行程序集,生成本地代碼。其中CLR的工作流程如圖1.2所示。圖1.2 CLR的工作流程1.1.4 C#的類(lèi)庫(kù)框架.NET 3.5 提供了開(kāi)發(fā)所有應(yīng)用需要的類(lèi)庫(kù),但其底層的基礎(chǔ)類(lèi)庫(kù)依然是.NET 2.0的類(lèi)庫(kù)。類(lèi)庫(kù)的主要分類(lèi)如圖1.3所示。在學(xué)習(xí)類(lèi)庫(kù)的時(shí)候,不需要全部掌握其應(yīng)用技術(shù)。了解類(lèi)庫(kù)的基本架構(gòu)和實(shí)現(xiàn)原理才是最重要的。圖1.3 類(lèi)庫(kù)的主要分類(lèi)1.2 Visual Studio 2008 開(kāi)發(fā)界面完善的開(kāi)發(fā)界面可幫助開(kāi)發(fā)人員提高開(kāi)發(fā)效率,這也是VS系列開(kāi)發(fā)工具最大的特點(diǎn),其完全支持拖動(dòng)方式設(shè)計(jì)窗體布局,還可以自動(dòng)生成各種窗體設(shè)計(jì)代碼。本例從整體布局方面入手,介紹Visual Studio 2008 IDE開(kāi)發(fā)界面。1.2.1 Visual Studio 2008界面一覽選擇“開(kāi)始”|“所有程序”|“Microsoft Visual Studio 2008”命令,打開(kāi)VS 2008的開(kāi)始界面,如圖1.4所示。圖中標(biāo)注出了需要注意的各個(gè)區(qū)域,其中開(kāi)始學(xué)習(xí)文檔。提供一些入門(mén)案例和文檔。讀者除了看書(shū)之外,也可以經(jīng)常閱讀這些文檔,有助于了解一些更深入的知識(shí)點(diǎn)。VS開(kāi)發(fā)新聞區(qū)域,如果連接了網(wǎng)絡(luò),則會(huì)顯示一些最新的VS開(kāi)發(fā)文檔和注意事項(xiàng)。選擇“文件”|“新建”|“項(xiàng)目”命令,打開(kāi)VS 2008提供的“新建項(xiàng)目”對(duì)話框,如圖1.5所示。其中一定要注意“選擇框架版本”下拉列表框,這里默認(rèn)是“.NET Framework 3.5”選項(xiàng),但其支持.NET 3.0和.NET 2.0框架版本。如果要開(kāi)發(fā)舊版本的程序,可通過(guò)此列表選擇。 圖1.4 VS 2008的開(kāi)始界面 圖1.5 “新建項(xiàng)目”對(duì)話框本例以開(kāi)發(fā)Windows窗體應(yīng)用程序?yàn)槔?,進(jìn)入正式開(kāi)發(fā)界面。選擇“模板”區(qū)域中的“Windows窗體應(yīng)用程序”選項(xiàng),在項(xiàng)目屬性區(qū)域設(shè)置項(xiàng)目的名稱(chēng)和保存位置。單擊“確定”按鈕即可進(jìn)入VS 2008的開(kāi)發(fā)界面。這個(gè)界面在前面已經(jīng)提到過(guò),本處不再給出圖示。1.2.2 菜單欄菜單欄位于開(kāi)發(fā)界面的頂端,提供一系列默認(rèn)的工具和可執(zhí)行操作,如數(shù)據(jù)庫(kù)配置工具和測(cè)試工具等。本節(jié)只是簡(jiǎn)要介紹每個(gè)菜單的功能,并不學(xué)習(xí)具體工具的使用。希望讀者對(duì)VS 2008的整體功能有一個(gè)概括的了解。* “文件”菜單:包括項(xiàng)目打開(kāi)、保存、導(dǎo)出等。和普通軟件的文件菜單沒(méi)有多少區(qū)別。* “編輯”菜單:包括常用的查找、替換、刪除等操作。* “視圖”菜單:視圖就是從整體上對(duì)開(kāi)發(fā)界面進(jìn)行布局,包括一些常用的提示窗口。此菜單非常重要,如果顯示一些錯(cuò)誤提示窗口和資源管理窗口,則開(kāi)發(fā)人員可以直觀地了解程序的錯(cuò)誤,以及程序所包括的所有文件。最常用的視圖窗口有“服務(wù)器資源管理器”、“解決方案資源管理器”、“錯(cuò)誤列表”、“工具箱”和“屬性窗口”,這5個(gè)窗口盡量在每次打開(kāi)開(kāi)發(fā)界面時(shí)自動(dòng)打開(kāi),以方便瀏覽整個(gè)項(xiàng)目的布局。* “項(xiàng)目”菜單:是對(duì)整個(gè)項(xiàng)目?jī)?nèi)容的管理。例如,在項(xiàng)目中添加新的窗體,引用一些其他項(xiàng)目程序,以及查看項(xiàng)目的分布式系統(tǒng)關(guān)系圖。* “生成”菜單:是對(duì)整個(gè)項(xiàng)目的編譯、發(fā)布和發(fā)布配置。在項(xiàng)目開(kāi)發(fā)完畢后,可借助此菜單,實(shí)現(xiàn)項(xiàng)目的編譯和打包。* “調(diào)試”菜單:是開(kāi)發(fā)人員在編寫(xiě)代碼時(shí),用于執(zhí)行、調(diào)試、判斷代碼,還可以在代碼中設(shè)置斷點(diǎn),以查看變量的結(jié)果。此菜單是開(kāi)發(fā)人員常用而且必須了解的菜單。* “數(shù)據(jù)”菜單:是對(duì)項(xiàng)目中當(dāng)前的數(shù)據(jù)源進(jìn)行管理,這些數(shù)據(jù)源包括數(shù)據(jù)庫(kù)、各種服務(wù)和對(duì)象等。如果項(xiàng)目中沒(méi)有數(shù)據(jù)源,也可以通過(guò)此菜單實(shí)現(xiàn)數(shù)據(jù)源的添加和配置。* “格式”菜單:用來(lái)調(diào)整窗體中各個(gè)控件的布局,如對(duì)齊、控件間距、大小等??梢淮芜x擇多個(gè)控件,進(jìn)行整體操作。* “工具”菜單:提供VS 2008可以支持的所有工具。如果要用菜單中沒(méi)有的工具,還可以自行添加。這些常見(jiàn)的工具包括代碼段管理器、宏和服務(wù)器連接等。* “測(cè)試”菜單:可能很多讀者已經(jīng)聽(tīng)說(shuō)過(guò)NUnit測(cè)試工具,以前它是一個(gè)單獨(dú)的為.NET提供測(cè)試的工具,但現(xiàn)在VS 2008集成了這種工具,開(kāi)發(fā)人員可以使用此工具對(duì)項(xiàng)目和類(lèi)庫(kù)進(jìn)行各種測(cè)試,可以及時(shí)檢查代碼錯(cuò)誤。* “窗口”菜單:提供一些窗口的布局操作,如隱藏、浮動(dòng)、拆分等,但它不太 常用。* “幫助”菜單:這里提供了前面安裝的MSDN說(shuō)明文檔的一些操作。%說(shuō)明:使用VS 2008前,一定要先了解這些菜單內(nèi)容,知道VS 2008都提供了哪些方便的操作。1.2.3 工具欄VS 2008提供了多達(dá)40多種的工具欄,可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)、報(bào)表、Office文檔、常用操作等的各種操作。為了讓讀者更方便學(xué)習(xí),本例只介紹最簡(jiǎn)單、最常用的幾種工具欄。選擇“視圖”|“工具欄”命令可以打開(kāi)這些工具欄。* “標(biāo)準(zhǔn)”工具欄。和其他軟件的標(biāo)準(zhǔn)工具欄一樣,提供常見(jiàn)的保存、打開(kāi)、新建按鈕。其中保存按鈕有兩個(gè)。按鈕用來(lái)保存當(dāng)前打開(kāi)的單個(gè)文檔,而按鈕用來(lái)保存當(dāng)前項(xiàng)目所有修改后的文檔。* “布局”工具欄。用來(lái)對(duì)窗體中的各個(gè)設(shè)計(jì)組件進(jìn)行統(tǒng)一布局,如左對(duì)齊、居中等。此工具欄在開(kāi)發(fā)Windows窗體程序時(shí)非常重要,而開(kāi)發(fā)Web程序則不需要。* “調(diào)試”工具欄。這個(gè)工具欄是每個(gè)開(kāi)發(fā)人員必須顯示的工具欄,用其可以實(shí)現(xiàn)對(duì)代碼的執(zhí)行、中斷、逐行執(zhí)行等功能。當(dāng)鼠標(biāo)指針指向某按鈕時(shí),還會(huì)提示這個(gè)按鈕的快捷鍵。開(kāi)發(fā)人員如果熟記這些快捷鍵,則可以用鍵盤(pán)提高操作速度。執(zhí)行代碼的快捷鍵是“F5”鍵,屬于最最常用的代碼操作。* “文本編輯器”工具欄。在打開(kāi)窗體設(shè)計(jì)視圖時(shí),此工具欄處于不可用狀態(tài)。因?yàn)槠渲恢С执a文本的編輯,包括代碼的縮進(jìn)、注釋、標(biāo)簽等。%提示:針對(duì)Windows程序開(kāi)發(fā)和Web程序開(kāi)發(fā),所使用的工具欄并不相同。讀者可根據(jù)自己的項(xiàng)目屬性,來(lái)決定都顯示哪些工具欄。1.2.4 工具箱工具箱包含了VS 2008提供的常用控件,如按鈕、下拉列表框、列表框等。因?yàn)閂S 2008 提供的控件非常多,所以這些組件被分成了以下常見(jiàn)的幾組。* 所有Windows窗體:包括創(chuàng)建普通Windows窗體所需要的所有標(biāo)準(zhǔn)組件,如按鈕、文本框、狀態(tài)欄、分割條等。* 容器:可以包裝其他控件的控件,如Panel、TabControl等。* 菜單和工具欄:用來(lái)設(shè)計(jì)窗體布局的一些復(fù)雜控件,可實(shí)現(xiàn)Windows窗體中的菜單和工具條。* 數(shù)據(jù):包括數(shù)據(jù)顯示控件和數(shù)據(jù)源配置控件。* 組件:最復(fù)雜的一種控件,包括事件日志管理、進(jìn)程管理和目錄管理等。* 打?。禾峁┒鄠€(gè)實(shí)現(xiàn)打印功能常見(jiàn)的對(duì)話框,如打印對(duì)話框、打印預(yù)覽對(duì)話框等。* 對(duì)話框:是Windows中常見(jiàn)到的一些對(duì)話框,如顏色選擇對(duì)話框、文件打開(kāi)和保存對(duì)話框等。* 報(bào)表:提供了水晶報(bào)表的一些控件。%提示:在代碼視圖中,工具箱中的組件為不可用狀態(tài)。1.2.5 屬性窗口屬性窗口可用來(lái)顯示項(xiàng)目、窗體、控件、數(shù)據(jù)源等所有可視資源的屬性。如果要查看某個(gè)按鈕的名字和字體等,可通過(guò)打開(kāi)屬性窗口來(lái)設(shè)置。按下快捷鍵F4就可以打開(kāi)屬性窗口,其效果如圖1.6所示。在圖1.6選中的區(qū)域中,有一個(gè)按鈕,用來(lái)設(shè)置控件的事件。如果要查看的資源屬性不包括事件,則不會(huì)顯示此按鈕。如果要顯示項(xiàng)目的屬性,可先選中項(xiàng)目,然后按下F4鍵,則自動(dòng)打開(kāi)項(xiàng)目的屬性,可以在此處設(shè)置項(xiàng)目的調(diào)試方式和保存位置等。1.2.6 解決方案資源管理器解決方案資源管理器就類(lèi)似于Windows操作系統(tǒng)的資源管理器??梢栽诖舜翱谙虏榭串?dāng)前項(xiàng)目所包含的所有資源,如文件夾、類(lèi)文件和數(shù)據(jù)文件等,如圖1.7所示。 圖1.6 屬性窗口 圖1.7 解決方案資源管理器圖1.7所示是一個(gè)標(biāo)準(zhǔn)的Windows應(yīng)用程序文檔,其中默認(rèn)生成一個(gè)“Form1.cs”文件。這是一個(gè)窗體文件,包括兩部分:設(shè)計(jì)和源代碼。還有一個(gè)類(lèi)文件“Program.cs”,用來(lái)設(shè)計(jì)當(dāng)前程序的入口?!耙谩蔽募A下包含當(dāng)前程序引用的其他程序集的內(nèi)容。如果要引用網(wǎng)絡(luò)上下載的一些組件,則可以右擊此文件夾,在彈出的快捷菜單中選擇“添加引用”命令來(lái)添加這些組件。解決方案資源管理器在系統(tǒng)中被保存為一個(gè)完整的文檔,默認(rèn)擴(kuò)展名為.sln。該解決方案下可以包含多種項(xiàng)目,既可以包含Windows項(xiàng)目,也可以包含Web項(xiàng)目,還可以在Web項(xiàng)目中引用Windows項(xiàng)目。%提示:對(duì)于一個(gè)比較龐大的項(xiàng)目,首先設(shè)計(jì)好整體解決方案,然后依次添加各個(gè)項(xiàng)目。1.2.7 服務(wù)器資源管理器服務(wù)器資源管理器以前并不常用,但在VS 2008中,其功能被徹底地挖掘出來(lái)。因?yàn)閂S 2008提供了LINQ to SQL類(lèi),此類(lèi)必須依靠數(shù)據(jù)源才可以生成數(shù)據(jù)庫(kù)表的映射類(lèi),而數(shù)據(jù)源的管理就在服務(wù)器資源管理器中。選擇“視圖”︱“服務(wù)器資源管理器”命令,打開(kāi)服務(wù)器資源管理器,如圖1.8所示。從圖1.8中可以看出,VS 2008主要提供兩種資源:服務(wù)器和數(shù)據(jù)連接。服務(wù)器用來(lái)連接當(dāng)前可以連接到的所有機(jī)器,而數(shù)據(jù)連接可以連接SQL Server 數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)表。默認(rèn)生成的數(shù)據(jù)連接名稱(chēng)為“機(jī)器名+數(shù)據(jù)庫(kù)名”。%提示:可通過(guò)右擊圖1.8中的“數(shù)據(jù)連接”選項(xiàng),實(shí)現(xiàn)新數(shù)據(jù)連接的添加。1.3 創(chuàng)建C#應(yīng)用程序本章開(kāi)始進(jìn)入開(kāi)發(fā)的初始階段,了解了VS 2008的界面和功能后,通過(guò)創(chuàng)建一個(gè)簡(jiǎn)單的程序,來(lái)學(xué)習(xí)如何在VS 2008中開(kāi)發(fā)真正的項(xiàng)目。因?yàn)閂S 2008提供開(kāi)發(fā)不同項(xiàng)目的模板,所以本節(jié)特別提供了3種常見(jiàn)的應(yīng)用程序類(lèi)型:控制臺(tái)應(yīng)用程序、Windows應(yīng)用程序和Web應(yīng)用程序。1.3.1 控制臺(tái)應(yīng)用程序(Console)控制臺(tái)應(yīng)用程序是沒(méi)有界面的程序,運(yùn)行效果在DOS窗口中,一般用來(lái)執(zhí)行后臺(tái)代碼。選擇“文件”︱“新建”︱“項(xiàng)目”命令,打開(kāi)“新建項(xiàng)目”對(duì)話框。選擇模板中的“控制臺(tái)應(yīng)用程序”選項(xiàng),單擊“確定”按鈕,就創(chuàng)建了一個(gè)簡(jiǎn)單的控制臺(tái)應(yīng)用程序,如圖1.9所示。主要包括代碼輸入?yún)^(qū)、解決方案資源管理器和項(xiàng)目屬性3個(gè)部分。從解決方案資源管理器中可以看出,控制臺(tái)應(yīng)用程序只有一個(gè)文件Program.cs。此文件包含一個(gè)類(lèi)Program,并且此類(lèi)中包含一個(gè)默認(rèn)的方法Main。此方法是所有應(yīng)用程序的入口處,一定要注意此方法為靜態(tài)屬性static。在此方法內(nèi)輸入如下代碼,用來(lái)輸出一段很簡(jiǎn)單的字符串“中國(guó)歡迎你”。注意結(jié)束語(yǔ)句用分號(hào)。static void Main(string[] args) { Console.WriteLine("中國(guó)歡迎你"); }按下Ctrl+F5組合鍵運(yùn)行程序,則會(huì)彈出一個(gè)DOS窗口,并輸出字符串“中國(guó)歡迎你”,如圖1.10所示。 圖1.9 控制臺(tái)應(yīng)用程序開(kāi)發(fā)界面 圖1.10 控制臺(tái)應(yīng)用程序輸出%提示:按下Ctrl+F5鍵是運(yùn)行程序時(shí)不進(jìn)行調(diào)試,而按下F5鍵則是啟動(dòng)程序進(jìn)行調(diào)試。如果按下F5鍵可能看不到這個(gè)運(yùn)行的DOS窗口。1.3.2 Windows 應(yīng)用程序(Forms)Windows 應(yīng)用程序是常見(jiàn)的C/S程序,也就是服務(wù)器上安裝主程序,然后在各個(gè)客戶端機(jī)器上安裝子程序,調(diào)用主程序的內(nèi)容。一般會(huì)在各個(gè)客戶端機(jī)器上安裝開(kāi)啟主程序的服務(wù)。這個(gè)一般用于內(nèi)部網(wǎng)絡(luò),忽略網(wǎng)速的影響。在VS 2008中創(chuàng)建Windows 應(yīng)用程序的步驟如下所示。(1)選擇“新建”|“文件”|“項(xiàng)目”命令,打開(kāi)“新建項(xiàng)目”對(duì)話框。選擇“Windows應(yīng)用程序”選項(xiàng),單擊“確定”按鈕。前面已經(jīng)介紹過(guò)新建項(xiàng)目的界面,本處不再給出 圖示。(2)打開(kāi)Form1.cs文件,自動(dòng)打開(kāi)的是其設(shè)計(jì)界面。按下F7鍵就可以進(jìn)入窗體的代碼視圖。(3)在代碼視圖中,默認(rèn)生成的代碼如下所示。其中,using用來(lái)引用本例需要的一些底層類(lèi)庫(kù),而namespace是本項(xiàng)目所在的命名空間。本窗體的名字是Form1,其實(shí)也是一個(gè)類(lèi)。using System;using System.Windows.Forms;//省略部分引用…………………………………………………namespace WindowsFormsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } }}(4)Form1_Load是在加載窗體后觸發(fā)的事件,本例要輸出的內(nèi)容就寫(xiě)在此事件中。在此處輸入如下代碼,其中,MessageBox是System.Windows.Forms的一個(gè)類(lèi),用來(lái)彈出一個(gè)對(duì)話框。而Show是此類(lèi)的一個(gè)方法。MessageBox.Show("中國(guó)歡迎你");(5)按下F5鍵運(yùn)行此項(xiàng)目,結(jié)果如圖1.11所示。圖1.11 Windows應(yīng)用程序輸出%注意:運(yùn)行程序后彈出的對(duì)話框一定會(huì)在窗體之前顯示,因?yàn)樵谳敵稣Z(yǔ)句“MessageBox.Show”時(shí),加載窗體的事件還沒(méi)有完成。1.3.3 ASP.NET 3.5網(wǎng)站ASP.NET 3.5網(wǎng)站就是常說(shuō)的Web程序,也是B/S結(jié)構(gòu)的一種程序,其將主程序布置在服務(wù)器上。而客戶端機(jī)器只要有瀏覽器就可以了,不需要安裝和設(shè)計(jì)任何單獨(dú)的程序。ASP.NET程序的版本一般隨著.NET 框架的版本變化而變化。例如,在.NET 2.0下,通常稱(chēng)為ASP.NET 2.0應(yīng)用程序;而在.NET 3.5版本下,則通常稱(chēng)為ASP.NET 3.5應(yīng)用程序。本例要?jiǎng)?chuàng)建一個(gè)輸出“中國(guó)歡迎你”的Web頁(yè)面,實(shí)現(xiàn)步驟如下所示。(1)選擇“文件”|“新建”|“網(wǎng)站”命令,打開(kāi)“新建網(wǎng)站”對(duì)話框,如圖1.12 所示。(2)在模板區(qū)選擇“ASP.NET網(wǎng)站”選項(xiàng),其他使用默認(rèn)設(shè)置。然后單擊“確定”按鈕,打開(kāi)Web程序的開(kāi)發(fā)界面,如圖1.13所示。 圖1.12 “新建網(wǎng)站”對(duì)話框 圖1.13 Web程序的開(kāi)發(fā)界面(3)默認(rèn)生成一個(gè)Default.aspx文件,這是一個(gè)默認(rèn)頁(yè)面,其后臺(tái)代碼保存在Default.aspx.cs中。項(xiàng)目中還生成一個(gè)web.config文件,用來(lái)配置網(wǎng)站的一些安全和個(gè)性化設(shè)置,如是否啟用角色管理、是否使用Cookie等。%注意:Default.aspx保存前臺(tái)代碼,而Default.aspx.cs保存后臺(tái)代碼。(4)打開(kāi)Default.aspx.cs后臺(tái)類(lèi)文件,其默認(rèn)代碼如下所示。其中,關(guān)鍵字partial表示此處的類(lèi)“_Default”,僅僅是該類(lèi)的一部分,還有一部分用來(lái)表示界面的內(nèi)容,并不在此處顯示。using System;using System.Web.UI;//省略部分引用……………………public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { }}(5)Page_Load是頁(yè)面加載時(shí)觸發(fā)的事件,在此處輸入下面的代碼,用來(lái)在頁(yè)面中輸出字符串。Response.Write("中國(guó)歡迎你");(6)按下F5鍵運(yùn)行程序,效果如圖1.14所示??梢钥吹竭\(yùn)行效果顯示在IE瀏覽 器中。圖1.14 ASP.NET 3.5應(yīng)用程序輸出1.4 小 結(jié)本章首先介紹了.NET框架的組成和原理,然后從全局方面了解VS 2008的功能。介紹了VS 2008的界面、菜單欄、工具欄、窗口和工具箱等,最后學(xué)習(xí)如何使用VS 2008提供的幫助功能。這有利于初學(xué)者快速了解.NET的一些類(lèi)庫(kù),因?yàn)檫@些幫助文檔提供了中文的幫助說(shuō)明和應(yīng)用案例。本章最后通過(guò)3個(gè)簡(jiǎn)單的案例,從不同應(yīng)用程序的角度學(xué)習(xí)了如何真正地使用VS 2008進(jìn)行項(xiàng)目開(kāi)發(fā)。
編輯推薦
超值光盤(pán)內(nèi)容: 隨書(shū)附贈(zèng)微軟Visual Studio 2008學(xué)習(xí)版安裝光盤(pán) 6小時(shí)多媒體視頻講解 資深.NET程序員,全新視角,解讀.NET3.5框架的最新技術(shù)趨勢(shì) 深入剖析.NET3.5框架的四大開(kāi)發(fā)技術(shù)及.NET3.5框架的底層機(jī)制
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
精通C# 3.0與.NET 3.5高級(jí)編程 PDF格式下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版