日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

(读书笔记).NET大局观-.NET框架类库概观

發(fā)布時間:2024/4/17 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (读书笔记).NET大局观-.NET框架类库概观 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

.NET框架類庫概況

?

構(gòu)建在.NET框架上所有的軟件,都會用到通用語言進(jìn)行時,即使基于最簡單的CLR程序,也需要用到一部分.NET框架類庫,更精致復(fù)雜的軟件則使用這個類庫提供的更多服務(wù)。

?

.NET框架類庫被組織一套具有層次結(jié)構(gòu)的命名空間,每個命名空間可以包含類型如類和接口,以及其他次級命名空間,整個體系的根名為System

?

System命名空間

System命名空間是.NET框架類庫的最終源頭,它除了包含一大套次級命名空間以外,本身也包含很多不同類型,其中最有意思的就是下面這些:

?

CLR通用類型系統(tǒng):定義所有的核心類型

Console

Math 這個類提供兩打以上的方法用來進(jìn)行各種數(shù)學(xué)計算

Environment 用于訪問“當(dāng)前運行之程序”的環(huán)境信息

GC 用來影響垃圾回收機(jī)制何時發(fā)生以及如何發(fā)生

?

?

System次級命名空間概覽

(這一部分借鑒到http://hi.baidu.com/wqk1025/item/2dccf183f2700cc498255fff文章中的一部分)

命名空間 描述

Microsoft.CSharp??????????支持C#語言編譯和生成代碼

System?????????????????????????包含了基礎(chǔ)類,用于定義類型/數(shù)組/字符串/事件/事件處理程序/異常處理/接口/數(shù)據(jù)類型轉(zhuǎn)換/數(shù)學(xué)計算/應(yīng)用程序環(huán)境管理等等.

System.Coolections?? 包含了一組用于管理對象集合(例如列表/隊列/數(shù)組/哈希表/字典等)的類

System.Data ???主要包括了組成ADO.NET體系結(jié)構(gòu)的類

System.diagnostics ??? 提供用于調(diào)試/跟蹤,以及與系統(tǒng)進(jìn)程/事件日志/性能計數(shù)器進(jìn)行交互的類

System.Drawing 提供訪問GDI+基本圖形功能(在System.Drawing以下的命名空間,包括System.Drawing.Drawing2D和System.Drawing.Text等,提供了更高級和更特殊的GDI+圖形功能)的類

System.IO??? 包含了用于讀寫數(shù)據(jù)流/文件和普通輸入/輸出(I/O)功能的類型和類

System.Reflection ?? 包括提供類型檢測和動態(tài)綁定對象功能的類和接口

System.reflection.Emit?????生成動態(tài)程序集

System.Text ??? 包含用于字符編碼/將字符塊轉(zhuǎn)換為字節(jié)快/將字節(jié)塊轉(zhuǎn)換為字符塊等功能的對象

System.Text.RegularExpressions???? 包含了提供訪問.NET框架正則表達(dá)引擎的類

System.Timer??????????????????提供了Timer組件

System.Web??? 包含了用于實施瀏覽器/服務(wù)器通信和其他Web相關(guān)功能的類

System.Web.Services??? 包含了用于創(chuàng)建和消費Web服務(wù)的類

System.Web.UI ?? 包含了用于創(chuàng)建Web頁和控件的用戶接口的類和接口

System.Windows.Forms??? 包含了用于創(chuàng)建基于WINDOWS的用戶接口的類

System.XML?? 提供了支持處理XML的類

?

System.Runtime.Remoting是另一非常重要命名空間,因為它包含你的類型允許訪問其他進(jìn)程記憶其他機(jī)器上的托管對象

?

?

?

類庫可以分為幾大類:

基礎(chǔ)服務(wù)

用于創(chuàng)建于人們交互的web應(yīng)用程序的服務(wù)

用于處理數(shù)據(jù)的服務(wù)

用以創(chuàng)建分布式程序的服務(wù)

?

?

基礎(chǔ)命名空間

接下來要描述的是.NET技術(shù)的基本知識——輸入和輸出,序列化,反射,事務(wù),以及互操作性——應(yīng)該納入每一個.NET程序員開發(fā)人員的武器庫

?

輸入和輸出 System.IO

這類最重要的基礎(chǔ)是stream類,該類定義了stream的有用的抽象,它是個字節(jié)序列以及如下的一些方法:stream的讀取和涂寫,stream是一個抽象類,因此有許多特定stream類繼承于它,目標(biāo)是為開發(fā)人員提供一致的方法訪問各種各樣的信息。

?

序列化System.Runtime.Serilization

對象通常都有對象(state),例如一個類的某個實體可以有一個或者多個字段,每一個都包含某個值,從一個對象中抽取這種狀態(tài),無論是將它存儲于某地,或者是通過網(wǎng)絡(luò)傳送它,通常都是有意義的,這種抽取的動作稱為”講一個對象序列化”,而反向的處理,從一個被序列化的狀態(tài)重建一個對象,即使人們廣為人知的反序列化,有點混淆的是:序列化這一術(shù)語通常同時指定的是做這兩件事的能力

?

?

.NET框架提供兩套不同的格式器,一個是二進(jìn)制(binaryformatter)實現(xiàn)于命名空間System.Runtime.Serialization.Formatters.Binary的BinaryFormatter class中,將一個對象序列化為一個“直截了當(dāng),形式精簡,解釋(parse)快速”的二進(jìn)制格式。

二進(jìn)制格式器以一個簡單而精煉的形式吐出狀態(tài)信息

?

另一個格式器SOAP,實現(xiàn)于命名空間System.Runtime.Serialization.Formatters.Soap中的Soap Formatter類中,將一個對象序列化為一個SOAP消息

SOAP格式生成同樣的信息并包裝秤XML格式,而后格式化成為一個SOAP消息

?

?

當(dāng)各時期將某個對象序列化以后,所得結(jié)果放入一個流中,所謂流就是字節(jié)序列的一個抽象概念,因此可包容任何序列化格式,一旦對象唄存儲于一個流中,對象狀態(tài)就可以被存儲于磁盤上(或者被持久化了),或是通過網(wǎng)絡(luò)發(fā)送給其他計算機(jī)

?

對于一個可以被序列化的類型,其設(shè)計這必須為其標(biāo)上Serializable特性

一個被標(biāo)注以Serializable的類型,當(dāng)其某個實例被序列化時,可以指明某些字段不被保存-只要為他們設(shè)置NonSerializable特性即可

?

反射 System.Reflection

每一個程序集都包含元數(shù)據(jù),手上總有著元數(shù)據(jù)是很便利的,因為它允許哦我們創(chuàng)建有意義的功能,例如visual studio中的智能感知技術(shù)

反射(Reflection)是.NET中的重要機(jī)制,通過放射,可以在運行時獲得.NET中每一個類型(包括類、結(jié)構(gòu)、委托、接口和枚舉等)的成員,包括方法、屬性、事件,以及構(gòu)造函數(shù)等。還可以獲得每個成員的名稱、限定符和參數(shù)等。有了反射,即可對每一個類型了如指掌。如果獲得了構(gòu)造函數(shù)的信息,即可直接創(chuàng)建對象,即使這個對象的類型在編譯時還不知道。

程序代碼在編譯后生成可執(zhí)行的應(yīng)用,我們首先要了解這種可執(zhí)行應(yīng)用程序的結(jié)構(gòu)。

?應(yīng)用程序結(jié)構(gòu)分為應(yīng)用程序域—程序集—模塊—類型—成員幾個層次,公共語言運行庫加載器管理應(yīng)用程序域,這種管理包括將每個程序集加載到相應(yīng)的應(yīng)用程序域以及控制每個程序集中類型層次結(jié)構(gòu)的內(nèi)存布局。

?程序集包含模塊,而模塊包含類型,類型又包含成員,反射則提供了封裝程序集、模塊和類型的對象。我們可以使用反射動態(tài)地創(chuàng)建類型的實例,將類型綁定到現(xiàn)有對象或從現(xiàn)有對象中獲取類型,然后調(diào)用類型的方法或訪問其字段和屬性。反射通常具有以下用途。

?(1)使用Assembly定義和加載程序集,加載在程序集清單中列出模塊,以及從此程序集中查找類型并創(chuàng)建該類型的實例。
?(2)使用Module了解包含模塊的程序集以及模塊中的類等,還可以獲取在模塊上定義的所有全局方法或其他特定的非全局方法。
?(3)使用ConstructorInfo了解構(gòu)造函數(shù)的名稱、參數(shù)、訪問修飾符(如pulic 或private)和實現(xiàn)詳細(xì)信息(如abstract或virtual)等。使用Type的GetConstructors或GetConstructor方法來調(diào)用特定的構(gòu)造函數(shù)。
?(4)使用MethodInfo了解方法的名稱、返回類型、參數(shù)、訪問修飾符(如pulic 或private)和實現(xiàn)詳細(xì)信息(如abstract或virtual)等。使用Type的GetMethods或GetMethod方法來調(diào)用特定的方法。
?(5)使用FiedInfo了解字段的名稱、訪問修飾符(如public或private)和實現(xiàn)詳細(xì)信息(如static)等,并獲取或設(shè)置字段值。
?(6)使用EventInfo了解事件的名稱、事件處理程序數(shù)據(jù)類型、自定義屬性、聲明類型和反射類型等,添加或移除事件處理程序。
?(7)使用PropertyInfo了解屬性的名稱、數(shù)據(jù)類型、聲明類型、反射類型和只讀或可寫狀態(tài)等,獲取或設(shè)置屬性值。
?(8)使用ParameterInfo了解參數(shù)的名稱、數(shù)據(jù)類型、是輸入?yún)?shù)還是輸出參數(shù),以及參數(shù)在方法簽名中的位置等。

