Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инфа теория передел.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
447.59 Кб
Скачать

14. Структурные блоки платформы .Net: cli, clr, cls, cts.

CLI это открытая спецификация разработанная фирмой Microsoft которая описывает код исполнительной программы и среду выполнения. Спецификация подразумевает среду разрешающую нескольким языкам высокого уровня быть использованными на разных компьютерных платформах без переписи под специфику архитектур. CLI это спецификация, а не реализация, также CLI часто путают с CLR, которая содержит аспекты вне спецификации. Спецификация CLI состоит из 4 аспектов: Common Type System (CTS) - Набор типов и операций которые используются во многих языках программирования.

Metadata - Информация о структуре программы является независимой от языка, потому вы можете использовать программу в разных языках. Common Language Specification (CLS) - Набор базовых правил, которые язык программирования CLI должен соблюдать, что-бы общаться с другими CLS языками.

Virtual Execution System (VES) - Загружает и выполняет CLI-совместимые программы, используя метаданные чтобы совместить сгенерированные куски кода во время исполнения.

CLR - специальная виртуальная машина, которая управляет компиляцией в инструкции процессора и выполнением модулей, состав-ленных на промежуточном языке; CLR начинает работать при каждом запуске управляемых модулей на выполнение. Она является основой .NET Framework. Среда CLR является виртуальной машиной, которая расположена поверх ОС (выполняется под управлением ОС и использует все ее возможности) и управляет выполнением приложений разработанных для платформы .Net. CLS представляет собой набор правил, которые во всех подробностях описывают минимальный и полный комплект функциональных возможностей, которые должен обязательно поддерживать каждый отдельно взятый .NET-компилятор для того, чтобы генерировать такой программный код, который мог бы обслуживаться CLR и к которому в то же время могли бы единообразным образом получать доступ все языки, ориентированные на платформу .NET. CLS может считаться просто подмножеством всех функциональных возможностей, определенных в CTS. Спецификация CLS обеспечивает расширенное и надежное взаимодействие языков, определяя набор функциональных возможностей, доступных разработчикам в разных языках. В CLS также устанавливаются требования к CLS-совместимости, которые позволяют проверять, соответствует ли управляемый код спецификации CLS, и определять для конкретного средства уровень поддержки разработки управляемого кода, в котором используются функциональные возможности CLS.

Common Type System (сокр. CTS, рус. Стандартная система типов) — часть .NET Framework, формальная спецификация, определяющая, как какой-либо тип (класс, интерфейс, структура, встроенный тип данных) должен быть определён для его правильного выполнения средой .NET. Кроме того, данный стандарт определяет, как определения типов и специальные значения типов представлены в компьютерной памяти. Целью разработки CTS было обеспечение возможности программам, написанным на различных языках программирования, легко обмениваться информацией. Как это принято в языках программирования, тип может быть описан как определение набора допустимых значений (например, «все целые от 0 до 10») и допустимых операций над этими значениями (например, сложение и вычитание).

15. В .NET все (классы, переменные, структуры и т.д.) разбито по пространствам имен, что позволяет избавиться от возможных конфликтов в именовании и, в тоже время, использовать одинаковые имена в разных пространствах. Пространство имен – это определенная область, внутри которой все имена должны быть уникальными. Пространство имен определяется с помощью ключевого слова namespace следующим образом:

namespace TextNamespace

{ Определение типов, классов, переменных }

Таким образом, можно определить собственное пространство имен, которое действует между фигурными скобками, где можно объявлять свои типы. Имя пространства имен может состоять из нескольких частей, разделенных точной. Для доступа к типам, объявленным внутри определенного пространства имен:

1. Имя_Пространстра_Имен.Переменная

2. Мы должны находиться в том же самом пространстве имен, т.е. внутри фигурных скобок.

3. Мы должны подключить пространство имен с помощью оператора using: using System.

Базовой единицей защиты, управления версиями и развертывания в .NET Framework является не управляемый модуль, а сборка (assembly).

