Microsoft .NET Framework FAQ

ОГЛАВЛЕНИЕ

Microsoft .NET Framework - это платформа для создания, развертывания и запуска Web-сервисов и приложений. Она предоставляет высокопроизводительную, основанную на стандартах, многоязыковую среду, которая позволяет интегрировать существующие приложения с приложениями и сервисами следующего поколения, а также решать задачи развертывания и использования интернет-приложений. .NET Framework состоит из трех основных частей - общеязыковой среды выполнения (common language runtime), иерархического множества унифицированных библиотек классов и компонентную версию ASP, называемую ASP.NET.

Технические вопросы о среде выполнения

Терминология

Что такое общеязыковая среда выполнения - Common Language Runtime (CLR)?

Общеязыковая среда выполнения - это ядро для выполнения приложений в .NET Framework
Она предоставляет набор сервисов, включая следующие:

  • управление кодом (загрузка и выполнение)
  • изоляция памяти приложений
  • проверка безопасности типов
  • преобразование промежуточного языка в машинный код
  • доступ к метаданым (расширенная информация о типах)
  • управление памятью для управляемых объектов
  • проверка безопасности кода
  • обработка исключений, включая межъязыковые исключения
  • взаимодействие между управляемым кодом, COM-объектами и существующими DLL(неуправляемый код и данные)
  • поддержка сервисов для разработки (профилирование, отладка и т.д.)

Что такое общая система типов(CTS)?

Общая система типов - это мощная система типов, встроенная в CLR, которая поддерживает типы и операции, существующие в большинстве языков программирования.

Что такое общеязыковая спецификация - Common Language Specification (CLS)?

Common Language Specification - это набор конструкций и ограничений, которые являются руководством для создателей библиотек и компиляторов. Она позволяет библиотекам быть полностью использованными из любого языка программирования, поддерживающего CLS, и позволяет этим языкам интегрироваться друг с другом. CLS является подмножеством общей системы типов. CLS очень важна для разработчиков, которые пишут код, который будет использоваться другими разработчиками. Когда разработчик проектирует публично доступное API, используя правила CLS, то это API можно будет легко использовать из любого языка программирования, управляемого CLR.

Что такое промежуточный язык Microsoft - Microsoft Intermediate Language (MSIL)?

MSIL - это независимый от процессора набор инструкций, в который компилируются программы в .NET Framework. Он содержит инструкции для загрузки, хранения, инициализации и вызова методов объектов.

Вместе с метаданными и общей системой типов, MSIL делает реальной межъязыковую интеграцию.

Перед выполнением, MSIL преобразуется в машинный код. Он не интерпретируется.

Что такое управляемый код (managed code) и управляемые данные (managed data)?

Управляемый код - это код, который работает в среде CLR. Чтобы выполняться в среде, код должен предоставить определенный уровень информации (метаданных) для среды выполнения. Код C#, Visual Basic .NET, и JScript .NET является управляемым по умолчанию. Код Visual Studio .NET C++ не является управляемым по умолчанию, но компилятор может создавать управляемый код, для этого нужно указать аргумент в командной строке(/CLR).

Близким понятием к управляемому коду является управляемые данные - данные, которые создаются и уничтожаются сборщиком мусора CLR. Данные C#, Visual Basic и JScript .NET являются управляемыми по умолчанию. Но данные C# могут быть помечены как неуправляемые, используя специальное ключевое слово. Данные Visual Studio .NET C++ являются неуправляемыми по умолчанию (даже при использовании флага /CLR ), но при использовании Managed Extensions for C++, класс может быть помечен как управляемый, используя ключевое слово __gc. Как можно понять из имени, это означает, что память для экземпляров данного объекта должна управляться сборщиком мусора. Тогда класс становится полноценным участником сообщества .NET Framework, с теми преимуществами и ограничениями, которые она дает. Например, преимуществом является корректное взаимодействие с классами, написанными на других языках программирования, а ограничением явялется возможность наследования только от одного базового класса.