跳轉到內容

.NET 開發基礎/簡介

來自 Wikibooks,開放世界中的開放書籍


簡介


模組目標

[編輯 | 編輯原始碼]

本學習指南**不**旨在替代其他為準備透過 70-536 考試而提供的資源

  • 我們提供指向 MSDN 庫的連結,但我們並不試圖取代它。透過考試的人員經常指出,培訓套件沒有涵蓋考試的各個方面,並且查閱 MSDN 文件是一個很大的優勢。
  • 我們在適用情況下提供指向維基百科和其他維基媒體專案的連結。這不是一系列理論或百科全書文章,而是一份關於如何在 .NET 框架中實現這些概念以及如何使用它們的指南。
  • 我們不提供測試軟體
  • 我們不假裝本模組可以替代微軟推薦的培訓套件或任何其他推薦材料。

但是,即使在本文件極其不完整的狀態下,我們**提供的**內容包括

  • 微軟規定的考試目標的詳盡列表
  • 所有考試目標到相應 MSDN 庫文章的連結。
  • 越來越多的主題的“類似教科書”的解釋,以及相關外部資源的連結。
  • 最重要的是,一個可以在考試前記錄重要筆記和程式碼示例以供複習,以及在考試後作為專業工作參考的地方。在共享和受控的環境中,沒有哪個培訓套件或庫能做到這一點。

像這樣一本書最困難的部分是保持平衡,既要包含足夠的內容來涵蓋和解釋考試的每個目標,又要避免內容過多,因為閱讀和學習時間應控制在可管理的範圍內。此外,沒有理由在此處涵蓋與考試目標無關的內容。

最後,作為維基媒體家族(維基百科等)的一部分,Wikibooks 專案對版權和整體質量有非常高的道德標準。如果您發現任何方面有任何“錯誤”,請隨時更正。

模組結構

[編輯 | 編輯原始碼]

本模組圍繞微軟為 70-536 考試設定的目標構建。第 3 章到第 9 章分別代表考試的 7 個主要目標類別。

堅持考試“官方”目標背後的理念是,我們假設認證提供商(微軟)在某種程度上對產品(.NET)有所瞭解,並且能夠說明需要了解哪些重要內容。

對於每一章

  • 第一部分涵蓋本章中討論的主要概念(主題)。此“主題”部分使我們能夠在某種程度上將“是什麼”與“如何做”分開。請注意,考試重點關注庫和工具的使用,僅瞭解概念對於備考來說是遠遠不夠的。
  • 第二部分詳細介紹該目標類別的第二、第三和第四級考試目標(操作方法、詳細用法以及對 MSDN 庫的參考)。

最終,我們希望有

  • 每一章的“複習題”部分,我們可以在其中討論考試中可能出現的題型。
  • 一個“高階”部分,我們可以在其中放置更高階的材料,並將基本部分的文字流程保持在與考試所需的知識水平相對應的水平。

截至 2007 年 12 月 7 日

  • 24 個主題在單獨的頁面上進行了詳細說明(主題標題是連結)。大多數主題最終將被整合到主頁面中,以更好地組織文字流程。
  • 所有主題都直接連結到 Microsoft 軟體開發人員網路 (MSDN) 庫,大約 480 個直接來自主頁面(標題後面的“MSDN”是連結),其他主題則來自各自的子頁面。
  • 我們剛剛開始將“主題”部分連結到維基百科文章,讓您瞭解這些概念在微軟世界之外是如何定義和處理的。

有些部分相對高階,其他部分則等待您的貢獻。並非所有高階部分都位於模組的開頭。

.NET 框架

[編輯 | 編輯原始碼]

在包含考試 70-536“Microsoft .NET Framework 2.0 應用程式開發基礎”的認證路徑中,它代表了認證流程的第一步。因此,自然地,本第一個學習指南將從對整個框架的簡短討論開始。

