简述C#源程序在.NET平台上的源码运行机制
.Net Framework是一个以规格为基础的开发平台。而这份规格统称为CLI(Common Language Infrastructure),源码安卓识图源码而最初由Micrsoft依据这份规格所自行实现的源码产品就是CLR 。在CLI规格中,源码又细分为四个子规格。源码CIL(Common Intermediate Language)、源码CTS(Common Type System)、源码在CTS中又细分CLS(Common Language Specification)子规格和VES(Virtual Executing System)。源码CLS包含大多数语言都能实现的源码类型,CLI规范支持CLI的源码程序语言至少必须满足CLS的规格,这样才能达到跨语言集成的源码目的。
CLR运行机制
支持CLI的程序语言必须拥有一个编译器,该编译器必须具备将源码编译成IL Code的能力,也就是CIL规格所定义的语言格式,然后交由CLR来运行。在载入IL Code之后,CLR会调用JIT Complier(Just-In-Time Complier)将这些IL Code转化为Native Code,也就是机器码来运行。
1、什么是.Net?什么是C#?
在软件开发领域,.NET 和 C# 是小商店开店源码两个重要的概念。.NET 是一个由微软推出的创新平台,用于构建各种应用程序,如 Windows 应用、Web 应用和 Web 服务等。它支持多种语言开发,包括 C#、C++、Visual Basic 等。.NET 由庞大的代码库组成,包括公共语言运行库(CLR)、类库、公共语言规范、通用类型系统、元数据和组件等。
C# 则是一个微软开发的面向对象编程语言,与.NET 深度绑定。它基于 C 和 C++,为通用语言基础结构(CLI)设计,允许在不同平台和架构上使用各种高级语言。C# 程序通过编译为托管代码(CIL,中间语言)存储在程序集中,在 CLR 下运行。CLR 是 Microsoft 对 CLI 国际标准的实现,提供实时(JIT)编译、国产一区源码异常处理、垃圾回收和资源管理等服务。
.NET Framework 是早期的 .NET 平台版本,与 Windows 操作系统深度绑定,不支持跨平台。然而,随着 web 技术、移动技术和云计算的流行,.NET Framework 的局限性逐渐显现。因此,微软重构并推出了 .NET Core,旨在实现真正的跨平台支持。.NET Core 从 .NET Framework 中提炼出核心部分,并删除了不再被认为是核心的部分。随着版本的更新,.NET Core 已经演进到 .NET,仍然受到微软的关注和更新。
总结来说,C# 是用于编写 .NET 应用程序的编程语言,而 .NET 则是一个创新平台,提供构建各种应用程序所需的开发环境和代码库。通过 C# 编写的源代码被编译成 CLI 规范的中间语言(IL),存储在程序集中,然后在 CLR 下执行,龙头抄底选股源码提供实时编译、垃圾回收等服务。.NET 和 C# 在软件开发中扮演着核心角色,共同推动着应用开发的进程。
.net 框架中托管执行环境具体是指什么
任何基于 .NET 框架编写的应用程序,.NET 框架将负责对其进行编译。.NET 框架对应用程序源代码的编译过程分为二个阶段。而普通应用程序的编译一般来说只有一步。
在第一步的编译过程中,源代码编译会产生托管模块。托管模块包含在一个物理文件中。这个物理文件被称作可移植可执行 (PE,Portable Executable) 文件。此文件主要包含了“中间语言 (MSIL)”、“元数据类型”和一些资源文件。编译过程的第二步就是JIT 编译。公共语言运行时环境(CLR) 具有一个称为 JIT 编译的功能。当应用程序需要在某个系统上运行时,此功能可以将应用程序的 MSIL 代码翻译为该系统的机器语言。这样一来,假设在两个不同类型客户端上都有相同的 .NET应用程序。当它们运行的时候,.NET应用程序将会以各自客户端系统上的机器语言来运行。
元数据类型描述了托管模块内“中间语言 (MSIL)”的人物脚下魂环源码类型、成员以及其他引用,公共语言运行库在运行时将用到此信息。所以元数据和MSIL代码在托管模块内是紧密结合在一起的,要将两者分离是不可能的。
Microsoft 中间语言 (MSIL)包含许多通用操作的指令,包括创建和初始化对象、调用对象方法的指令。另外,它还包含用于算术和逻辑运算、流控制、直接内存访问和异常处理等指令。MSIL是一种比大部分的CPU机器语言更高级的语言。
MSIL语言是编译过程的第一步,无论是VB .NET代码还是C# .NET代码,在这里都是编译成为MSIL。所以,MSIL也是运行时环境(CLR)中所使用的通用语言。
编译过程中产生的“中间语言 (MSIL)”和“元数据类型”。在.NET 框架对应用程序进行编译的过程中,可以将许多的“中间语言 (MSIL)”和“元数据类型”合并到一个程序集中。
每个程序集合并了许多的“中间语言 (MSIL)”和“元数据类型”,达到统一管理和整合的目的。
同时程序集包含了称为清单的数据块。清单是一个表,表中的每一项是程序集组成部分的文件的名称。
公共语言运行库提供了两个测试和调试MSIL代码的工具:MSIL汇编程序(Ilasm.exe)和MSIL反汇编程序(Ildasm.exe)。测试和调试完MSIL代码之后,就可以通过(JIT)实时编译器编译成可直接执行的机器码。
.NET Framework应用程序在运行过程中,在对自身资源的创建、管理和回收这些方面都有其特点。本小节将为大家介绍应用程序域和垃圾回收的相关概念。
应用程序域机制可以让许多.NET Framework应用程序在运行过程中,有自己专属的资源区域,彼此之间不受影响。同时一旦发生错误也不会导致其他运行中的应用程序的崩溃。
垃圾回收机制可以在应用程序运行完毕后,自动释放和回收系统资源。取代了以往通过手工跟踪的过程,提高系统的整体效能。
在ASP.NET中源程序代码先被生成“中间语言”(IL或MSIL),然后再进行编译,这种机制的目的是( )。
答案:B
本题考查.NET运行机制。
符合CLS规范将源代码编译成CLR所识别的“中间语言”和“元数据”。通过这样的机制,.NET框架具有了支持几乎所有语言操作的特性,只要该语言实现了将源代码编译成“中间语言”(IL或MSIL),都可以用于.NET平台的开发。
在ASP.NET中源程序代码先被生成中间代码(IL或MSIL),然后再转变成各个CPU需要的代码,实现源程序跨平台。
综合分析,本题选B。
.NET基础知识
在开发世界中,.NET框架提供了一个强大而灵活的运行环境,即公共语言运行时(CLR)。该运行时简化了代码执行的管理,赋予开发人员一个受控执行环境,通过编译器和其他工具共同作用,实现其功能。
自描述组件的一大优势在于,它们无需额外文件即可使用。类定义无需单独的头文件,从组件内元数据中直接获取。跨语言或过程边界访问组件无需特定的IDL文件、类型文件或proxy/stubs,所需信息已包含在元数据中。识别开发者请求服务属性,无需展开各自的配置信息。关键在于,元数据在编译过程中由源代码生成并与可执行代码同步保存,确保与可执行部分始终保持一致。
微软的.NET框架引入了组合体概念,将资源和类型打包成一个单元进行配置。元数据,即组合体的名单,包含类型和资源表等信息,以及如版本号等从属关系信息。开发人员可指定版本策略,决定运行时是否装入系统上已安装的最新组合体版本、指定版本或编译时使用的版本。
在操作系统中,多份相同组件可能同时存在,但通常只有一个被注册、加载至内存并执行。为了管理这种策略,.NET Framework CLR提供了支持并行配置的架构。组合体既可为单个应用程序私有,也可为多个应用程序共享,同一台机器上可同时配置多个组合体的不同版本。应用程序配置信息定义查找路径,确保运行时为同时运行的两个不同应用装入同一组合体的不同版本,从而解决组件版本不兼容问题,提高系统整体稳定性。
由于组合体是自描述的,无需在系统上进行显式注册。配置简单到将文件复制到目录中即可(如果需要安装未经组织化的组件,情况会稍显复杂)。配置信息存储在可被任意文本编辑器编辑的XML文件中。运行时提供完整的安全服务,确保未授权用户无法访问机器资源,防止代码执行未经允许的操作,增强系统整体安全性和可靠性。
运行时不仅支持代码访问安全,还支持基于角色的安全。通过代码访问安全机制,开发人员为应用程序指定完成任务所需的权限,如写文件或访问环境变量。这些信息与代码标志一同存储在配置级别上。在代码加载内存及执行方法调用时,运行时验证是否赋予代码所要求的权限。若无法赋予,记录安全冲突信息。权限策略,即信任策略,由系统管理员建立,基于代码证据,例如代码发布者、来源以及组合体中的代码标志和所需权限。开发人员可指定显然不需要的权限,以防他人滥用代码。若权限依赖于运行时才了解的信息,则可进行依赖性安全检查。
除了代码访问安全,运行时还支持基于角色的安全。基于角色的安全建立权限模板,以用户身份而非代码标志为基础。角色表明用户所属类别,在开发和配置阶段定义。分配权限策略被分配到每个预定义的角色。运行时确定用户身份,代码代表此身份运行。运行时决定用户属于哪个角色,然后给予基于该角色的权限。
2024-12-28 23:48
2024-12-28 23:33
2024-12-28 22:35
2024-12-28 21:41
2024-12-28 21:38