真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

.Net基礎(chǔ)體系和跨框架開發(fā)普及-創(chuàng)新互聯(lián)

.net體系經(jīng)過十幾年發(fā)展,發(fā)生了很多變化。特別是在最近兩年,隨著開源和跨平臺的發(fā)展,衍生出很多概念,像標準庫,可移植庫,.Net Core等,相信有不少同學(xué)對他們之間的關(guān)系是有一些困惑的,這里我從基礎(chǔ)概念,跨框架開發(fā)的注意事項等,對.net的平臺和相關(guān)概念做一個普及分享。此分享是從個人的知識體系中總結(jié),如有不足,歡迎勘誤!

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計,監(jiān)利網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:監(jiān)利等地區(qū)。監(jiān)利做網(wǎng)站價格咨詢:13518219792

一. 基礎(chǔ)概念

.Net 本身是一個通用開發(fā)平臺,我個人的理解主要分位如下兩個層面:1. 語言層面,2. 運行時

首先:在語言層面上

面向 .net 平臺的頂層開發(fā)語言有很多,常見的如:C#,F(xiàn)#和Visual Basic等,.net框架提供了這些語言使用的公共語言運行時,運行時與具體的語言無關(guān),它定義了這些語言的公共規(guī)范,像類型系統(tǒng),文件格式等。

這些高級語言編寫的代碼被稱為托管代碼,這些代碼需要通過編譯器編譯為中間代碼(IL),然后由公共語言運行時(CLR)接管,再經(jīng)過JIT編譯為機器代碼交給cpu運行。

公共語言運行時自動處理對象布局并管理對象引用,當不再使用對象時釋放它們。 按這種方式實現(xiàn)生存期管理的對象稱為托管數(shù)據(jù)。 垃圾回收消除了內(nèi)存泄漏以及其他一些常見的編程錯誤。

其次:運行時層面

當前.net的運行時主要有.Net Framework, Mono for Xamarin和.Net Core 。這些運行時在不同是時期主要是為了解決當時所面臨的問題衍生而出,這里介紹下他們相互的關(guān)聯(lián)和職責。

1. .Net Framework ,這個是自2002年就已存在的.Net運行時,也是現(xiàn)在開發(fā)人員還在經(jīng)常使用的框架。涵蓋了桌面,web等應(yīng)用,同時包含了一些特定于windows的api,不過其只能運行在windows平臺的限制,給對跨系統(tǒng)平臺要求較高的開發(fā)需求造成很大的困難,非常適合用于桌面應(yīng)用的開發(fā)。

2. Mono for Xamarin ,這個是當時為了實現(xiàn).net 的跨系統(tǒng)運行,在2004年非官方組織發(fā)布的一個.Net運行時,當時主要是能夠支持在.net framework下編寫的代碼在linux等系統(tǒng)下運行,當前主要包含適用于 iOS、Android、Xamarin.Forms 和 Xamarin.Mac 的 API。 Mono for Xamarin 非常適合生成 iOS 和 Android 移動應(yīng)用程序。

3. .Net Core 這個是微軟官方發(fā)布的.Net運行時,主要為了打破.net framework的系統(tǒng)限制,實現(xiàn)跨操作系統(tǒng)平臺的開發(fā),在一定程序上正在取代后者,官方定義它是 ASP.NET Core 和通用 Windows 平臺 (UWP) 所使用的運行時。 它新式、高效,專用于處理大規(guī)模的服務(wù)器和云工作負荷。

這三個運行時,.Net 開發(fā)人員一定要有一個清醒的認識,他們之間的關(guān)系見下圖,我們搞清楚運行時之間的關(guān)系之后,就可以繼續(xù)了解三者之間類庫框架的關(guān)系了

.Net基礎(chǔ)體系和跨框架開發(fā)普及

二.  跨框架開發(fā)介紹

上邊主要介紹的是當前的.net 平臺的基信息,同時,因為系統(tǒng)支持的不同,在不同運行時下的支持框架又會有自己不同的特性。 特別是在.Net Core 的逐漸成熟,新舊項目的跨框架支持的需求會越來越多,如何跨框架類庫共享,舊項目如何擴展支持是個不得不面對的問題。