?System.Reflection.Emit命名空間的類提供了一種特殊形式的反射,可以在運行時構(gòu)造類型。
?反射也可用于創(chuàng)建稱為類型瀏覽器的應(yīng)用程序,使用戶能夠選擇類型,然后查看有關(guān)選定類型的信息。

?

XMLSystem.Xml

XML是eXtensible MarkupLanguage的縮寫

?? 擴(kuò)展標(biāo)記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立,雖然XML占用的空間比二進(jìn)制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。?
???XML與Access,Oracle和SQL Server等數(shù)據(jù)庫不同。數(shù)據(jù)庫提供了更強有力的數(shù)據(jù)存儲和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關(guān)一致性等,XML僅僅是展示數(shù)據(jù)。事實上XML與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:它極其簡單。這是一個看上去有點瑣細(xì)的優(yōu)點,但正是這點使XML與眾不同。

事務(wù) System.Transaction

事務(wù)的思想,即一組操作作為一耳光單元成功或失敗,是眾多應(yīng)用程序的基礎(chǔ),這個概念本來很簡單,所有操作必須成功,要么全部失敗

?

?

一、事務(wù)的定義

所謂事務(wù),它是一個操作集合,這些操作要么都執(zhí)行,要么都不執(zhí)行,它是一個不可分割的工作單位。典型的例子就像從網(wǎng)上銀行系統(tǒng)的帳戶A轉(zhuǎn)帳到帳 戶B,它經(jīng)過兩個階段:1. 從帳戶A取出款項。2. 把款項放入帳戶B中。這兩個過程要么同時成功,要么同時失敗,這一系列的操作就被稱為事務(wù)性(Transactional)操作。

