Программирование arrow .NET Framework arrow Microsoft .NET Framework FAQ

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, с теми преимуществами и ограничениями, которые она дает. Например, преимуществом является корректное взаимодействие с классами, написанными на других языках программирования, а ограничением явялется возможность наследования только от одного базового класса.


 
« Предыдущая статья   Следующая статья »


  • .NET Framework, Оптимизация сериализации в .NET
    Приводятся код и методы, позволяющие разработчикам оптимизировать сериализацию данных....
  • .NET Framework, Плавающая точка в .NET - часть 1: принципы и форматы
    Данная статья представит основные принципы арифметических операций с плавающей точкой: числовые форматы, точности и достоверность, погрешности округления. Также в статью включено обсуждение типов плавающей запятой в .NET....
  • .NET Framework, JIT-оптимизации
    Компилятор .NET Just-In-Time Compiler (JIT) считается многими одним из основных преимуществ производительности CLR по сравнению с JVM и другими управляемыми средами, которые используют двоичный код, скомпилированный компилятором JIT. ...
  • .NET Framework, Инъекции CLR: замена методов во время выполнения
    Многие из нас, наверняка, были заинтересованы в том, как работает универсальный язык CLR. Одной из наиболее интересных вещей является динамический компилятор JIT (Just In Time Compiler). Мы рассмотрим то, как JIT компилирует MSIL и создадим утилиту, которая позволяет программным образом заменить любой метод (JIT) другим во время выполнения. Мы также создадим отладочную утилиту, которая прехватывает JIT-вызовы и выводит в консоль информацию о диагноcnbrt....
  • .NET Framework, Оптимизация запуска приложений .NET
    Ждать, пока приложение запустится, неприятно для многих пользователей, поэтому ускорение запуска приложений клиентов может значительно улучшить первое впечатление от вашей работы. И так как скорость запуска имеет значение, следует знать факторы, которые на нее влияют, чтобы избежать распространенных ошибок....
  • .NET Framework, Создание компилятора языка для .NET Framework
    Эксперты по компиляторам являются знаменитостями в компьютерном мире. Я видел, как Андерс Хейльсберг (Anders Hejlsberg) представлял презентацию на конференции разработчиков Professional Developers Conference и когда он сошел со сцены, его встретила целая орда мужчин и женщин, просящих поставить автограф на книгу, или сняться на фотографии вместе с ними. Люди, посвящающие свое время изучению и пониманию всех тонкостей лямбда-выражений, систем типов и языков сборки, кажутся своего рода носителями ...
  • .NET Framework, Маршалинг данных между управляемым и неуправляемым кодом
    Посмотрим правде в глаза: нет в мире совершенства. Мало кто при разработке использует только управляемый код. А между тем, тяжким грузом лежат устаревшие неуправляемые приложения, с которыми приходится мириться. Есть ли способ интегрировать проекты, в которых задействован как управляемый, так и неуправляемый код? Какой вид принимает этот способ: вызов неуправляемого кода из управляемого приложения или вызов управляемого кода из неуправляемого приложения?...
  • .NET Framework, IronPython как движок для макросов в .NET приложениях
    Подозреваю, многие из вас задумывались — как можно в .NET приложение добавить поддержку макросов — чтобы можно было расширять возможности программы без ее перекомпиляции и предоставить сторонним разработчикам возможность легко и просто получить доступ к API вашего приложения? В статье рассмотрено, как в качестве основы для выполнения макросов использовать IronPython — реализацию языка Python на платформе .NET....