Unity進階--C#補充知識點--【Unity跨平臺的原理】了解.Net

·來源于唐老獅的視頻教學,僅作記錄和感悟記錄,方便日后復習或者查找


一.什么是.Net

.Net是指微軟一整套技術體系的統稱與代號

包含的內容有:

  • 框架體系:.Net Frameword,?.Net Core,?Mono
  • 開發語言:C#,VB,F#等(其中C#是主推的主流語言)
  • 開發工具:VS,VScode等

做這一套體系的目的:

  • ①實現跨語言:只要是面向.Net平臺的編程語言(C#,F#,C++,VB)用其中一種語言編寫的程序可以無縫切換到另一個應用程序中
  • ②實現跨平臺:只要一次編譯,就可以把應用程序不經代碼修改地運行在任意有.Net框架實現的操作系統上。(即代碼不依賴于操作系統和硬件設備)

(搞壟斷,希望大家都統一用他家的產品和開發工具與框架)


二..Net跨語言的實現

如何實現的跨語言:

  • CLS(Common Language Specification):公共語言規范。參考每種語言的共性定義出的一套規則。只要開發者都遵守這個規則來進行編碼,那么代碼就能夠被任意.Net平臺支持的語言所通用,即可以通過不同的編程語言(C#,VB,J#等)來創建應用程序。【對于普通開發者】
  • CTS(Common Type System):公共類型系統。設計面向.Net語言的時候要遵守的規范體系。CLS是CTS的子級。如果一個語言它支持CTS,那么它就是面向.Net平臺的語言。【對于要設計面向.Net的語言的開發者】
  • CLI(Common Language Infrastructure):公共語言基礎。是微軟將CTS等內容提交給國際組織計算機制造聯合會ECMA的一個工業標準

總結:

為了實現跨語言,微軟制定了上述的一些列規范。

只要語言遵守.Net的規范,那這個語言就可以和其他面向.Net的語言之間實現跨語言操作。即可以在.Net平臺下開發應用程序。

CLI包含CTS,是微軟把CTS提交給國際組織的一個工業標準


三..Net跨平臺的實現

我們可以看出來,.Net的跨語言實現是讓所有需要在.Net平臺上進行開發的語言遵守CLI標準

不過在早期的.Net中其實是指支持Windows平臺的,也就是只能夠讓不同的語言共同去開發windows程序。而實現了的跨平臺功能就和.Net Frameword,.Net Core,以及Mono是有關的

1..Net Framework

定義:.Net Framework是一個開發框架。可以快速開發部署網站父物和應用程序。它是Windows中的一個組件。部分開源。主要用于開發Windows下的應用程序

包含:

  • ①公共語言運行時(Common Language Runtime, CLR)
  • ②虛擬執行系統
  • ③.Net Framework類庫等

體系結構:

制作應用程序

基于CLS的開發語言 + 各種類庫 = 可以在CLR上編譯為機器碼的程序集

①只要支持CLS的語言都可以用于開發Windows下的應用程序

②BCL(基礎類庫)和FCL(框架類庫)是這個框架體系中為我們提供的各種API

③程序集的表現是.dll或者.exe格式的文件,其中最為關鍵的信息是:

  • PE頭,CLR頭(就是一些程序的格式信息,比如入口方法,版本號等)
  • CIL代碼(通用中間代碼):是介于源代碼和機器碼之間的代碼,可以通過CLR產生機器碼(總之就是會把所有不同語言經過轉化后得到的統一規范的中間代碼)

讓應用程序在操作系統上運行

CLR(Common Language Runtime):是公共語言運行時

  • 它是.Net Framework的基礎,所有.Net技術都建立在此之上。
  • 它提供內存管理,線程管理等服務。看起來和虛擬機一樣,因此又被稱為.Net虛擬機

因此如果想要應用程序能夠在目標操作系統上運行,就需要使用.Net提供的CLR環境來支持,即必須在操作系統上安裝.Net Framework

它會把程序集中的IL(中間代碼)翻譯成最終在操作系統上執行的機器碼

總結:

.Net Framework是一個能夠支持在Windows平臺下進行跨語言開發應用程序的的框架結構。它部分開源。但是它不支持跨平臺開發

2..Net Core

定義:.Net Core是2016年推出的.Net Framework的新一代版本。類似.Net Framework的兄弟

  • 它是.Net Framework的翻版實現,是一個開源項目
  • 它是基于.Net Framework來進行設計的主要目的就是跨平臺
  • 它是.Net技術框架在Windows,Mac OS,類Linux系統下的具體實現

原理:給不同的操作系統都實現相應的CLR(.Net虛擬機)。這樣在不同平臺上就都可以通過CLR進行跨語言開發。同時又實現了跨平臺的特性

.Net Framework誕生于2002年,.Net Core誕生于2016年,中間14年的空窗期的跨平臺實現主要由Mono來負責

3..Mono

說明:Mono是一個Xamarin公司(已被微軟收購)贊助的開源項目。

  • 基于.Net的CLI(公共語言基礎)提供了對.Net Framework的另一種實現
  • 它和.Net Framework的區別是具備跨平臺能力【可以在Windows,Mac OS, Linux操作系統,PS3,XBOX,Wii等主機平臺上運行】
  • 它1.0版本出現于2004年

原理:

①利用.Net平臺制定的CLI把很多語言編譯成通用規范的CIL公共中間語言

②再利用CLR公共語言運行時轉化為對應操作系統的原生代碼

(這套規則是在.Net Framework的基礎上進行的修改與添加)

老實說它這個原理和.Net Core看起來很像的


四.總結

①.Net是微軟旗下一系列開發框架,開發語言,開發工具的產品代號。

②對于跨語言的實現,主要通過讓語言遵守CLI標準,即可讓該語言成為面向.Net的語言。從而使得該語言開發的應用程序能夠被編譯為統一規范標準的通用中間語言CIL。并通過CLR通用語言運行時(.Net虛擬機)去把CIL轉化為操作系統可執行的機器碼(典型的是.Net Framework框架把CIL轉化為Windows操作系統下的可執行機器碼)

③對于跨平臺的實現,主要是通過.Net CoreMono這兩個完全開源的框架實現的。

④.Net Core是.Net Famework的翻版實現,它最大的特點是在不同的平臺上實現了對應的CLR(.NET 虛擬機)從而讓應用程序能夠在不同平臺上被編譯執行

⑤Mono是一個很早(2004年)的開源項目,是對.Net Framework的修改與添加,它是通過利用CLI對.Net Framework進行了另一種實現的框架。它利用CLI把不同語言編譯成統一規范的CIL,然后再利用CLR轉化為對應操作系統上可執行的機器碼

⑥Mono 使用??同一套運行時代碼??,.NET Core 為每個目標平臺(Windows、Linux、macOS)??獨立實現了一套完整的運行時(CoreCLR)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93444.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93444.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93444.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

論文淺嘗 | 提高大型語言模型的數學推理能力的學習定理基本原理(AAAI2025)

筆記整理:蘭雅榕,浙江大學碩士生,研究方向為知識圖譜、大語言模型論文鏈接:https://ojs.aaai.org/index.php/AAAI/article/view/33662發表會議:AAAI 20251. 動機提高開源大型語言模型(LLM)的數學…

母豬姿態轉換行為識別:計算機視覺與行為識別模型調優指南

母豬姿態轉換行為識別:計算機視覺與行為識別模型調優指南 1. 引言 1.1 研究背景與意義 母豬姿態轉換行為識別是智能養殖領域的重要研究方向,通過計算機視覺技術自動識別母豬的站立、躺臥、行走等姿態變化,對于監測母豬健康狀態、評估福利水平…

K8S集群環境搭建(一)

虛擬機鏡像 ubuntu 24 虛擬機網絡 虛擬網絡–配置 nat模式主機ip配置宿主機ip配置 10.0.0.12 master 2c 10.0.0.15 node1 10.0.0.16 node2 10.0.0.17 node3 10.0.0.20 registersudo vi /etc/netplan/00-installer-config.yaml # 替換為實際文件名 sudo netplan applynetwork:v…

css預編譯器實現星空背景圖

打造夢幻星空背景:用CSS預處理器輕松實現動態效果 星空背景能為網頁增添神秘感和視覺吸引力。通過CSS預處理器(如Sass/Less)可以高效實現可定制化的星空效果,避免重復編寫純CSS代碼。以下是 Vue3 組件皮膚具體實現方法和代碼示例。…

焊接機器人保護氣體效率優化

在現代工業制造領域,焊接機器人的應用日益廣泛,而保護氣體在焊接過程中起著至關重要的作用。如何優化保護氣體的效率,成為焊接技術發展的一個關鍵考量因素。WGFACS節氣裝置的出現,為焊接機器人在保護氣體效率優化方面帶來了顯著的…

Portkey-AI gateway 的一次“假壓縮頭”翻車的完整排障記:由 httpx 解壓異常引發的根因分析

筆者最近在本地搭建了Portkey AI Gateway(模型路由網關),然后按照文檔中的方式進行測試。結果發現,網關能夠接收到請求,但是Python測試的程序卻運行報錯。Python代碼報錯信息如下: Traceback (most recent …

什么是Session? PHP編程中Session用法詳解

一、Session的基本概念 Session 是 Web 開發中用于在服務器端存儲用戶臨時數據的一種機制,它允許服務器在不同的 HTTP 請求之間識別和跟蹤特定用戶的狀態,本質上是?服務器為每個用戶開辟的臨時私有存儲空間?。由于 HTTP 協議本身是無狀態的&#xff…

【大模型】AI平臺 joyagent 2.0 的部署與測試

github鏈接:https://github.com/jd-opensource/joyagent-jdgenie 本篇博客記錄下自己在配置joyagent的過程,以【手動初始化環境,啟動服務】為例,后端調用的deepseek-chat大模型。 前言 JoyAgent是由京東云開源的企業級多智能體系統…

計算機視覺(一):nvidia與cuda介紹

背景與意義 計算機視覺 (Computer Vision, CV) 需要對圖像和視頻進行處理、特征提取和模型訓練,計算量巨大。GPU (圖形處理單元) 擅長并行計算,非常適合深度學習、卷積操作、矩陣乘法等場景。NVIDIA 作為 GPU 領域的領導者,推出了 CUDA (Comp…

阿里云杭州 AI 產品法務崗位信息分享(2025 年 8 月)

(注:本崗位信息已獲jobleap.cn授權,可在 CSDN 平臺發布) 一、基本信息 招聘方:阿里云工作地點:杭州信息收錄時間:2025 年 08 月 14 日 二、職位主要職責 為 AI 相關產品全流程提供法務支持&…

醫療智慧大屏系統 - Flask + Vue實現

下面我將實現一個完整的醫療智慧大屏系統,使用Flask作為后端框架,前端使用Vue.js結合ECharts進行醫療數據的可視化展示,文章末尾提交源碼下載。 系統設計思路 前端部分: 使用Vue.js構建響應式界面 使用ECharts實現各類醫療數據可…

庫制作與原理(下)

庫制作與原理 (下) 1. 目標文件 編譯和鏈接這兩個步驟,在 Windows 下被我們的 IDE 封裝的很完美,我們一般都是一鍵構建非常方便,但一旦遇到錯誤的時候呢,尤其是鏈接相關的錯誤,很多人就束手無策了。在 Linux 下&#x…

STL 容器

STL是C的核心組成部分,其主要包括了容器、迭代器、算法三大組件。 其中容器負責存儲數據,迭代器是容器和算法的橋梁,負責對容器中的元素進行操作。本文重點介紹容器部分內容。 STL主要容器 STL容器根據特性進行分類,可以分為序列式…

微信小程序 拖拽簽章

微信小程序 拖拽簽章 效果 主要實現的功能點 文件按比例加載圖片(寬高設定拖拽范圍) 彈層展示印章模板 模板拖拽到文件圖片上 實時獲取拽拽位置 難點 彈層中的元素如何拖拽到文件圖片上 實現歷程 版本1.0 以前我們拖拽一個圖層到另一個圖層上,pc端使用的是mousedown mou…

人工智能加速計算套件

按照甲方要求的技術指標的人工智能加速計算套件1套。每套包含以下內容: 1、顯卡 不低于6542Y;容量不低于 48GB GDDR6顯存;CUDA核心不低于14080 個 ;第四代Tensor Core不低于440 個;單精度性能不低于69.3 TFLOPS&#x…

端到端測試:復雜系統的終極體檢術

當你的應用像多米諾骨牌一樣牽一發而動全身,如何確保用戶一路暢通無阻?一、為什么我們需要端到端測試? 想象一下:你精心開發的電商應用,用戶登錄順利,商品瀏覽流暢,卻在最后支付時卡殼——原因是…

Perf使用詳解

Perf 工具深度解析 Perf(Performance Counters for Linux)是 Linux 系統的性能分析工具,基于內核的 perf_event 子系統,通過硬件性能計數器(PMC)、軟件事件和跟蹤點(tracepoints)實現…

Windchill 11 Enumerated Type Customization Utility-枚舉類型自定義實用程序

一、Enumerated Type Customization Utility 枚舉類型自定義實用程序,可用于添加或編輯枚舉類型的值,在Windchill 12.0中可直接在類型和屬性管理中編輯,如下圖所示,而在Windchill 11.0中只能通過windchill shell啟動程序&#xff…

git疑問,暫時記錄

有時候把dev本地分支搞亂了,多出幾個提交,好像在遠程倉庫,rebase dev到本地dev,就恢復了,然后再把我開發分支合并過去就ok,就不會多出幾個重復的提交 在自己分支開發提交數據后,不push到遠程倉庫 然后合并到dev分支,推dev分支到遠程倉庫然后在自己分支,rebase到自己分支,然后再…

Java 大視界 -- 基于 Java 的大數據分布式計算在氣象災害預警與應急響應中的應用

Java 大視界 -- 基于 Java 的大數據分布式計算在氣象災害預警與應急響應中的應用引言:Java 筑起氣象防災減災的數字長城正文:Java 構建的氣象智慧防御體系一、氣象大數據的 Java 基座:從采集到存儲的全鏈路優化1.1 多源異構數據的實時匯聚1.2…