托管代码:由公共语言运行时(Common Language Runtime)执行的代码,即以CLR为目标的代码。
非托管代码:不以CLR为目标的代码。
.NET Framework 可由非托管组件承载,这些组件将公共语言运行时加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境。.NET Framework 不但提供若干个运行时宿主,而且还支持第三方运行时宿主的开发。
参考资料:
http://msdn.microsoft.com/zh-cn/library/zw4w595w.aspx
托管代码的的执行过程:
1.选择编译器。
为获得公共语言运行时提供的优点,必须使用一个或多个针对运行时的语言编译器。
2.将代码编译为 MSIL。
编译将源代码翻译为 Microsoft 中间语言 (MSIL) 并生成所需的元数据。
3.将 MSIL 编译为本机代码。
在执行时,实时 (JIT) 编译器将 MSIL 翻译为本机代码。在此编译过程中,代码必须通过验证过程,该过程检查 MSIL 和元数据以查看是否可以将代码确定为类型安全。
4.运行代码。
参考资料:
http://msdn.microsoft.com/zh-cn/library/k5532s8a.aspx
分享到:
相关推荐
3. 错误处理:托管代码和非托管代码的错误处理机制不同,需要适当地转换异常和错误信息,以确保两者之间的兼容性。 4. 平台兼容性:非托管DLL可能依赖特定的操作系统或硬件,因此在跨平台项目中需谨慎使用。 总结...
托管代码和非托管代码之间的交互是通过 CLR 实现的,CLR 负责将托管代码和非托管代码之间的数据交换。 封送处理的方向属性 在封送处理中,方向属性扮演着非常重要的角色。方向属性是指 InAttribute 和 ...
ASP.NET中的托管代码和非托管代码是两种不同的代码执行方式,它们在.NET框架中扮演着重要的角色。了解这两种代码类型对于开发高效、安全且可维护的.NET应用至关重要。 托管代码,顾名思义,是由.NET运行时环境(也...
### 托管代码与非托管代码详解 #### 一、托管代码的概念与优势 托管代码是一种新型的技术,尤其在...总之,托管代码与非托管代码各自具有不同的特点和应用场景,选择哪种类型的代码取决于具体的开发需求和技术背景。
《Delphi.NET 托管与非托管代码》是由知名IT专家李维撰写的一本书,主要探讨了.NET框架下的编程模型,特别是如何在托管代码和非托管代码之间进行交互。这本书对于理解.NET平台的核心机制和跨语言互操作性具有重要的...
### 非托管代码访问托管代码 #### 概述 在.NET框架中,代码主要分为两种类型:托管代码(Managed Code)与非托管代码(Unmanaged Code)。托管代码是指通过.NET运行时(如Common Language Runtime, CLR)进行管理...
非托管代码回调方法的实现是将托管代码与非托管代码(如C++或原生DLL)集成的关键技术。在.NET框架中,托管代码是由CLR(Common Language Runtime)管理的,而非托管代码则不受其控制。当需要从非托管代码调用托管...
- 理解托管代码和非托管代码之间的内存管理差异,防止内存泄漏。 - 使用适当的数据类型转换,因为不同的语言可能对数据类型有不同的表示。 - 处理异常和错误,特别是非托管代码中的异常,因为它们可能不会自动抛出给...
总之,`extern`关键字和P/Invoke是C#调用非托管代码的关键技术,它们为.NET开发者提供了与本机API和非托管库交互的能力。理解并正确使用这些技术,可以帮助开发者充分利用现有的非托管资源,扩展.NET应用程序的功能...
`MarshalAsAttribute` 是用于指定如何在托管代码和非托管代码之间转换数据类型的。当非托管代码期待某种特定的数据格式时,我们可以使用这个特性来指导 .NET 进行正确的封送。例如,`UnmanagedType.LPWStr` 表示 ...
封送处理是.NET Framework提供的服务,用于在托管和非托管代码之间转换数据类型。系统自动处理一些基本类型,但对于复杂的数据结构,开发者可能需要自定义封送规则。 6. **安全性考虑** 与非托管代码交互可能引入...
它允许开发者在同一代码库中混合编写托管代码和非托管代码,提供了一个桥梁连接.NET世界和传统C++世界。关键字如`gcnew`、`^`、`cli`等都是C++/CLI的特色。 5. **互操作的安全性和性能**:虽然互操作使得代码复用变...
综上所述,托管代码机制不仅极大地提升了应用程序的性能和安全性,而且还简化了开发过程,使开发者能够更专注于业务逻辑而非底层技术细节。对于希望充分利用.NET框架的强大功能的开发者来说,了解并掌握托管代码机制...
例如,通过托管C++(Managed Extensions for C++),开发者可以在C++项目中同时使用托管和非托管代码,这使得在已有C++代码基础上迁移到.NET平台成为可能。托管C++允许在C++中使用.NET特性,如托管类、接口和属性,...
首先,我们需要理解什么是托管代码和非托管代码。托管代码是在.NET Framework环境下运行的代码,它由CLR(Common Language Runtime)管理,提供了内存管理、异常处理和类型安全等特性。而非托管代码,通常是C++、C或...
首先,我们需要理解什么是托管代码和非托管代码。托管代码是指运行在.NET Framework的Common Language Runtime (CLR)之上的代码,它由.NET编译器生成,并且享受垃圾回收、类型安全等特性。而非托管代码,如C++编写的...
### C#调用非托管代码的关键知识点 #### 1. 不返回值的参数 当C#需要调用一个不返回值的非托管函数时,主要关注的是如何将参数正确地从C#传递到非托管环境中。 **C++ 原型:** ```cpp bool SendNewSms(char* szTel,...
首先,我们要理解什么是托管代码和非托管代码。托管代码是指由CLR管理的代码,它享受诸如内存管理、异常处理、类型安全等服务。相反,非托管代码通常指的是像C++这样的原生代码,它不依赖于CLR,而是直接与操作系统...