.NET Framework 框架

article/2025/11/4 5:25:35

20世纪90年代以来出现的3种典型的组件技术:

1)OMC(对象组件模型)的CORBA 2)Microsoft的COM/DCOM 3)Sun公司的JavaBeans

在2002年,微软发布了.NET框架的第一个版本,声称其解决了旧问题并实现了下一代系统的目的。.NET框架是一种比MFC和COM编程技术更一致并面向对象的环境。它的特点包括:

1)多平台。【面向异构网络、硬件平台和操作系统,可以在多种多样的系统上运行,从服务器、桌面机到PDA和移动电话。】 2)行业标准。【实现软件系统之间的智能交互和协同工作,使用行业标准的通信协议,比如:XML、HTTP、SOAP和WSDL。】 3)安全性。【提供一个标准化的、安全的、一致的模型和环境,提供更加安全的执行环境,即使有来源可疑的代码存在。】

Microsoft为.NET技术制定了一整套完整的规范,便是CLI(Common Language Infrastructure,公共语言基础结构,公共语言架构)。

CLI的组成:

1)CTSCommon Type System,公共类型系统)。【定义了一组丰富的内置类型,以及每种类新固有的、独有的特性;最重要的特征之一是所有类型都继承自公共的基类Object类】

2)CLSCommon Language Specification,公共语言规范)。【说明了.NET兼容编程语言的规则、属性和行为,其主题包括数据类型、类结构和参数传递】

3)CILCommon Intermediate Language,公共中间语言)。 4)CLRCommon Language Runtime,公共语言运行库)。

5)BCLBase Class Library,基类库)。【FCL的一个子集】 6)元数据定义、语义。 7)其他相关标准化文档、协议、规范。

Microsoft针对CLI在Windows上的完整实现便是 .NET Framework(.NET 框架)。

.NET Framework的主要组成:

1)CLR(Common Language Runtime,公共语言运行时,公共语言运行库)。【核心组件。提供服务:自动垃圾收集;安全和认证;通过访问BCL得到广泛的编程功能,如web服务和数据服务之类的功能】

2)FCL(Framework Class Library,Framework类库,框架类库)。【BCL的一个超集】

.NET Framework的优点:

1)面向对象的开发环境。【CLR、BLR和C#被设计得完全面向对象;为本地程序和分布式系统提供一致的、面向对象的编程模型;】

2)自动垃圾收集(Garbage Collection,GC)。【GC自动从内存中删除程序不在访问的对象】 3)互操作性。【不同.NET语言编写的软件模块无缝交互;平台调用(platform invoke,P/Incoke)的特性;允许与COM进行交互】

4)不需要COM(Component Object Model,组件对象模型)。

5)简化的部署。【.NET程序不需要使用注册表注册;并行执行特性】

6)类型安全性。【CLR检查并确保参数及其它数据对的类型安全】

7)基类库(Base Class Library,基类库)。有时称为框架类库(Framework Class Library,FCL)。【包括通用基础类、集合类、线程和同步类、XML类】

CLR在运行期管理程序的执行,包括以下内容: 1)内存管理。 2)代码安全验证。 3)代码执行、线程管理和异常处理。 4)垃圾收集。

CLR提供的服务: 1)内存管理。 2)异常处理。 3)自动垃圾收集。 4)管理代码的执行 5)JIT实时编译器(Just-in-Time)。 6)类加载器。【通过访问BCL得到广泛的编程功能,如web服务和数据服务之类的功能】 7)反射服务。 8)安全服务。 9)提供系统服务。

FCL的组成 或 服务: 1)基础类型。【整数、实数、字符串等类型定义】 2)数据结构封装。【集合、链表、队列、堆栈等数据类型】 3)Windows和Web等界面要素。【主要是按钮、标签、文本框、菜单等可视化控件】 4)Web Service要素。【用于Web服务的定义、描述、配置、解析等】 5)XML文档处理。【如XML文件、属性、元素、节点、读写器、解析器等类型】 6)文件的输入输出。【如驱动器、目录、文件、流、读写器等类型】 7)数据访问。【如数据连接、数据命令、数据集、数据表、记录等类型】 8)网络通信。【如主机、管道、套接字、消息等类型】 9)异常处理。【用于处理系统和应用程序所引发的各种异常】 9)类型反射。【用于获取程序集、对象、方法属性、字段等目标的元数据信息类型】 10)用于应用程序管理、操作系统功能封装、安全性控制等其他方面的类型。