在一個事務(wù)性操作的環(huán)境下,操作有著以下的4種特性,被稱為ACID特性

原子性(Atomicity)

當(dāng)事務(wù)結(jié)束,它對所有資源狀態(tài)的改變都被視為一個操作,這些操作要不同時成功,要不同時失敗。

一致性(Consistency)

操作完成后,所有數(shù)據(jù)必須符合業(yè)務(wù)規(guī)則,否則事務(wù)必須中止。

隔離性(Isolation)

事務(wù)以相互隔離的方式執(zhí)行,事務(wù)以外的實體無法知道事務(wù)過程中的中間狀態(tài)。

持久性(Durable)

事務(wù)提交后,數(shù)據(jù)必須以一種持久性方式存儲起來。

? 二、事務(wù)管理器

在軟件系統(tǒng)當(dāng)中可以看到無論在數(shù)據(jù)庫、Web服務(wù)、WCF、文件系統(tǒng)都存在著數(shù)據(jù)參與到事務(wù)運作當(dāng)中,我們把管理這些數(shù)據(jù)的工具稱為資源管理器RM(Resources Manager)。而事務(wù)管理器TM(Transaction Manager)就是協(xié)調(diào)多個資源管理器的工作,保證數(shù)據(jù)完整性的工具。

?

由上圖可以看到事務(wù)的管理流程,系統(tǒng)通知事務(wù)管理器TM來啟動事務(wù),事務(wù)管理器TM控制向多個資源管理器RM并協(xié)調(diào)RM之間的事務(wù)操作。圖中存在兩個持久化RM,分別管理數(shù)據(jù)庫和文件系統(tǒng),這些事務(wù)操作要不同時成功,要不同時失敗。

