.Net Framework简介
1 平台简介
.Net Framework采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime)为基础,支持多语言的开发。.Net 也为应用程序接口提供了新功能和开发工具,这个革新是的程序员可以同时进行windows应用软件和网络应用软件以及组件和服务(web 服务)的开发。
2 .Net Framework的内容
.Net Framework一般而言可以将其技术分为规范和实现两部分;其中实现部分包括被人所熟知的CLR(公共语言运行库)和FCL(.Net 框架类库);而规范即CLI(公共语言架构)包括CTS(Common Type System--通用类型系统)、CLS(Common Language Specification--公共语言规范)、CIL(Common Intermediate Language--通用中间语言以前也称为的MSIL)。两者之间的关系如图2-1:
图2-1 图2-2
- CLR(公共语言运行库):和java虚拟机一样也是也是一个运行时环境,它负责资源管理(内存分配[类型的内存分配]和垃圾回收[GC],并保证应用和底层操作系统之间的必要分离。其核心功能包括:内存管理、程序集加载、安全性、异常处理和线程同步。
- FCL(.Net类库):为.Net Framework两个核心组件之一。FCL集合了上千组可再利用的类、接口和值类型。BCL(Base Class Libraries)是FCL的一部分,提供了多数的基础功能,其中包括namespaces System,System.CodeDom,System.Collections,System.Diagnostics,System.Globalization,System IO,System.Resources,System.Text,和System.Text.RegularExpressions的类
- CTS(通用类型系统):定义了如何在运行库中声明、使用和管理类型,同时也是在运行库下支持各语言之间进行交互操作。(PS:CTS定义了在MSIL中使用的预定义类型,.Net 语言将代码解释成中间语言,其原因.Net 编译器是遵循CLS[公共语言规范]实现的)。
- CLS(公共语言规范):和通用类型系统一起确保语言的互操作型。
- CIL(通用中间语言):是一种属于通用语言框架和.Net框架的低阶的人类可读的编程语言。
CTS(通用类型系统)建立一个支持跨语言的集成,是不通语言编写的代码直接能够交互使用。CTS可以分为两大类:值类型和引用类型,同事两种类型之间可以进行强制转换,这种转换成为Boxing(装箱)和UnBoxing(拆箱)。从图2-2可以看出通用类型系统的基本结构,CTS的每一种类型都是对象,并继承一个基类System.Object。对于值类型和引用类型的内容将会在下篇进行解释。
3 .Net Framework 编写应用程序的些许概念
3.1 概念
- JIT(Just-In-Time):将CIL编译为专用于操作系统和目标机器结构的本机代码,在需要时才会进行编译
- 程序集:在编译期间,将CIL代码、元信息(即程序集中包含的数据的信息)、可选资源(CIL使用的其他数据,eg:图片)存储在程序集中,程序集包括可执行的应用程序(.exe)和其他应用程序的库(.dll)
3.2 编译和运行处理
利用.Net Framework编写的代码时,不是将代码直接创建为OS的本机代码,而是将源码编译成CIL,存储在程序集里面,在执行代码时必须使用JIT编译器将代码编译为本机代码,最后在托管的CLR环境下运行本机代码,以及其他应用程序,并且在CLR管理正在执行的用.NetFramework编写的代码,这个执行代码的阶段通常被称为运行时(Runtime)。编译过程如图3-1所示
图3-1
PS:
第一次写博客,还真是挺累人的。若有什么错误请指正,倘若觉得不错请点击下推荐,谢谢。
参考文献
百度百科
微软中国社区
《C#入门经典》
《你必须知道的.Net》
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 上周热点回顾(3.17-3.23)