2023-06-10 Untiy进阶 C#知识补充1——.Net介绍

news2025/1/31 23:46:17

文章目录

        • 一、.Net 介绍
        • 二、.Net 跨语言的实现
        • 三、.Net 跨平台的实现
          • (一).Net Framework
          • (二).Net Core
          • (三)Mono
        • 四、总结

一、.Net 介绍

​ 微软的 .Net 既不是编程语言也不是框架,是类似于互联网时代、次时代、21世纪、信息时代之类的宣传口号

​ 它是一整套技术体系的统称,或者说它是微软提供的技术平台的代号。包含的内容有:

  • 框架体系:

    • .Net Framework
    • .Net Core
    • Mono 等等
  • 开发语言:

    • C#(C# 是 .Net 平台主推的开发语言)
    • VB
    • F# 等等
  • 开发工具:

    • Visual Studio
    • Visual Studio Code 等等

​ 可以简单理解 .Net 本质上就是微软为自己的一系列产品取的一个代号

.Net 平台诞生的意义:

  1. 跨语言

    只要是面向 .NET 平台的编程语言(C#、VB、C++、F# 等等),用其中一种语言编写的内容可以无缝地用在另一种语言编写的应用程序中

  2. 跨平台

    一次编译,不需要任何代码修改,应用程序就可以运行在任意有 .NET 框架实现的操作系统上,即代码不依赖于操作系统,也不依赖硬件环境

二、.Net 跨语言的实现

  1. 公共语言规范 CLS(Common Language Specification)

    .Net 专门参考每种语言并找出了语言间的共性,定义了一组规则,即一组语言互操作的标准规范。

    只要开发者都遵守这个规则来编码,那么代码就能被任意 .Net 平台支持的语言所通用,即可以通过不同的编程语言(C#、VB、J# 等等)来创建应用程序。

  2. 公共类型系统 CTS(Common Type System)

    需要设计面向 .Net 的语言时需遵循的体系,是公共类型系统 CTS 的子集。

    编程语言如果能支持 CTS,那么称其为面向 .NET 平台的语言 。

  3. 公共语言基础结构 CLI(Common Language Infrastructure)

    微软将 CTS 等内容提交给国际组织计算机制造联合会 ECMA 的一个工业标准。

小结:

  • 微软为了实现跨语言,制定了一些规范。只要一门语言支持 CTS(公共类型系统)的规则,那么我们就能够使用它在 .Net 平台下开发应用程序。
  • CLS(公共语言规范)是 CTS 的一个子集,是一组语言互操作的标准规范。
  • 我们经常可以看到的 CLI 公共语言基础结构,它包含 CTS 公共类型系统。
  • 它是微软将 CTS 等内容提交给国际组织计算机制造联合会 ECMA 的一个工业标准。

三、.Net 跨平台的实现

​ .Net 的跨语言是让各种语言支持 .Net 的规范 CLI(也就是 CTS 等规范)。

​ 早期的.Net系列产品主要是为了给Windows操作系统服务的,并没有跨平台的特性。

​ 即使跨语言了,也只是可以使用多语言开发 Windows 上的应用程序。

(一).Net Framework

​ .NET Framework 是一个可以快速开发、部署网站服务及应用程序的开发框架,在 2002 年推出 1.0 版本。

​ .NET Framework 是 Windows 中的一个组件,部分开源,主要用于开发 Windows 下应用程序。包括:

  • 公共语言运行时(Common Language Runtime, CLR)

  • 虚拟执行系统

  • .NET Framework 类库等

步骤一:制作应用程序(编程语言 + 调用各种类库进行开发,生成程序集)

  1. 只要支持 CLS 公共语言规范的语言,都可以用于开发 Windows 下的各种应用程序和网站程序。

  2. BCL(基础类库)和 FCL(框架类库)是这个框架体系中为我们实现好的各种 API。

  3. 程序集的表现就是后缀为 .dll 或者 .exe 格式的文件。其中包含的最关键信息:

    • PE 头、CLR 头
      • 一些程序的格式信息,比如入口方法,版本号等等。
    • CIL 代码(通用中间代码)
      • 是介于源代码和机器码之间的代码之后会通过 CLR 产生机器码。
      • 由于可能使用不同的代码进行开发,所以会将这些代码翻译为统一规范的中间代码。
image-20230610180722794
图1 .NET Framework 体系上层结构

步骤二:让应用程序在操作系统上运行

​ CLR(Common Language Runtime)公共语言运行时是 .Net Framework 的基础,所有的.Net技术都是建立在此之上的。

​ 它是一个在执行时管理代码的代码,提供内存管理、线程管理等等核心服务,类似一个小型的操作系统一样,所以形象的把它称为“.Net虚拟机” 。

​ 如果想要应用程序在目标操作系统上能够运行,就必须依靠 .Net 提供的 CLR 环境来支持,那就必须在操作系统上安装 .Net Framework。

​ 它会把程序集中的 IL(中间代码)翻译成机器码最终在操作系统上运行。

image-20230610180751016
图2 .NET Framework 体系下层结构
image-20230610180552183
图3 CLR 主要做的事情

小结:

​ .Net Framework 是一个主要用于跨语言开发、Windows 操作系统下的应用程序的框架结构,不支持跨平台。

(二).Net Core

​ .Net Core 是 2016 年推出的 .Net Framework 的新一代版本,是.Net Framework的兄弟,是.Net Framework的翻版实现,它是一个开源项目。

​ 它基于 .Net Framework 来进行设计,主要目的是跨平台,是 .Net 技术框架组成在 Windows、MacOS、类 Linux 系统下的具体实现。

原理:

​ 为不同的操作系统实现对应的 CLR 公共语言运行时(.Net 虚拟机),使得在不同的平台上能够将 IL(中间代码)翻译成机器码,最终在操作系统上运行。

image-20230610181505402
图4 .NET Core 体系结构
(三)Mono

​ Mono 是一个由 Xamarin 公司(已被微软收购)所赞助的开源项目。

​ 它基于 .Net 的CLI(Common Language Infrastructure)公共语言基础结构,提供了微软 .Net FrameWork 的另一种实现。

​ 它相对 .Net FrameWork 最大的区别就是具备跨平台的能力,不仅可以运行在Windows、MacOS、Linux 等操作系统,甚至还可以运行在 PS3、XBOX、Wii 等主机平台上。

​ Mono 的 1.0 版本出现在 2004 年,也就是说在 .Net Core 出现之前,Mono 是 .Net 平台实现跨平台的唯一选择。

原理:

​ Mono 利用 .Net 平台制定的 CLI 公共语言基础结构规则,将多种语言编译成通用规范的 CIL 公共中间语言,再利用 CLR 公共语言运行时,将 CIL 公共中间语言转换为操作系统的原生代码(主要做的就是在各种操作系统上实现了对应的 CLR 内容),这样用各种不同语言编写的逻辑就能够在指定操作系统上运行。

​ Mono 的规则是在 .Net Framework 规则上进行修改和添加的。

四、总结

  • .Net Framework(2002 年发布):

    部分开源,主要用于开发 Windows 平台下应用,包含 Windows 平台的所有特性。

  • .Net Core(2016 年发布):

    完全开源,可以针对多个平台开发应用,包含 .Net Framework 部分特性。

  • Mono(2004 年发布):

    完全开源,早期乃至现在也是 .Net 的跨平台解决方案。

​ 总体而言,在 .Net Core 出现之前开发者都通过 Mono 来实现 .Net 的跨平台。

​ 使用基于 .Net 平台的 Mono 开发,能够发布可以在主流的各种操作系统上运行的应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tomcat部署和优化

文章目录 Tomcat概述Tomcat的核心组件Tomcat的功能组件结构Container 结构分析Tomcat 请求过程: Tomcat 服务部署Tomcat 虚拟主机配置HTTP 请求过程 Tomcat优化常用的优化相关参数如下 Tomcat概述 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的…

Spring高手之路4——深度解析Spring内置作用域及其在实践中的应用

文章目录 1. Spring的内置作用域2. singleton作用域2.1 singleton作用域的定义和用途2.2 singleton作用域线程安全问题 3. prototype作用域3.1 prototype作用域的定义和用途3.2 prototype作用域在开发中的例子 4. request作用域(了解)5. session作用域&a…

002docker 安装

官网安装https://docs.docker.com/engine/install/ 系统要求 Centos7 Linux 内核:官方建议 3.10 以上查看Linux内核版本 用于打印当前系统的相关信息(内核版本号,硬件架构,主机名称和操作系统类型等 cat /proc/version uname -a 更新YUM源 生产环境中此步操作…

Spring Cloud Feign实战

概述 Feign是一种声明式、模板化的HTTP Client,目标是使编写Java HTTP Client变得更简单。Feign通过使用Jersey和CXF等工具实现一个HTTP Client,用于构建REST或SOAP的服务。Feign还支持用户基于常用的HTTP工具包(OkHTTP、HTTPComponents&…

2023网安面试题170道,轻松应对面试

最近有不少小伙伴跑来咨询: 想找网络安全工作,应该要怎么进行技术面试准备? 工作不到 2 年,想跳槽看下机会,有没有相关的面试题呢? 为了更好地帮助大家高薪就业,今天就给大家分享两份网络安全工…

仙境传说ro:如何在地图上刷怪教程

仙境传说ro:如何在地图上刷怪教程 大家好我是艾西,在仙境传说这个游戏中我们知道了怎么创建NPC添加商品售卖后,那么对于游戏的怪肯定也得有自己的想法以及对游戏的设定以及理解,今天我跟大家分享的是怎么在地图中刷怪教程。 我们…

STL——string、vector、deque容器

初识STL **STL的基本概念****vector容器存放内置数据类型****vector容器中存放自定义数据类型****vector容器嵌套vector容器****string容器——构造函数****string容器——赋值操作****string容器——字符串拼接****string容器——字符串的查找和替换****string容器——字符串比…

人工智能该如何学习?详细的AI学习

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 1.TomChat 地址:https://www.ridderchat.com/ 该网站非常简介好看,界面看着很舒服,可以帮助你快速编写、编辑和讨论代码。 2.强大的AI辅助 链接…

模拟实现strstr函数,通俗易懂!!!

函数介绍 函数声明 函数声明&#xff1a;char *strstr(const char *str1, const char *str2) 头 文 件&#xff1a;#include <string.h> 返 回 值&#xff1a; 返回值为char * 类型&#xff08; 返回指向 str1 中第一次出现的 str2 的指针&#xff09;&#xff1b…

Webots R2021a教程

文章目录 Windows安装设置中文打开世界添加贴图 为外部控制器配置Anaconda解决报错&#xff1a;CondaSSLError: Encountered an SSL error. Most likely a certificate verification issue.调用Python API Windows 安装 进入下载页面 https://github.com/cyberbotics/webots/r…

CSS实现几种常见布局

CSS实现几种常见布局 两列左窄右宽型布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" co…

【面试题】2023前端面试系列-- Vue 篇

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 Vue 常见面试题总结 MVVM模型&#xff1f; MVVM&#xff0c;是Model-View-ViewModel的简写…

001docker架构介绍

docker 官网Choose the best method for you to install Docker Engine. This client-server application is available on Linux, Mac, Windows, and as a static binary.https://docs.docker.com/engine/install/ 介绍 Docker用Go编程语言编写&#xff0c;并利用Linux内核的…

算法刷题-链表-两两交换链表中的节点

两两交换链表中的节点 24. 两两交换链表中的节点思路其他语言版本 24. 两两交换链表中的节点 力扣题目链接 给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后的链表。 你不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进行节点交换。 思…

黄金回收小程序开发功能有哪些?

一、用户端&#xff1a; 1、实时查询&#xff1a;通过对接三方接口实现实时金价动态查看&#xff1b; 2、多种类珠宝实时回收&#xff1a;小程序支持多品类珠宝的实时回收包含黄金饰品、金条、铂金、K金、白银等&#xff0c;同步实现价格实时更新&#xff1b; …

计算机内核态、用户态和零拷贝技术详解

存储介质的性能 话不多说&#xff0c;先看一张图&#xff0c;下图左边是磁盘到内存的不同介质&#xff0c;右边形象地描述了每种介质的读写速率。一句话总结就是越靠近cpu&#xff0c;读写性能越快。了解了不同硬件介质的读写速率后&#xff0c;你会发现零拷贝技术是多么的香&a…

JDBC 事务和批处理 详解(通俗易懂)

目录 一、前言 二、事务 1.事务介绍 : 2.事务处理 : Δ准备工作 Δ不使用事务的情况 Δ使用事务的情况 三、批处理 1.介绍 : 2.常用方法 : 3.应用 : 4.源码分析(JDK17.0版本&#xff09; : 四、总结 一、前言 第四节内容&#xff0c;up主要和大家…

阿里背调,征信不好也会被pass

大厂背调&#xff0c;我一直认为是唬人的&#xff0c;走下流程而已&#xff0c;没想到这么严格。这次提供的背调信息&#xff0c;我填写了上家公司三个联系人&#xff0c;HR、领导、同事&#xff1b;上上家公司三个联系人&#xff0c;HR、领导、同事。根据朋友的反馈来看&#…

python 第五章 列表list [ ]

系列文章目录 第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 文章目录 5.1列表的应用场景5.2列表的格式5.3列表的常用操作查找下标函数查找函数index()count()len() 判断是否存在innot in 增加append()extend()insert() 删除delpop()remove()clear() 清空列…

Java并发回顾

树叶柔和爽朗的呼吸 诗人一路吹着口哨回家 一路踢着石子妙想连篇 感到夕阳和晚风自古多情 自己现在和将来 都是个幸福的人 系列文章目录 Java常见知识点汇总Java集合回顾Java并发回顾… 文章目录 系列文章目录什么是线程和进程?线程与进程的关系,区别及优缺点&#xff1f;图解…