托管代码和非托管代码的区别


立即下载 喜欢一个人丶
2024-03-26
代码 运行 托管 语言 编译 程序 Visual 非托管 .NET 方法
10 KB

托管代码和非托管代码的区别
什么是托管代码 (managed code)?
托管代码是一 microsoft 的中间语言 (IL) ,他主要的作用是
在 .NET FRAMEWORK的公共语言运行库 (CLR)执行代码前去编译源代
码,也就是说托管代码充当着翻译的作用, 源代码在运行时分为两个
阶段: 1. 源代码编译为托管代码 ,(所以源代码可以有很多种,
如 VB,C#,J#) 2. 托管代码编译为 microsoft 的平台专用语言。
编译器把代码编译成中间语言 (IL) ,而不是能直接在你的电脑
上运行的机器码。课工场中关村软件学院 中间语言被封装在一个叫
程序集 (assembly) 的文件中,程序集中包含了描述你所创建的类, 方
法和属性 (例如安全需求 )的所有元数据。你可以拷贝这个程序集到另
一台服务器上部署它。
托管代码在公共语言运行库 (CLR)中运行。这个运行库给你的
运行代码提供各种各样的服务,通常来说,他会加载和验证程序集,
以此来保证中间语言的正确性。 当某些方法被调用的时候, 运行库把
具体的方法编译成适合本地计算机运行的机械码, 课工场中关村软件
学院 然后会把编译好的机械码缓存起来, 以备下次调用。 (这就是即
时编译 )随着程序集的运行,运行库会持续地提供各种服务,例如自
动垃圾回收、运行库类型检查和安全支持等。 这些服务帮助提供独立
于平台和语言的、统一的托管代码应用程序行为。
Visual Basic .NET和 C#只能产生托管代码。如果你用这类语
言写程序,那么所产生的代码就是托管代码。如果你愿意, Visual
C++ .NET可以生成托管代码。课工场中关村软件学院 当你创建一个
项目的时候,选择名字是以 .Managed开头的项目类型。例如 .Managed
C++ application 。
什么是非托管代码 (unmanaged code)?
非托管代码就是在 Visual Studio .NET 2002 发布之前所创建
的代码。例如 Visual Basic 6, Visual C++ 6, 最糟糕的是,连那
些依然残存在你的硬盘中、拥有超过 15年历史的陈旧 C编译器所产
生的代码都是非托管代码。课工场中关村


代码/运行/托管/语言/编译/程序/Visual/非托管/.NET/方法/ 代码/运行/托管/语言/编译/程序/Visual/非托管/.NET/方法/
-1 条回复
登录 后才能参与评论
-->