亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

.Net基礎體系和跨框架開發普及

2019-11-11 04:04:48
字體:
來源:轉載
供稿:網友

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

一. 基礎概念

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

  首先:在語言層面上

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

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

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

  其次:運行時層面

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

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

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

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

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

  

二.  跨框架開發介紹

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

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

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

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

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

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

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

  

三.  跨框架開發實現

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

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

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

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

  實現方式:

  a. 新建.net core 項目

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

 

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

  .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文件夾下查看對應目標的dll

  

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

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

 

下篇文章我將實戰演示OSS.Common項目的遷移過程,如果你有興趣,可以添加公眾號(osscoder):

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色播久久人人爽人人爽人人片视av| 黄色精品在线看| 欧美最近摘花xxxx摘花| 欧美另类精品xxxx孕妇| 成人午夜高潮视频| 欧洲亚洲在线视频| 欧美极品第一页| 国产欧美日韩精品丝袜高跟鞋| 国产成人综合av| 粗暴蹂躏中文一区二区三区| 欧美精品一区二区三区国产精品| 琪琪亚洲精品午夜在线| 欧洲美女免费图片一区| 亚洲国产精品国自产拍av秋霞| 国产精品久久国产精品99gif| 亚洲欧美国产精品久久久久久久| 成人在线国产精品| 国产裸体写真av一区二区| 一级做a爰片久久毛片美女图片| 美女av一区二区三区| 亚洲成人在线视频播放| 亚洲精品一区中文字幕乱码| 日本精品一区二区三区在线| 美女久久久久久久久久久| 国产香蕉97碰碰久久人人| 亚洲精品aⅴ中文字幕乱码| 国产脚交av在线一区二区| 精品亚洲一区二区三区在线播放| 亚洲精品电影在线观看| 国产美女直播视频一区| 韩国国内大量揄拍精品视频| 欧美黑人国产人伦爽爽爽| 78m国产成人精品视频| 亚洲影视九九影院在线观看| xxxx性欧美| 久久久91精品国产一区不卡| 欧美激情亚洲综合一区| 欧美日韩电影在线观看| 欧美一级大片在线观看| 国产精品美女999| 成人激情视频在线| 欧美国产日韩视频| 日韩精品高清在线| 九九热这里只有在线精品视| 亚洲电影中文字幕| 精品福利一区二区| 国产国语videosex另类| 欧美日韩国产区| 日韩在线小视频| 久久视频这里只有精品| 国产97在线播放| 精品国产91乱高清在线观看| 国产xxx69麻豆国语对白| 国内偷自视频区视频综合| 久久精品国产精品亚洲| 国产精品青草久久久久福利99| 欧美国产日本高清在线| 欧美日韩高清在线观看| 国产99视频精品免视看7| 亚洲人午夜精品免费| 韩国精品久久久999| 欧美一区二三区| 成人网欧美在线视频| 欧美国产一区二区三区| 高潮白浆女日韩av免费看| 日韩精品丝袜在线| 国产美女久久精品香蕉69| 91香蕉国产在线观看| 66m—66摸成人免费视频| 日韩在线视频中文字幕| 欧美高清一级大片| 日韩激情av在线免费观看| 欧美日韩第一视频| 欧美极品欧美精品欧美视频| 国产激情视频一区| 中文字幕日韩av综合精品| 中文字幕久久久| 国产伦精品一区二区三区精品视频| 日韩中文字幕亚洲| 大伊人狠狠躁夜夜躁av一区| 亚洲国产精品人人爽夜夜爽| 欧美孕妇与黑人孕交| 91久久夜色精品国产网站| 国产日产亚洲精品| 亚洲一级黄色片| 精品无人国产偷自产在线| 精品一区二区亚洲| 欧美另类老女人| 亚洲欧美在线免费| 成人性生交大片免费看视频直播| 久热精品视频在线观看一区| 91视频8mav| 欧美中文字幕在线视频| 国产一区二区三区在线播放免费观看| 亚洲国产福利在线| 欧美亚洲国产视频| 色综合91久久精品中文字幕| 欧美激情xxxx性bbbb| 国产精品网站大全| 亚洲人午夜精品| 8x拔播拔播x8国产精品| 国产精品美女久久久久av超清| 亚洲精品一区二区在线| 色婷婷成人综合| 欧美日韩一区二区三区在线免费观看| 欧美黑人巨大xxx极品| 久久伊人色综合| 色妞色视频一区二区三区四区| 精品久久久久久久久久久久| 欧美成人精品xxx| 日韩免费在线免费观看| 久久视频这里只有精品| 欧美成人精品在线观看| 亚洲国产三级网| 成人av在线网址| 国产精品自产拍在线观看中文| 日韩影视在线观看| 88国产精品欧美一区二区三区| 97超级碰在线看视频免费在线看| 欧美精品制服第一页| 国产精品一区二区在线| 亚洲男女性事视频| 亚洲天堂av在线播放| 国产欧美va欧美va香蕉在线| 在线色欧美三级视频| 亚洲18私人小影院| 国产脚交av在线一区二区| 中文字幕日韩精品有码视频| 欧美激情精品久久久久久| 欧美极品少妇与黑人| 亚洲全黄一级网站| 国产日韩在线免费| 亚洲美女精品成人在线视频| 欧美性资源免费| 日韩在线视频中文字幕| 国产精品99久久久久久www| 欧美色图在线视频| 中文字幕久热精品在线视频| 亚洲最大的成人网| 精品夜色国产国偷在线| 国产精品视频网址| 亚洲精品视频在线播放| 色视频www在线播放国产成人| 国产综合久久久久| 欧美在线视频一区二区| 精品国产网站地址| 国产精品羞羞答答| 成人久久精品视频| 国产成人精品视| 欧美精品一区三区| 国产精品一区专区欧美日韩| 亚洲黄色av女优在线观看| 日韩一区二区三区xxxx| 国产精品私拍pans大尺度在线| 伊人成人开心激情综合网| 国产精品久久久久久久av大片| 91久久久久久久一区二区| 一区二区福利视频| 亚洲精品成人av| 91精品一区二区| 国产区精品在线观看| 国产区亚洲区欧美区| 68精品国产免费久久久久久婷婷| 国产视频精品自拍|