如何跨框架開發(fā),微軟在這個問題上先后給出了兩個解決方案,一是創(chuàng)建多目標.net core 項目,第二個是創(chuàng)建可移植類庫(Portable)或標準庫(.Net Standard),第一種方式的實現(xiàn)我會在下邊的實現(xiàn)中講解,這里先介紹下第二種方式的由來,這兩種在作用上目的是一樣的,只是范圍和方式略微有所不同,其中.Net Standard 被認為是最好的解決方案。

.Net Standard的官方解釋是:.NET 標準庫是一套正式的 .NET API 規(guī)范,有望在所有 .NET 運行時中推出。 推出標準庫的動機是在 .NET 生態(tài)系統(tǒng)中建立更好的統(tǒng)一性。 ECMA 335 持續(xù)為 .NET 運行時行為建立統(tǒng)一性,但適用于 .NET 庫實現(xiàn)的 .NET 基類庫 (BCL) 沒有類似的規(guī)范。

其主要目的就是規(guī)范 .net 不同運行時下的框架,提出一套可以通用的api標準。先來看看當前微軟官方框架以及當前版本的詳細信息:

.Net基礎(chǔ)體系和跨框架開發(fā)普及

也就是其他框架可以實現(xiàn)自己的特性,但同時也要實現(xiàn)對應(yīng)的.net standard框架api,那么就可以在有需求的框架類庫中直接使用對應(yīng)版本的.net standard框架的類庫。下邊給出.net standard和其他框架(圖中叫平臺)的版本對照關(guān)系:

.Net基礎(chǔ)體系和跨框架開發(fā)普及

如果我們需要新建的項目能夠同時支持.net core 和 .net framework那么我們只需要在vs 2017中新建一個.net standard類庫就好了,如果你使用的是vs2015,那你可以新建 可移植類庫[英文版對應(yīng): Class Library (Portable) ],然后在屬性的窗口下切換到.Net Standard 類庫即可。

可移植類庫和標準庫目的都是一樣,主要是影響的上有所不同,新建可移植類庫是會讓你選擇對應(yīng)的框架,當前類庫的實現(xiàn)接口取所選框架的交集,而標準庫則和具體框架無關(guān),對應(yīng)版本的接口都已規(guī)范好。

三.  跨框架開發(fā)實現(xiàn)

當你需要同時對單一項目提供對.net core 和framework的支持,有兩種情況我們可以選擇,分別是直接建立.net core多目標項目和 建立可移植類庫或者標準庫

1. 使用多目標.net core 項目

使用這個方式主要場景是 必須對某些項目提供framework的特殊功能支持,同時又不希望建立兩個獨立的項目。

這種方式的好處是單個項目能夠快速編譯出不同的目標版本dll,劣勢是可能無法在同一解決方案中直接引用當前項目。

實現(xiàn)方式:

a. 新建.net core 項目

b. 修改project.json文件,添加framework的版本,如:

.Net基礎(chǔ)體系和跨框架開發(fā)普及

c. 針對特定目標的代碼,直接使用條件編譯符號即可,這里是對應(yīng)的目標版本對應(yīng)關(guān)系,也是條件編譯的變量名:

.NET Framework 2.0 --> net20
.NET Framework 3.0 --> net30
.NET Framework 3.5 --> net35
.NET Framework 4.0 --> net40
.NET Framework 4.5 --> net45
.NET Framework 4.5.1 --> net451
.NET Framework 4.5.2 --> net452
.NET Framework 4.6 --> net46
.NET Framework 4.6.1 --> net461
.NET Framework 4.6.2 --> net462
.NET Framework 4.6.3 --> net463

d. 編譯生成即可,可以去debug文件夾下查看對應(yīng)目標的dll

2. 使用標準庫或者可移植類庫,這個比較簡單,只是vs2017才支持直接創(chuàng)建標準庫項目,如果在2015中有需要可以先創(chuàng)建可移植項目,去屬性頁修改目標即可,如圖:

.Net基礎(chǔ)體系和跨框架開發(fā)普及

以上是我個人對當前.Net體系下的理解,這里給出官方的完整平臺圖譜:

.Net基礎(chǔ)體系和跨框架開發(fā)普及

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


本文題目:.Net基礎(chǔ)體系和跨框架開發(fā)普及-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/jjdjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部