事務(wù)管理器一般分為三類:輕量級事務(wù)管理器(LTM)、核心事務(wù)管理器(KTM)、分布式事務(wù)協(xié)調(diào)器(DTC)。

1. 輕量級事務(wù)管理器 (LTM)

它是包括在 System.Transactions 命名空間內(nèi)的一個事務(wù)管理框架,它只能管理單個應(yīng)用程序域內(nèi)的事務(wù)。LTM 可以管理多個易變的RM,但只能管理一個持久化RM。若事務(wù)試圖加入第二個持久化RM,那輕量級事務(wù)管理器LTM將提升級別。LTM是性能最高的事務(wù)管理 器,在可選擇的情況下應(yīng)該盡可能地使用 LTM 事務(wù)管理器。

這里易變RM是指它參與會引發(fā) “未確定狀態(tài)” 的2PC事務(wù)的時候,不需要恢復(fù)服務(wù),更多時候,易變RM的數(shù)據(jù)只存儲在內(nèi)存當(dāng)中。

而持久化RM是指它參與會引發(fā) “未確定狀態(tài)” 的2PC事務(wù)的時候,它需要恢復(fù)服務(wù),持久化RM管理的數(shù)據(jù)是在于硬盤當(dāng)中。所以,參與2PC事務(wù)的的持久RM必須有新舊兩個版本,如果事務(wù)引發(fā) “未確定狀態(tài)” 的時候,那么它就會聯(lián)系持久化RM,恢復(fù)到其中一個版本。

2. 核心事務(wù)管理器 (KTM)

KTM是用于WindowsVista和Windows Server 2008 系統(tǒng)中的輕量級事務(wù)管理器,與LTM相像,它可以管理多個易變的RM,但只能管理一個持久化RM。

3. 分布式事務(wù)協(xié)調(diào)器(DTC)

分布式事務(wù)協(xié)調(diào)器DTC(Distributed Transaction Coordinator)能管理多個持久化RM中的事務(wù),事務(wù)可以跨越應(yīng)用程序域、進(jìn)程、硬件、域等所有的邊界。在Windows Server 2008當(dāng)中,DTC支持OleDB、XA、WS-AtomicTransaction、WSCoordination、WS- BusinessActivity等多個協(xié)議。由于分布式事務(wù)需要在多個參與方之間實現(xiàn)多次通訊,所以是一種巨大的開銷,因此,在可以使用LTM和KTM的時候,應(yīng)該盡量避免使用DTC。在上面圖片中的事務(wù)同時啟動了兩個RM分別處理數(shù)據(jù)庫數(shù)據(jù)與文件數(shù)據(jù),當(dāng)中啟動的就是DTC分布式事務(wù)。