MSDN .NET 主頁 上的定義是:“.NET Framework 是微軟用於在 Windows 客戶端、伺服器以及移動或嵌入式裝置上構建應用程式的託管程式碼程式設計模型。開發人員使用 .NET 構建各種型別的應用程式:Web 應用程式、伺服器應用程式、智慧客戶端應用程式、控制檯應用程式、資料庫應用程式等等”。

維基百科的定義是:“Microsoft .NET Framework 是包含在 Microsoft Windows 作業系統中的一個軟體元件。它為常見的軟體開發需求提供大量預編碼的解決方案,並管理為框架專門編寫的程式的執行。.NET Framework 旨在用於為 Windows 平臺建立的大多數新應用程式”。

微軟定義的問題在於它提到了“託管程式碼程式設計模型”,這仍然是微軟的術語。它最好的定義是:“託管程式碼是指其執行由 .NET Framework 公共語言執行時管理的程式碼”(參見 Brad Adams 在 MSDN 上的部落格)。

維基百科的定義指出了從開發人員角度來看的兩個更重要的方面

  • 存在一組**龐大**的類庫,可以完成所有常見的程式設計任務。除了這些類庫的龐大規模外,它們還在快速發展。
  • 執行環境特定於框架這一事實。“虛擬機器”一詞常用於描述此類環境。

這兩個主要特徵與 Java 環境的特徵相似,Java 環境是 .NET 框架的主要競爭對手。本模組試圖幫助您學習 .NET 框架。它不會涉及 .NET 與 Java 的比較和討論。

框架結構

[編輯 | 編輯原始碼]
公共語言基礎結構 (CLI) 的視覺化概述

右側的圖片取自維基百科關於 .NET 框架的文章(見上文)。

它描述了用 .NET 相容語言編寫的程式從原始碼到執行的過程。與更傳統的程式語言(例如 C++)相比,重要的區別在於程式編譯了兩次。第一次編譯是從原始語言到“通用中間語言”(CIL)。這實際上是進入程式集的內容。

第二次編譯是從 CIL 到機器碼。此編譯通常由“即時”(JIT)編譯器自動執行。也可以使用 Native Image Generator (ngen) 實用程式提前建立機器碼。

