第一章:.NET体系结构(1)

这篇具有很好参考价值的文章主要介绍了第一章:.NET体系结构(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、C#与.NET的关系

  C#编译器专门用于.NET,这表示用C#编写的所有代码总是在.NET Framework中运行。对于C#语言来说,可以得出两个重要的结论:
(1)C#的结构和方法论发硬了.NET基础方法论。
(2)在许多情况下,C#的特定语言功能取决于.NET的功能,或依赖于.NET基类。
C#的重要性体现在以下两个方面:

  • 它是专门与Microsoft的.NET Framework一起使用而设计的(.NET Framework是一个功能非常丰富的平台,可开发、部署和执行分布分布式应用程序)。
  • 它是一种基于现代面向对象设计方法的语言,在设计它时,Microsoft还吸取了其他所有类似语言的经验。
    C#就其本身而言只是一种语言,尽管它时用于生成面向.NET环境的代码,但它本省不是.NET的一部分。.NET支持的一些特性,C#并不支持。而C#语言支持的另一些特性,.NET却不支持(如运算符重载)!

2、公共语言运行库

  .NET Framework的核心是其运行库执行环境,称为公共语言运行库(CLR)或.NET运行库。通常将在CLR控制性运行的代码称为托管代码(managed code)。
  但是,在CLR执行编写好的源代码(使用C#或其他语言编写的代码)之前,需要编译它们。在.NET中,编译分为两个阶段:
(1)将源代码便以为Microsoft中间代码(IL)。
(2)把CLR把IL便以为平台专用的代码。
  Microsoft中间语言与Java关键字共享一种理念:它们都是低级语言,语法很简单(使用数字代码,而不是文本代码),可以非常快速地转换为本地机器码。对于代码,这种精心设计的通用语法有很重要的优点:平台无关性、提高性能和语言的互操作性。

2.1、平台无关性

  首先,这意味着包含字节码指令的同一文件可以放在任一平台中。运行时编译过程的最后阶段可以很轻松地完成,这样底阿妈就可以运行在特定的平台上。换言之,便以为中间语言就可以获得.NET平台无关性,这与便以为Java字节码就会得到Java平台无关性是一样的。

2.2、提高性能

  实际上,IL比Java字节码的作用还要大。IL总是即时编译的(称为JIT编译),而Java字节码常常是解释性的。Java的一个缺点是,在运行应用程序时,把Java字节码转换为内部可执行代码的过程会导致心梗的损失。
  JIT编译器并不是把整个应用程序一次编译完(这样会有很长的启动时间),而是只编译它调用的那部分代码(这是其名称由来)。代码编译过一次后,得到的本地可执行程序就存储起来,直到退出该应用程序为止,这样在下次运行这部分代码时,就不需要重新编译了。
  托管IL代码几乎和本地机器代码的执行速度一样快,其原因是编译过程的最后一部分是在运行时进行的,JIT编译器确切地直到程序运行在什么类型的处理器上,可以利用该处理器提供的任何特征或特定的机器代码指令来优化最后的可执行代码。
  传统的编译器会优化代码,但他们的优化过程是独立于运行代码的特定处理器的。这是因为传统的编译器是在发布软件之前编译为本地机器可执行的代码。即编译器不知道运行代码的处理器的类型,

1.2.3、语言的互操作性

  使用IL不仅支持平台无关性,还支持语言的互操作性。简而言之,就是能将任何一种语言编译为中间语言,编译为中间语言的代码可以与从其他语言编译过来的代码进行交互操作。
(1)VB
(2)VC++

C++的一个有趣的问题是在编译成托管代码时,编译器可以生成包含在内嵌本地可执行程序的IL。这表示在C++代码中可以把关关类型和非托管类型合并起来,因此托管C++代码:

class MyClass

定义了一个普通的C++类,而代码:

ref class MyClass

生成了一个托管类,就好像使用C#或VB2012编写类一样。实际上,托管C++代码比C#代码更优越的一点是可以在托管C++代码中调用非托管C++类,而不必此阿勇COM互操作功能。
  如果在托管类型上使用使用.NET不支持的特性(例如,模板或类的多继承),编译器就会出现一个错误。另外,在使用退关类时,还需要使用非标准C++功能。
  编写使用.NET的C++程序会得到几种不同的互操作性场景。使用编译器设置/clr启用公共语言运行库支持时,就可以完全混合所有的本地和托管C++功能。其他选项可以限制C++指针的使用,从而像使用C#和VB那样编写安全的代码。
(3)COM和COM+
从技术上讲,COM和COM+并不是面向.NET的技术,因为基于它们的组件不能便以为IL(但如果原来的COM组件是用C++编写的,那么使用托管C++在某种程度上可以这么做)。但是,COM+仍然是一个重要工具,因为它包含一些.NET不具备的特性。另外,COM组件仍可以使用–.NET继承了COM的互操作性,从而使托管代码可以调用COM组件,COM组件也可以调用托管代码。一般情况下,把新组建编写为.NET组件,大多是为了方便,因为这样可以利用.NET基类和托管代码的其他优点。
(4)Windows运行库文章来源地址https://www.toymoban.com/news/detail-501433.html

到了这里,关于第一章:.NET体系结构(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【从零开始学JVM】第一章_JVM和java体系结构

    Java是一门跨平台的语言 Java 语言的特点包括: 跨平台性 :Java 程序可以在不同操作系统上运行,只需安装对应平台的 Java 虚拟机(JVM)即可。 面向对象 :Java 是一种纯粹的面向对象编程语言,支持封装、继承、多态等面向对象特性。 健壮性 :Java 在设计时考虑了许多安全检

    2024年02月20日
    浏览(34)
  • 计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器优化和硬件预取(六)

    处理器和主内存之间不断扩大的性能差距促使编译器编写者仔细检查内存层次结构,看看编译时优化是否可以提高性能。再次,研究分为指令缺失的改进和数据缺失的改进。接下来介绍的优化可以在许多现代编译器中找到。 有些程序具有嵌套循环,以非连续的顺序访问内存中

    2024年02月12日
    浏览(67)
  • 计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器控制的预取和利用HBM扩展内存层次(七)

    硬件预取的替代方案是编译器在处理器需要数据之前插入预取指令来请求数据。 预取有两种类型: ■ 寄存器预取将值加载到寄存器中。 ■ 高速缓存预取仅将数据加载到高速缓存。 这两种类型都可以分为有错或无错的,即预取的地址是否会导致虚拟地址错误或保护错误的异

    2024年02月13日
    浏览(52)
  • 计算机组成与体系结构第一次试验:运算器实验

    为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正! 掌握使用算术逻辑运算器 74LS181 进行算术运算、 逻辑运算的方法。 掌握基于“累加-移位”原理的串

    2024年02月04日
    浏览(50)
  • RISC-V体系结构的U-Boot引导过程 第一阶段

    RISC-V体系结构的U-Boot引导过程 第一阶段 flyfish .globl使符号对链接器可见相当于C语言中的Extern,声明此变量,并且告诉链接器此变量是全局变量,外部可以访问.u-boot.lds里的ENTRY(_start)也是这里的_start。 即指定入口为_start,_start就是整个start.S的开始的地方,是整个uboot的代码的开

    2024年02月10日
    浏览(40)
  • 【Azure】微软 Azure 基础解析(五)核心体系结构之管理组、订阅、资源和资源组以及层次关系

    本系列博文还在更新中,收录在专栏:「Azure探秘:构建云计算世界」 专栏中。 本系列文章列表如下: 【Azure】微软 Azure 基础解析(三)描述云计算运营中的 CapEx 与 OpEx,如何区分 CapEx 与 OpEx 【Azure】微软 Azure 基础解析(四)Azure核心体系结构组件之数据中心、区域与区域

    2024年02月07日
    浏览(57)
  • Res2Net: 一种新的多尺度主干体系结构(Res2Net: A New Multi-scale Backbone Architecture )

    如图1所示,视觉模式在自然场景中以多尺度出现。首先, 对象可以在单个图像中以不同的尺寸 出现,例如,沙发和杯子具有不同的尺寸。其次, 对象的基本上下文信息可能比对象本身占据更大的区域 。例如,我们需要依靠大桌子作为上下文,以更好地判断放置在桌子上的

    2024年02月13日
    浏览(55)
  • 软件设计模式与体系结构-软件体系-层次软件体系结构

    层次之间存在接口, 通过接口形成call/return的关系 ,上层是下层的客户端 层次系统的基本构件: 各层次内部包含的构件 连接件: 层间的交互协议 拓扑结构: 分层 拓扑约束: 对相邻层间交互的约束 层次软件体系结构(Layered Software Architecture)是一种常见的软件设计模式,

    2024年02月13日
    浏览(53)
  • OSI体系结构和TCP/IP体系结构

     在第一章( 计网第一章 )的时候,曾经提到过OSI体系结构和TCP/IP体系结构,并对它们进行了简单的对比。这篇博客在其基础上进行更深层次的理解。 计算机网络在逻辑功能上可以分为通信子网和资源子网两部分。 事实上,OSI将低三层称为通信子网,即为了联网而附加的通

    2024年02月07日
    浏览(75)
  • 【体系结构】山东大学计算机体系结构知识点清单

    涵盖所有考点,复习绝对高效,点赞+留邮箱获取pdf版本 1. 计算机系统的层次结构 语言实现的两种基本技术: 翻译:先把 N+1 级程序全部转换成 N 级程序后,再去执行新产生的 N 级程序,在执行过程中 N+1 级程序不再被访问。 解释:每当一条 N+1 级指令被译码后,就直接去执

    2024年02月11日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包