.NET Framework 框架的一些简单介绍
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)CTS(Common Type System,公共类型系统)。【定义了一组丰富的内置类型,以及每种类新固有的、独有的特性;最重要的特征之一是所有类型都继承自公共的基类Object类】
2)CLS(Common Language Specification,公共语言规范)。【说明了.NET兼容编程语言的规则、属性和行为,其主题包括数据类型、类结构和参数传递】
3)CIL(Common Intermediate Language,公共中间语言)。
4)CLR(Common Language Runtime,公共语言运行库)。
5)BCL(Base 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自动从内存中删除程序不在访问的对象】
4)互操作性。【不同.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,欧洲计算机制造商协会)
.NET Framework 框架的一些简单介绍的更多相关文章
- Spring Batch框架流程的简单介绍
Spring Batch流程介绍: 上图描绘了Spring Batch的执行过程.说明如下: 每个Batch都会包含一个Job.Job就像一个容器,这个容器里装了若干Step,Batch中实际干活的也 ...
- Spring Framework简单介绍
Spring Framework 学习java编程不知不觉已经三年时间了,開始的时候,总是喜欢看着视频,然后按部就班的敲打着键盘,每当系统正常执行后.心里乐开了花.最開始的时候,所有的代 ...
- iOS开发网络篇—简单介绍ASI框架的使用
iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...
- Node.js简单介绍并实现一个简单的Web MVC框架
编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...
- Django - Django框架 简单介绍
Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...
- jQuery系列 第一章 jQuery框架简单介绍
第一章 jQuery框架简单介绍 1.1 jQuery简介 jQuery是一款优秀的javaScript库(框架),该框架凭借简洁的语法和跨平台的兼容性,极大的简化了开发人员对HTML文档,DOM,事 ...
- Django_rest framework 框架介绍
restful介绍 restful协议 一切皆是资源,操作只是请求方式 URL 设计 原先的URL设计方式 在url 中体现出操作行为 /books/ books /books/add/ addbo ...
- Django REST framework框架介绍和基本使用
Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...
- 第一次玩博客,今天被安利了一个很方便JDBC的基于Spring框架的一个叫SimpleInsert的类,现在就来简单介绍一下
首先先对这段代码的简单介绍,我之前在需要操作JDBC的时候总是会因为经常要重新写SQL语句感到很麻烦.所以就能拿则拿不能拿的就简单地封装了一下. 首先是Insert.Spring框架的JDBC包里面的 ...
随机推荐
- MySql 存储过程及调用方法
存储过程实例: DELIMITER $$drop procedure if exists ff $$CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PRO ...
- VR软件定制外包团队:国内设备开发公司已超90家
昨日是UNITE 2015 BEIJING大会的第二天,相比于新手训练营和VR Day活动,昨天的大会更加注重分享和展示.Unity 创始人David Helgason在也大会上进行了Unity 5 ...
- 一种扩大View点击范围的方法
Rect rect = new Rect();mBt0.getHitRect(rect); rect.bottom += 400; TouchDelegate touchDelegate = new ...
- 一. DotNet MVC4.0+EasyUI Web简单框架-前言
之所以说它简单,是因为仅仅用了大家最熟悉的三层架构,简单明了 1.先新建一个MVC4.0 Web项目 2.添加EasyUI的引用,放到Script底下 http://files.cnblogs.com ...
- git学习1:git安装和配置
Git是什么?世界上最先进的分布式版本控制系统,记录了一个文本文件的每次一修改信息,比如,一篇散文,从草稿到最终出版,经历过无数次修改,修改了标点符号形成一个版本,老师帮助修改形成一个版本,同学帮忙修 ...
- vue.js 2.0开发(3)
组件化 Vue.component('todo-items',{ }); 定义组件,首先是标签的名字todo-items,然后里面还要配置一些选项,首先是我们的模板template,里面需要填入的内容 ...
- 别人整理的DP大全(转)
动态规划 动态规划 容易: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...
- iOS开发 - OC - 苹果为大家提供的后台:CloudKit 的简单使用
一.什么是cloudKit 移动开发中,网络请求数据是日常中用到的,我们习惯把一些用户改动的数据存在服务器,以便下次请求使用.或者开发者方通过服务器将编辑的数据发送给用户.但是这一切都建立在我们的AP ...
- Python-Numpy函数-tile函数
tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...
- html基础 1
大三已经快要结束的时候才意识到自己真的一点东西都没有学到,然后就决定要在大四结束前能学多少是多少,自己要尽力.之所以要开博客是因为自己总是坚持不了,要给自己一个坚持下去的动力所以开始了.慢慢的一步一步 ...