Сборки образуют базовую единицу развертывания, управления версиями, повторного использования, областей действия активации и разрешений безопасности для приложений на основе .NET. Сборки принимают форму исполняемого файла (EXE) или файла библиотеки динамической компоновки (DLL); они являются стандартными блоками платформы .NET Framework. Среда CLR получает от них сведения, необходимые для реализации типов. Сборку можно представить как коллекцию типов и ресурсов, формирующих логическую единицу функциональности и собранных для совместной работы.

Сборки могут содержать один или несколько модулей. Например, крупные проекты могут быть спланированы таким образом, чтобы несколько разработчиков работали каждый над своим модулем, а вместе эти модули образовывали одну сборку.

16. При выполнении программы для хранения данных используются два участка оперативной памяти, которые называются стеком (stack) и "кучей".

Стек (stack) – это линейный участок памяти (массив), который действует как структура данных типа «Последним пришел – первым ушел» (last-in, first-out – LIFO). Основной особенностью стека являются то, что данные могут добавляться только к вершине стека и удаляться из вершины. Добавление и удаление данных из произвольного места стека невозможно. Операции по добавлению и удаление элементов из стека выполняются очень быстро. Однако размер стека, как правило, ограни-чен, и время хранения данных зависит от времени жизни переменной. Для всех локальных переменных методов и передаваемых методам па-38

раметров память выделяется в вершине стека. После того, как методы заканчивают работу вся выделенная память в стеке для их переменных автоматически освобождается.

Куча (heap) – это область оперативной памяти, в разных частях которой могут выделяться участки для хранения объектов классов. В отличие от стека, такие участки памяти в "куче" могут выделяться и освобождаться в любом порядке. Хотя программа может хранить элементы данных в "куче", она не может явно удалять их из нее. Вместо этого компонент среды CLR, называемый «Сборщиком мусора» (Garbage Col-lector, GC), автоматически удаляет неиспользуемые участки "кучи", ко-гда он определит, что код программы уже не имеет доступа к ним (не хранит их адреса).

Переменные – это именованные участки памяти, которые могут хранить либо значения некоторого типа (для значащих типов, в стеке), либо ссылки на экземпляры некоторых классов (для ссылочных типов, ссылки на объекты, расположенные в "куче"). В C# также разделяют пе-ременные на поля классов (объявляются в описаниях классов и создают-ся для каждого объекта) и локальные переменные методов (создаются при каждом вызове метода класса). [модификаторы] <тип> <имя_переменной> При объявлении переменных указывается их тип и имя, где имя_переменной – это просто название переменной или название пере-менной с инициализацией (начальным значением). После типа можно указывать и список имен, разделенных запятой. Инициализацию можно осуществлять либо с помощью присваивания значений или с использованием конструкции new и вызовом конструктора по умолчанию.

int x, s; //без инициализации

int y =0, u = 77; //обычный способ инициализации

//допустимая инициализация

float w1 = 0f, w2 = 5.5f, w3 = w1 + w2 + 125.25f;

//допустимая инициализация в объектном стиле

int z= new int();

x = u + y; //теперь x инициализирована

В C# константы могут задаваться в виде литералов (набора сим-волов) или именованных констант. Например: y = 7.7;

Значение константы "7.7" является одновременно ее именем, а также она имеет и тип. По умолчанию константы с дробной частью имеют тип double. Точный тип константы можно задать с помощью символа, стоящего после литерала (в верхнем или нижнем регистре). Такими символами могут быть: f – тип float; d – тип double; m – тип decimal.

Также можно объявить именованную константу. Для этого в объявление переменной добавляется модификатор const. Именованные константы обязательно должны быть инициализированы и инициализация не может быть отложенной. Например:

const float с = 0.1f;

Под строковыми константами понимается последовательность символов заключенная в двойные кавычки ("): обычные константы, которые представляют строку символов, за-ключенную в двойные кавычки – "ssss"; @-константы, заданные обычной константой c предшествующим знаком @.

s1 = "c:\\c#book\\ch5\\chapter5.doc"

s2 = @"c:\c#book\ch5\chapter5.doc"