您的位置:首页 > 其它

Managed code and Unmanaged code

2010-09-06 17:55 337 查看
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"/@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:宋体;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->

What Is Managed Code?

Managed Code is what Visual Basic .NET and C# compilers create. It compiles to
Intermediate Language (IL), not to machine code that could run directly on your
computer. The IL is kept in a file called an assembly, along with metadata that
describes the classes, methods, and attributes (such as security requirements)
of the code you've created. This assembly is the one-stop-shopping unit of
deployment in the .NET world. You copy it to another server to deploy the
assembly there—and often that copying is the only step required in the
deployment.

Managed code runs in the Common Language Runtime. The runtime offers a wide
variety of services to your running code. In the usual course of events, it
first loads and verifies the assembly to make sure the IL is okay. Then, just
in time, as methods are called, the runtime arranges for them to be compiled to
machine code suitable for the machine the assembly is running on, and caches
this machine code to be used the next time the method is called. (This is
called Just In Time, or JIT compiling, or often just Jitting.)

As the assembly runs, the runtime continues to provide services such as
security, memory management, threading, and the like. The application is
managed by the runtime.

Visual Basic .NET and C# can produce only managed code. If you're working with
those applications, you are making managed code. Visual C++ .NET can produce
managed code if you like: When you create a project, select one of the
application types whose name starts with .Managed., such as .Managed C++
application..

What Is Unmanaged Code?

Unmanaged code is what you use to make before Visual Studio .NET 2002 was
released. Visual Basic 6, Visual C++ 6, heck, even that 15-year old C compiler
you may still have kicking around on your hard drive all produced unmanaged
code. It compiled directly to machine code that ran on the machine where you
compiled it—and on other machines as long as they had the same chip, or nearly
the same. It didn't get services such as security or memory management from an
invisible runtime; it got them from the operating system. And importantly, it
got them from the operating system explicitly, by asking for them, usually by
calling an API provided in the Windows SDK. More recent unmanaged applications
got operating system services through COM calls.

Unlike the other Microsoft languages in Visual Studio, Visual C++ can create
unmanaged applications. When you create a project and select an application
type whose name starts with MFC, ATL, or Win32, you're creating an unmanaged
application.

This can lead to some confusion: When you create a .Managed C++ application.,
the build product is an assembly of IL with an .exe extension. When you create
an MFC application, the build product is a Windows executable file of native
code, also with an .exe extension. The internal layout of the two files is
utterly different. You can use the Intermediate Language Disassembler, ildasm,
to look inside an assembly and see the metadata and IL. Try pointing ildasm at
an unmanaged exe and you'll be told it has no valid CLR (Common Language
Runtime) header and can't be disassembled—Same extension, completely different
files.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: