2000年,微软向全球宣布其革命性的软件和服务平台,它就是后来的Microsoft.NET,简称.NET。该平台利用以互联网为基础的计算和通讯的特点,通过先进的软件技术和众多的智能设备,提供更简单、更个性化、更有效的互联网服务。 .NET的战略目标是在任何的时候,任何地方,任何工具都能通过.NET的服务获得网络上的任何信息,享受网络带给人们的便捷与快乐。通过10年发展和时间的考验,证明它的确是一个非常好的软件开发技术和网络服务平台,值得我们很好的学习和研究。

  .NET 就是微软的 XML(Extensible Markup Language) Web 服务平台。该平台包含广泛的产品系列,它们都是基于 XML 和 Internet 行业标准构建,提供从开发、管理、使用到体验 XML Web 服务的每个方面。更具体地说,它正在创建新一代软件工具、服务器、XML Web 服务、客户端和 .NET 体验五个方面。

.NET开发技术可分为两部分内容,一是应用程序得以运行的框架.NET Framework,是.NET应用程序运行的平台;二是.NET的开发环境Visual Studio.NET,是一个集成开发环境IDE(Integrated Development Environment)。目前常用的是.NET Framework 3.5 和Visual Studio 2008 。但最近已经有了.NET Framework 4和Visual Studio 2010。

  .NET框架(Framework )包含两部分内容:公共语言运行时(CLR)和基础类库(FCL)。

类库就是存放类的库,这些类我们可以直接使用,它们封装了文件的操作、数据库操作、线程、XML解析等一系列的高级应用。我们可以使用.NET框架提供大约7000多个类来建立我们自己的应用程序。下面我们来看一下


1. .net 架构图

2. CLR(公共语言运行时)

  公共语言运行时CLR(Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用程序和底层操作系统之间必要的分离和协作。同时CLR也是一种多语言执行环境,支持众多的数据类型和语言特性。他管理着代码的执行,并使开发过程变得更加简单。这是一种可操控的执行环境,其功能通过编译器与其他工具共同展现。

  为了提高平台的可靠性,以及为了达到面向事务的电子商务应用所要求的稳定性级别,CLR还要负责其他一些任务,比如监视程序的运行。按照.NET的说法,在CLR监视之下运行的程序属于“托管”(managed)代码,而不在CLR之下、直接在裸机上运行的应用或者组件属于“非托管”(unmanaged)的代码。

  CLR将监视形形色色的常见编程错误,许多年来这些错误一直是软件故障的主要根源,其中包括:访问数组元素越界,访问未分配的内存空间,由于数据体积过大而导致的内存溢出,等等。

  CLR另一个作用是它可以实现跨平台,条件是在操作系统上安装.NET Framework,安装了公共语言运行时的操作系统就可以识别和运行中间语言代码。当然,.NET里面的CLR和Java里面的虚拟机JVM是不同的,Java里面的虚拟机是解释执行的,而CLR是编译执行的,即在应用程序第一次被调用时一次性编译成机器码再执行,这样做比解释执行的效率更高。

3. 微软中间语言(MSIL)

  微软中间语MSIL(Microsoft Intermediate Language) 是一种类似Java字节码的语言,它是一种介于高级语言和机器语言之间的伪汇编语言。当用户编译一个.NET程序时,编译器将源代码翻译成MSIL代码,它是一组可以有效地转换为本机代码且独立于CPU的指令。当执行这些指令时,实时(JIT)编译器将它们转化为CPU特定的代码。由于公共语言运行时支持多种实时编译器,因此同一段MSIL代码可以被不同的编译器实时编译并运行在不同的结构上。

  从理论上来说,MSIL将消除不同语言之间难以互相调用的问题,例如,一道程序使用C#而另一部分是VB.NET,但是最后这些代码都将被转换为中间语言。这给程序员提供了极大的灵活性,他们可以选择自己熟悉的语言,并且再也不用为学习不断推出的新语言而烦恼了。

  当程序被编译为托管代码时,编译器将源代码翻译为MSIL代码,这是一组可以有效地转换为本机代码且独立于 CPU 的指令。MSIL 包括用于加载、存储和初始化对象以及对对象调用方法的指令,还包括用于算术和逻辑运算、控制流、直接内存访问、异常处理和其他操作的指令。要使代码可运行,必须先将 MSIL 转换为特定于 CPU 的代码,这通常是通过实时编译器来完成的。由于公共语言运行时为它支持的每种计算机结构都提供了一种或多种 JIT 编译器,因此同一组 MSIL 可以在所支持的任何结构上 的JIT 编译和运行。

  当编译器产生 MSIL 时,它也产生元数据。元数据描述代码中的类型,包括每种类型的定义、每种类型的成员的签名、代码引用的成员和运行库在执行时使用的其他数据。MSIL 和元数据包含在一个可移植和可执行 (PE) 文件中,此文件基于并扩展过去用于可执行内容的已公布的 Microsoft PE 和公共对象文件格式 (COFF)。这种文件格式包含 MSIL 或本机代码以及元数据,使得操作系统能够识别公共语言运行库映像。文件中的元数据以及 MSIL 的存在使代码能够描述自身,这意味着不再需要类型库或接口定义语言 (IDL)。运行库在执行过程中根据需要从该文件中查找并提取元数据。


4. FCL基础类库(FCL:一组DLL程序集)

FCL是一组DLL程序集,包含几千个类型定义, 每个类型又有多种功能。微软还在不断地生成额外的程序库,这些额外的程序库提供了更多的类型,创造出更多的功能供你使用。开发者使用这些程序集能够创建如下几类应用程序:

WEB程序

WINDOWS程序

WPF程序

工作流程序

控制台程序

组件库: 单独的程序集,可用于前面提到的各种类型的应用程序中。

因为FCL包括成千上万个类型, 以名字空间分类展示给开发者。例如Syestem名字空间包含Object基类型,其他所有类型都可由它派生出来,此外, System名字空间包含各种基本数据类型以及格式化数据类型、产生随机数、执行各种数学函数等。所有应用程序都使用System名字空间中的类型。为了访问framwork已有的功能,你需要知道你要的功能在哪个名字空间中, 许多类型允许你定制他们的行为, 你可以从FCL类型派生出你自己的类型。面向对象的本质是.NET Framework如何提供一致的编程模式给开发者。 开发者也能很容易地创建他们自己的名字空间来包含他们自己的类型。 这些名字空间和类型无缝地合并到编程模式中, 与Win32编程模式想比, 这个新方法大大简化了软件开发。

FCL中的大多数名字空间的类型可以用于任何种类的应用程序, 表1.1列出了一些常见的名字空间并简单地描述了其中的类型的用途。这只是众多名字空间中很小一部分例子, 请参考.NET Framework SDK文档来熟悉微软提供的逐渐增长的名字空间。 在.NET平台中运行的任何语言都使用同样的类库,统一了开发模式。现在的.NET类库几乎可以用于开发任何程序,以及使用相同的开发技巧并且程序变得非常简单。

名字空间

内容描述

System

每个应用程序使用的所有基类型

System.Data

与数据库进行通讯和处理数据的类型

System.Collection

管理集合,如:堆栈、队列、列表等

System.Drawing

操作2-D图形和图像、打印等

System.IO

处理I/O和遍历文件夹与文件的类型

System.Net

允许网络通讯和网络协议的类型

System.Reflection

操作反射,查看元数据以及延迟绑定类型和成员类

System.Runtime.InteropServices

允许托管代码访问非托管OS平台的功能等

System.Security

用于保护数据和资源的类型

System.Text

不同编码文本处理的类型, 例如ASCII和Unicode

System.Threading

用于异步操作和同步访问资源的类型

System.Xml

处理XML架构和数据的类型

System.Web.Services

提供用于创建和操作Web服务的类

System.Web.UI

提供类和接口,为用户界面元素出现在您的 Web 应用程序中的 ASP.NET 服务器控件和页

System.Windows.Forms

提供Web窗体,创建基于Windows应用程序的类


转载于:https://www.cnblogs.com/wangshide/archive/2012/03/01/2376239.html

chap01 .net 基本框架介绍相关推荐

  1. python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍

    从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...

  2. 2019年上半年收集到的人工智能开源框架介绍文章

    2019年上半年收集到的人工智能开源框架介绍文章 TensorFlow基本使用 TensorFlow.js:让你在浏览器中也能玩转机器学习 人工智能学习框架TensorFlow渐近分析 TensorF ...

  3. ESFramework网络通信框架介绍之(2)――网络通信消息NetMessage

    ESFramework网络通信框架与元数据 较之C++而言,.NET是一个更加"动态"的平台,其动态能力建立在反射机制之上,而反射的基础是"元数据". 上文已经 ...

  4. dommel mysql_.Net Core AA.FrameWork应用框架介绍

    开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...

  5. Foundation框架介绍

    Foundation框架介绍 前言 在开发初期,个人发现开发主要涉及到这几个方面:语言语法使用.UIKit.Foundation, 语言是开发基础,UIkit主要负责用户界面设计,其他最常用的就是Fo ...

  6. 【Django】创建项目及框架介绍,学习笔记(一)

    [学习教程] 1.Django基础教程:https://code.ziqiangxuetang.com/django/django-tutorial.html 2.Django博客:http://ww ...

  7. 流行的9个Java框架介绍: 优点、缺点等等

    流行的9个Java框架介绍: 优点.缺点等等 在 2018年,Java仍然是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员.虽然Java不是最直接的语言,但是 ...

  8. iOS流媒体直播整个框架介绍(HLS、RTSP)

    iOS流媒体直播整个框架介绍(HLS.RTSP) 目录技术文章2016年7月17日 一.HTTP(WebService) 基于HTTP的渐进下载Progressive Download流媒体播放仅是在 ...

  9. fitnesse - 框架介绍

    fitnesse - 框架介绍 2017-09-29 目录: 1 fitnesse是什么? 2 框架介绍 3 与junit.testng比较,fitnesse教其他框架有什么优势 1 fitnesse ...

最新文章

  1. AI解决方案:边缘计算和GPU加速平台
  2. emmc linux.格式化参数,SD卡, EMMC固化 ,关于bootloader linux
  3. 【jQuery源码】整体架构
  4. 两个等号(==)和三个等号(===)的区别
  5. ScottGu之博客翻译-LINQ to SQL第四部分,更新数据库 LINQ to SQL (Part 4 - Updating our Database)...
  6. IP协议详解---Linux学习笔记
  7. Linux 没有主清单属性,maven编译正常,运行报错:中没有主清单属性
  8. string.Format 指定字符串宽度
  9. 解析数据访问层操作数据库的方式
  10. vue 监听对象里的特定数据
  11. namespace用法
  12. 数组的filter()方法
  13. Android平台中实现对XML的三种解析方式
  14. c#调用java的webservice方法,C# 调用 Java WebService | 思考的极致
  15. 计算机的基础硬件知识,计算机硬件基础知识学习_电脑硬件知识_手机硬件知识...
  16. C#中利用网口与安捷伦电源进行通信
  17. git 找回删除的文件
  18. 站队(使用插入排序完成) (Standard IO)————c++插入排序
  19. 硬盘已成为计算机性能提高瓶颈吗,固态硬盘停步 接口或已成为性能瓶颈?
  20. 颜色英文单词总汇(申明:来自于360)

热门文章

  1. OGNL、EL表达式——Struts
  2. 为Flash Builder/Professional更新Flash Player
  3. 【jQuery】学习整理(一) 认识jQuery
  4. 总奖池2.5万美元,Kaggle 新赛,单细胞分类与分割
  5. 【新无人机数据集】从行人重识别 到 无人机目标定位
  6. TensorFlow 与 PyTorch 之争
  7. The 2nd AI on Fashion and Textile International Conference 2019
  8. 视频语义显著实例分割数据集SESIV
  9. 干货!286页李宏毅《深度学习讲义》
  10. 计算机视觉论文-2021-07-01