此架構對本書的主題有許多直接影響。其中包括

  • 第二次編譯的“原始碼”(CIL 程式碼)始終在執行時可供虛擬機器使用。這意味著此程式碼可以在執行時輕鬆地進行分析,這與傳統的編譯環境相反。此特性是平臺反射功能的基礎。我們不僅可以分析“中間原始碼”,還可以實際在執行時建立(發出)其中的一些程式碼,然後進行“即時”編譯和執行。
  • 執行是在 CLR 的上下文中完成的(這就是“託管”程式碼的概念)。換句話說,我們可以說執行時始終“知道”它傳送什麼內容進行執行,這與程式碼直接由作業系統執行的傳統環境相反。這意味著您可以告訴執行時執行或不執行此類或那種型別的程式碼。這是程式碼訪問安全性的基礎。
  • 大多數 .NET 語言(C#、VB 等)的功能都與中間語言的功能直接相關。換句話說,大多數情況下,第一次編譯非常簡單。但是,某些結構在 CIL 中沒有直接等效項(例如,C# 中的屬性對映到 CIL 中的類方法)。

我們可以繼續討論很長時間。我們在這裡想要說明的是,即使平臺本身沒有直接被列為考試目標,開發人員也可以從對其進行詳細瞭解中獲益匪淺。

如果您想在 Microsoft 文件中閱讀有關框架的資訊,可以檢視 MSDN

最後我們要指出的是,公共語言執行時 (CLR) 可以執行在不同的上下文中

  • ASP.NET 用於 Web 應用程式,它直接連結到 Internet Information Server (IIS)。
  • Internet Explorer 用於客戶端 Web 控制元件
  • 在獨立主機中用於控制檯、服務和 Windows 應用程式。

預設情況下,本書中的示例將使用獨立的可執行檔案。這僅僅是因為對於非常簡單的程式,它們更容易部署。這並不意味著 Windows 應用程式優於 Web 應用程式。

本書的適用範圍

[編輯 | 編輯原始碼]
.NET 框架棧

右側的圖片也來自維基百科,它以簡化但清晰的方式展示了框架的功能元件。

本書(以及相關的考試)涉及“基類庫”元件以及程式與“公共語言執行時”元件的基本關係。

本書不涵蓋 ASP.NET、ADO.NET、WF 或任何其他更專業的元件。

我們可以說,我們廣泛涵蓋了基礎知識,但對框架本身的介紹較為淺顯。

與公共語言執行時的關係包括以下內容:

  • 部署
  • 安全
  • 配置
  • 反射
  • 服務
  • 與 WMI 的關係
  • 互操作性
  • 等等。

基類庫包括:

  • 型別
  • 集合
  • 泛型
  • 文字處理
  • 基本繪圖
  • 基本全球化
  • 序列化
  • 基本輸入/輸出
  • 多執行緒
  • 等等。

總而言之,這些都是比較“枯燥”的主題。這種從廣泛涵蓋基礎知識開始的想法對於初學者來說肯定不是最有趣的學習模式。因此,我們建議真正的初學者從更合適的資料開始學習。

關於框架“棧”的最後一點說明是,新版本傾向於新增新的元件而不是“重做”現有的元件。這意味著大多數“2.0”的基礎知識在“3.5”中仍然有效。然而,一些“基本”功能在新版本中得到了增強或更改。我們將盡可能在側邊欄中跟蹤這些變化。

程式設計正規化

[編輯 | 編輯原始碼]

為了簡單起見(可能過於簡單了),我們可以說程式設計正規化是一種程式設計“風格”,一種對問題進行建模並將解決方案“翻譯”成程式碼的特定方式。

從開發人員的角度來看,.NET 框架(及其類庫)是一個通用的面向物件平臺,它不斷擴充套件以支援其他程式設計正規化(使用泛型進行泛型程式設計,使用特性進行面向方面程式設計,使用 WF 進行響應式程式設計,使用 C# 3.0 中的 Lambda 表示式進行函數語言程式設計,等等)。這種“擴充套件過程”與 Java 的類似。.NET 和 Java 平臺是目前唯一兩個支援如此廣泛的多正規化擴充套件過程的平臺。

討論每種正規化實現的範圍和“理論合理性”顯然超出了本書的範圍。

我們在這裡要說明的是,在同一個平臺上瀏覽所有這些程式設計風格可能會讓人感到困惑。維護程式碼也變得越來越困難,因為兩位最初的程式設計師可能使用截然不同的“風格”或結構來解決同一個問題。

因此,我們將盡可能將不同的 .NET 概念與其相應的“風格”聯絡起來,以便為讀者提供一些背景資訊。

程式集

[編輯 | 編輯原始碼]

根據 MSDN 的說法,程式集是:“.NET Framework 應用程式的構建塊;它們構成了部署、版本控制、重用、啟用範圍和安全許可權的基本單元”。

.NET Framework 現在是 Microsoft 在 Windows 平臺上開發應用程式的首選方式。在這方面,它取代了元件物件模型 (COM)。這一點很重要,因為儘管存在一些部署和管理問題(還記得 DLL 地獄嗎?),但 COM 在基於元件的計算(重用整個可執行元件,而不僅僅是程式程式碼)的發展中發揮了重要作用。人們投入了大量精力將 COM 的基於元件的概念轉移到 .NET 框架中,本書的很大一部分內容都涉及這些方面(安全、安裝、版本控制等)。

程式集是 COM 元件的繼任者。


Clipboard

待辦事項
此處將列出程式集主要特性的簡短列表



上一頁 / 下一頁

[編輯 | 編輯原始碼]
華夏公益教科書