The first step in the managed execution process is designing the source code. If you want your application to have the benefits provided by the NGWS runtime, you must use one or more language compilers that target the runtime, such as Visual Basic, C#, Visual C++, or a Perl or COBOL compiler.
Because the runtime is a multi-language execution environment, it supports a wide variety of data types and language features. The language compiler you are using determines what subset of the runtime's functionality is available, and you design your code using the features available in your compiler. If your component is required to be completely usable by components written in other languages, you must use only language features that are included in the Common Language Specification (CLS) in your component's exported types. The syntax you use in your code is determined by the compiler, not by the runtime.
Once your code is written, you compile it, and the compiler translates it to Intermediate Language (IL) and supplies the required metadata. When you are ready to execute your code, the IL gets compiled into native code by a Just In Time (JIT) compiler. If security policy requires the code to be type-safe, the IL is checked for type-safety as part of the JIT compilation process, and the code will not be allowed to execute unless the code is determined to be type-safe. During execution, the runtime provides services that include automatic memory management, debugging support, enhanced security, and interoperability with unmanaged code, such as legacy COM components.
The following topics provide more detailed information about the managed execution process: