[b]托管代码:[/b]由公共语言运行时(Common Language Runtime)执行的代码,即以CLR为目标的代码。
[b]非托管代码:[/b]不以CLR为目标的代码。
.NET Framework 可由非托管组件承载,这些组件将公共语言运行时加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境。.NET Framework 不但提供若干个运行时宿主,而且还支持第三方运行时宿主的开发。
参考资料:[url]http://msdn.microsoft.com/zh-cn/library/zw4w595w.aspx[/url]
[b]托管代码的的执行过程:[/b]
1.选择编译器。
为获得公共语言运行时提供的优点,必须使用一个或多个针对运行时的语言编译器。
2.将代码编译为 MSIL。
编译将源代码翻译为 Microsoft 中间语言 (MSIL) 并生成所需的元数据。
3.将 MSIL 编译为本机代码。
在执行时,实时 (JIT) 编译器将 MSIL 翻译为本机代码。在此编译过程中,代码必须通过验证过程,该过程检查 MSIL 和元数据以查看是否可以将代码确定为类型安全。
4.运行代码。
参考资料:[url]http://msdn.microsoft.com/zh-cn/library/k5532s8a.aspx[/url]
[b]非托管代码:[/b]不以CLR为目标的代码。
.NET Framework 可由非托管组件承载,这些组件将公共语言运行时加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境。.NET Framework 不但提供若干个运行时宿主,而且还支持第三方运行时宿主的开发。
参考资料:[url]http://msdn.microsoft.com/zh-cn/library/zw4w595w.aspx[/url]
[b]托管代码的的执行过程:[/b]
1.选择编译器。
为获得公共语言运行时提供的优点,必须使用一个或多个针对运行时的语言编译器。
2.将代码编译为 MSIL。
编译将源代码翻译为 Microsoft 中间语言 (MSIL) 并生成所需的元数据。
3.将 MSIL 编译为本机代码。
在执行时,实时 (JIT) 编译器将 MSIL 翻译为本机代码。在此编译过程中,代码必须通过验证过程,该过程检查 MSIL 和元数据以查看是否可以将代码确定为类型安全。
4.运行代码。
参考资料:[url]http://msdn.microsoft.com/zh-cn/library/k5532s8a.aspx[/url]
本文介绍了托管代码和非托管代码的概念及区别,详细解析了.NET Framework如何支持这两种类型的代码在一个环境中共存,并阐述了托管代码从源代码到可执行本机代码的整个流程。
757

被折叠的 条评论
为什么被折叠?