4. 事務(wù)類System.Transactioins.Transaction

Transaction是由Framework 2.0 就開始引入,用于顯示管理事務(wù)的一個類。通過Transaction可以直接管理事務(wù)的中止、釋放,也可以獲取、克隆當(dāng)前的環(huán)境事務(wù)類。

Transaction的公用屬性

其中Transaction.Current 比較常用,它可以指向一個當(dāng)前運行環(huán)境中的事務(wù),如果環(huán)境事務(wù)不存在,系統(tǒng)將返回一個null

Transactiontransaction=Transaction.Current;

屬性

說明

Current

獲取或設(shè)置環(huán)境事務(wù)。

IsolationLevel

獲取事務(wù)的隔離級別。

TransactionInformation

檢索有關(guān)某個事務(wù)的附加信息。

?

?

互操作: System.Runtime.InteropService

在.NET框架發(fā)布以前,windows開發(fā)世界有windows DNA技術(shù)一統(tǒng)天下,無論.NET框架多么成功,先于它的windows DNA技術(shù)并不會馬上消失。

鑒于微軟的庫克已經(jīng)對這些應(yīng)用做了巨大的投資,.NET框架必須提供某種方法,讓新程序能夠連接它們,同樣重要的是。Framework還必須提供一個有效的辦法,讓托管代碼訪問現(xiàn)在非com技術(shù)創(chuàng)建的DLLs,并調(diào)用有底層操作系統(tǒng)提供的本地服務(wù),這額問題的解決方案,由System.Runtime.InteropService命名空間中的類提供。

?
Windows GUI system.windows.from

這個內(nèi)容只要做過winfrom的實例就應(yīng)該比較熟悉

?

WPF(WindowsPresentation Foundation)是微軟推出的基于WindowsVista的用戶界面框架,屬于NET Framework 3.0的一部分。它提供了統(tǒng)一的編程模型、語言和框架,真正做到了分離界面設(shè)計人員與開發(fā)人員的工作;同時它提供了全新的多媒體交互用戶圖形界面。

?

遠(yuǎn)程安裝windowsform應(yīng)用程序:ClickOnce

Windows Form界面和瀏覽器界面哪個更好,答案無疑要視具體點情況而定,瀏覽器允許訪問全世界的web,而且人們都知道怎么用。

Windows Form應(yīng)用程序當(dāng)然值得用戶,它們的響應(yīng)速度更快

?

盡管這樣,今天開發(fā)的大多數(shù).NET應(yīng)用程序都是目標(biāo)與瀏覽器的,一個重要的原因是來自于部署新版本本地windows應(yīng)用程序的挑戰(zhàn),如果運行在客戶端的程序集發(fā)生了任何變化,那么所有客戶系統(tǒng)都必須予以更新,比較而言,部署基于瀏覽器的應(yīng)用程序的新版本,通常只需要更新程序所運行的服務(wù)器即可,如果windows form應(yīng)用程序安裝變得更容易一些,開打人員將少一個構(gòu)建基于瀏覽器的軟件的理由,并使本地windows應(yīng)用程序的優(yōu)點得到最大的發(fā)揮。

?

ClickOnce是.NET Framework 2.0版本中新增的技術(shù),它的存在實在使得windows form也能用程序的部署與升級更容易,ClickOnce應(yīng)用程序可以從一個web網(wǎng)頁,網(wǎng)絡(luò)上某處的共享文件系統(tǒng)以及本地設(shè)備進(jìn)行安裝,一旦安裝好,ClickOnce應(yīng)用程序能夠自動檢測何時發(fā)生了更新,然后只復(fù)制和安裝哪些自身有變化的部分,若有必要,更新或者整個安裝過程也可以回滾

?

轉(zhuǎn)載于:https://www.cnblogs.com/james1207/p/3297252.html

總結(jié)

以上是生活随笔為你收集整理的(读书笔记).NET大局观-.NET框架类库概观的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。