Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КПТ-Контрольне2-v.2.5.doc
Скачиваний:
1
Добавлен:
29.08.2019
Размер:
84.99 Кб
Скачать

Компонентні програмні технології

Модуль 3

1) Що таке збірка CLI?

CLI – спецификация высокого уровня. CLI – определяет независимую от языка программирования платформу (на подобие CORBA), формат промежуточного языка (IL), байт-код (byte-code). CLI включает спецификацию сервисов запуска и исполнения. Так же как и загрузчик, JIT-компилятор, менеджер сборки мусора, общая система типов CTS, общая языковая спецификация CLS.

2) Що таке маніфест збірки?

Любая сборка, статическая или динамическая, содержит коллекцию данных с описанием того, как ее элементы связаны друг с другом. Эти метаданные содержатся в манифесте сборки. Манифест сборки содержит все метаданные, необходимые для задания требований сборки к версиям и удостоверения безопасности, а также все метаданные, необходимые для определения области действия сборки и разрешения ссылок на ресурсы и классы. Манифест сборки может храниться в PE-файле (EXE или DLL) с кодом MSIL или же в отдельном PE-файле, содержащем только данные манифеста. Манифест содержит: имя сборки, номер версии, язык и региональные параметры, данные о строгом имени, список всех файлов сборки, сведения о ссылках на типы, сведения о ссылках на сборки.

3) Локалізація збірок.

Для реализации локализации сборки без дублирования могут использоваться вспомогательные сборки. Вспомогательная сборка содержит все необходимое для локализации данной сборки.

4) Що таке строге ім’я збірки?

Строгое имя играет роль уникального идентификатора сборки, а все определения сборки интерпретируются относительно её строгого имени.

5) Для чого використовуються підпис публікатора?

Подпись публикатора (publisher token) – это хэш SHA-1, публичной части пары ключей публичный/приватный. Сборка подписывается расчетом хэша md5 по всей сборке с использованием частного ключа. При загрузке или инсталляции хэш сборки пересчитывается, и подпись проверяется, используя открытый ключ. Таким образом, сборки защищают от подмены. Кроме того, хеширование методом SHA-1 дает высокую вероятность уникальности при включении подписи публикатора в строгое имя, вероятность коллизии на уровне символического уровня сборки становится незначительной, добавление информации о версии и культуре еще более уменьшает неопределенность.

6) Що таке політика прикладення?

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

Политика приложения определяется провайдером приложения для объявления определение версии сборки, даже если новая присутствует: <PublisherPolicy apply=”no”>

7) Що таке політика публікатора?

Политика публикатора включается в саму разделяемую сборку.

8) Що таке політика машини?

Политика машины – выше, чем версия сборок. Управление разделением сборок занимается глобальный кэш сборок GAC – это БД сборок, идентифицирующая их по строгим именам и реализующая различные политики.

Политика машины – администратор может переопределять политики публикатора и приложения по-своему. Инсталлер и GAC совместно поддерживают граф зависимостей между приложениями и сборками для сбора и удаления сборок, которые более не используются.

9) Які збірки треба обов’язково підписувати строгим ім’ям?

Строгим именем можно подписать сборку приложений *.exe, разделенную сборку *.dll, манифест приложения, манифест размещения .application.

Следует именовать строгим именем разделенные сборки *.dll, которые будут размещаться в Global Assembly Cache (GAC). Следует так же подписывать основные сборки взаимодействия с COM (COM Interop). ClickOnce – подписывает мгновенно различные приложения.

Не следует подписывать строгим именем пользовательские приложения, поскольку подписанные приложения не смогут вызвать неподписанные библиотеки (weak-named). Подписать можно как на этапе создания проекта, так и готовые приложения.

10) Що таке домен прикладення AppDomain?

Тема: Домены приложения (Application Domains), контексты (Contexts), отражение (Reflection), удаленный вызов (Remoting).

Система времени выполнения (Runtime) CLI разделяет каждый процесс на один или несколько доменов приложения. Домен по умолчанию (Default) создается сразу при запуске приложения.

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

11) Як взаємодіють об’єкти різних доменів?

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

12) Що таке логічний потік CLI?

CLR поддерживает удаленный вызов между доменами, процессами и машинами. Единицей использования является логический поток (logical thread), который отображается в физический поток внутри каждого домена. Логический поток сохраняет свою идентичность данных, даже пересекая границы одной машины.

13) Як виповнюється завантаження та вивантаження зборок з використанням AppDomain?

Домен приложений является также областью загрузки и выгрузки сборок. Сборка может быть загружена в домен в любое время. Индивидуальные выгрузки сборок не реализуются, зато может быть удален весь домен с выгрузкой всех сборок, если только они не обслуживают другие домены процесса.

14) Що таке контекст у CLI?

Контекст – это часть домена приложения, объекты которого разделяют свойства данного контекста. Контекст – более детальная структура пространства Runtime’а, чем домен.

15) Що таке синхронізований контекст CLI?

Атрибут Synchronization определяет, что контекст является синхронизированным, а свойство isReentrant = true говорит, что поток является таковым.

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

16) Як виконується перевірка виходу за межі синхронізованого контексту?

В CLI реализован специальный механизм для контроля выхода логического потока из контекста. Пока поток вызывает методы контекстно-связанных объектов из текущего контекста или методы контекстно-свободных (Context Agile) объектов он «находится» внутри контекста. Как только логический поток вызывает контекстно-связанный объект из другого контекста фиксируется ситуация выхода текущего контекста.

Такая синхронизация – только одно из возможных применений контекстов CLI. Возможно также создание синхронизированных методов подобно в Java, и реализуемых с помощью специальных пользовательских атрибутов.