.NET Framework 环境结构图:

;

源代码文件编译成CIL的编译过程:

;

程序运行时CIL编译成本机代码:

;

.NET 框架编译和执行:

;

注:相关名称一览:

CLI(Common Language Infrastructure,公共语言基础结构,公共语言架构)

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

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

CIL(Common Intermediate Language,公共中间语言)

.NET Framework(.NET 框架)

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

FCL(Framework Class Library,Framework类库,框架类库)

BCL(Base Class Library,基类库)

实时JIT(Just-in-Time)

编译器 GC(Garbage Collection,垃圾收集)

API(Application Programming Interface,应用程序编程接口)注:还特指API的说明文档,也称为帮助文档

MFC(Microsoft foundation classes,微软基础类库)

COM(Component Object Model,组件对象模型)

managed code 托管代码 unmanaged code 非托管代码

平台调用(platform invoke,P/Incoke)

Ecma(Europen Computer Manufacturers Association,欧洲计算机制造商协会)


http://chatgpt.dhexx.cn/article/Wa6lS3qT.shtml

相关文章

vercel和netlify部署代码并解决接口代理转发的问题(和Nginx功能一样)

前言 部署过程就不说了,部署完成后是这样子的 然后访问链接,无法访问 解决 依次点击 Settings–>Domains,在输入框中输入你的域名并点击 Add 按钮。 以此域名为例子demo.gshopfront.dreamlove.top为例,点击添加 我们前往域名管理系统,记录下绿色的值以腾讯云的…

部署Netlify站点博客

Netlify站点部署静态博客 今天尝试把站点部署在Netlify上,因为部署在GitHub Pages上,国内访问速度太慢了,所以就尝试一下别的站点,部署成功之后发现速度还是不太行,后边继续找找原因 Netlify 部署的地址在这里 下图…

使用Hexo+github+netlify快速搭建个人博客网站

1 写在开头 倒腾了好几天,算是做出了一个有点样子的个人博客网站。便学各位大佬也写一个搭建教程,总结一下个人踩坑经验,也希望能对他人略有作用。 博客演示(欢迎来留言交流) 为什么选择Hexo?答&#xff1…

使用 netlify 部署你的前端应用

我前几天写了一篇文章, 如果你想搭建一个博客 ,其中提到了使用 netlify 做博客托管服务。 netlify 可以为你的静态资源做托管,就是说它可以托管你的前端应用,就像 github page 那样。不过,它不又只像 github page 那么…

netlify国内快吗

Netlify国内快吗? Netlify vs 21云盒子 Netlify 是一家提供 JamStack(静态网站)托管的平台,支持自动从Github等仓库拉取代码, 按自定义构建方式进行构建,最后把生成的静态网站进行发布; 在这基础上同时也支持自定义域名,自动申请SSL证书等…

Netlify前端自动化部署工具

一、使用github或者gitlab登陆netlify 首先,打开netlify网站(https://app.netlify.com/) 然后使用github或者gitlab账号登录。 二、根据github/gitlab仓库创建网站 点击New site from Git按钮: 根据你的仓库所在平台选择,以下三选一&#x…

使用netlify实现自动化部署前端项目(无服务器版本)

介绍 本文以 github仓库进行介绍关联netlify的无服务前端自动化部署。用途:个人网站设计、小游戏等当然这只是让你入门~具体细节等待你自己去探索 实现 打开官方网站 如果没有注册过的账户,你需要使用 github 去进行登录。注册完成后会自动给你提示填…

Netlify静态资源托管之部署自动化

关注「WeiyiGeek」公众号 将我设为「特别关注」,每天带你玩转网络安全运维、应用开发、物联网IOT学习! 0x00 基础介绍 0x01 Netlify 使用 0x00 基础介绍 Q: Netlify 是什么? Netlify 是一个提供静态资源网络托管的综合平台,一个直观的基于…

如何使用netlify部署vue应用程序

什么是Netlify? Netlify是一个现代网站自动化系统,其JAM架构代表了现代网站的发展趋势。所谓JAM,就是指基于客户端JavaScript、可重用API和预构建Markup标记语言的三者结合。 有了Netlify,我们只要在本机Git中写前端代码&#xff…

C语言:strlen() --- 计算字符串长度

C语言 基础开发----目录 一、strlen() 简介 1. 函数原型 unsigned int strlen(char *str);2. 参数 str - - 要计算长度字符串的地址指针 3. 功能 计算给定字符串的字节长度&#xff0c;直到空字符结束&#xff0c;但不包括空字符。 4. 头文件 #include <string.h>…

C语言 计算字符串的长度

方法一&#xff1a; #include<stdio.h> int length(char *s){char *ps;while(*p!\0){ //等同于 *pp;}return p-s; } void main(){char s[32];printf("请输入一个字符串&#xff1a;");scanf("%s",&s);printf("长度为&#xff1a;%d",l…

计算字符串长度的五种方法

方法一&#xff1b; ------------------------------------------------------------ 方法二; ------------------------------------------------------------ 方法三&#xff1b; ------------------------------------------------------------ 方法四利用sizeof()&#x…

计算字符串长度

用三种方法计算字符串的长度&#xff1a; 字符串&#xff1a;“abcd”&#xff0c;在储存的时候&#xff0c;字符串的最后一位会以一个终止符 \0&#xff0c;所以求取的就是终止符前的字符数。 1.计数器方式 通过设置一个计数器&#xff0c;然后用指针字符串从头扫描&#xf…

计算字符串长度的三种方法(库函数 指针 )【详解】

目录 求字符串长度的一般原理方法一&#xff1a;strlen函数函数原型使用方法 方法二:指针整数方法三&#xff1a;指针-指针总结&#xff1a; 求字符串长度的一般原理 求字符串长度简单来说就是计算一个字符串(字符数组)中元素的个数即从数组头部计数&#xff0c;直到遇到字符串…

微信小程序怎么开发(小程序开发文档)

微信小程序是一种全新的连接用户与服务的方式&#xff0c;它可以在微信内被便捷地获取和传播&#xff0c;同时具有出色的使用体验。 2017年1月9日~2018年1月9日&#xff0c;小程序正式上线一周年。上线以来&#xff0c;小程序不断地释放新能力&#xff0c;迭代更新&#xff0c;…

【小程序】一文带你了解微信小程序开发(小程序注册/开发工具的下载)

&#x1f41a;作者简介&#xff1a;苏凉&#xff08;专注于网络爬虫&#xff0c;数据分析&#xff0c;正在学习前端的路上&#xff09; &#x1f433;博客主页&#xff1a;苏凉.py的博客 &#x1f310;系列专栏&#xff1a;小程序开发基础教程 &#x1f451;名言警句&#xff1…

小程序设计文档

状态码介绍 {status: 状态码msg: 消息data: 响应数据 }code解释0success1error10need_login2illegal_argument 介绍 用到的接口 小程序登陆能获取的信息有 wx.request的返回为 data里面包的是后端服务器返回的值 小程序登陆时序图 登陆流程 微信小程序wx.login()拿到…

微信小程序技术文档

1.只显示用户头像和名称&#xff08;简化代码&#xff09; <!-- 如果只是展示用户头像昵称&#xff0c;可以使用 <open-data /> 组件 --> <open-data type"userAvatarUrl"></open-data> <open-data type"userNickName"><…

微信小程序开发者文档 开放文档 地址

最好的微信小程序开发参考书籍——微信小程序开发者文档 开放文档 微信小程序开发者文档地址 &#x1f9e9;微信官方文档&#xff1a;https://developers.weixin.qq.com/doc

微信小程序(原生):基本开发相关文档

1、微信公众平台&#xff08;后台登录页&#xff09;&#xff1a; https://mp.weixin.qq.com/ 2、微信小程序官网文档&#xff08;组件api等&#xff09;&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/component/audio.html 3、微信开放社区&#xff08;问题…