интернациональное программирование N|M{INT3 TEAM}{NIM@INT3.RU} Спецвыпуск: Хакер, номер #065, стр. 065-032-5 2 МОЖНО ПРЕКРАТИТЬ ВЫПОЛНЕНИЕ ОТДЕЛЬНЫХ ПРИЛОЖЕНИЙ, НЕ ОСТАНАВЛИВАЯ ПРОЦЕСС ЦЕЛИКОМ. ИСПОЛЬЗОВАНИЕ ДОМЕНОВ ПРИЛОЖЕНИЙ ПОЗВОЛЯЕТ ВЫГРУЖАТЬ КОД, КОТОРЫЙ ИСПОЛЬЗУЕТСЯ ОТДЕЛЬНЫМ ПРИЛОЖЕНИЕМ. ВЫГРУЖАТЬ ОТДЕЛЬНЫЕ СБОРКИ ИЛИ ТИПЫ НЕВОЗМОЖНО — ДОМЕН ВЫГРУЖАЕТСЯ ТОЛЬКО ЦЕЛИКОМ. 3 КОД, ИСПОЛЬЗУЕМЫЙ ОДНИМ ПРИЛОЖЕНИЕМ, НЕ МОЖЕТ ИМЕТЬ НЕПОСРЕДСТВЕННОГО ДОСТУПА К КОДУ ИЛИ РЕСУРСАМ ДРУГОГО ПРИЛОЖЕНИЯ. ОБЩЕЯЗЫКОВАЯ СРЕДА ВЫПОЛНЕНИЯ РЕАЛИЗУЕТ ЭТО РАЗДЕЛЕНИЕ, ПРЕДОТВРАЩАЯ ПРЯМЫЕ ВЫЗОВЫ МЕЖДУ ОБЪЕКТАМИ В РАЗЛИЧНЫХ ДОМЕНАХ ПРИЛОЖЕНИЙ. ОБЪЕКТЫ, ПЕРЕДАВАЕМЫЕ ОТ ДОМЕНА К ДОМЕНУ, КОПИРУЮТСЯ ИЛИ ВЗАИМОДЕЙСТВУЮТ ЧЕРЕЗ ПРОКСИ. ЕСЛИ ОБЪЕКТ КОПИРУЕТСЯ, ВЫЗОВ ЭТОГО ОБЪЕКТА СТАНОВИТСЯ ЛОКАЛЬНЫМ. ТАКИМ ОБРАЗОМ, ВЫЗЫВАЮЩАЯ ПРОГРАММА И ОБЪЕКТ, С КОТОРЫМ ОНА ВЗАИМОДЕЙСТВУЕТ, НАХОДЯТСЯ В ОДНОМ ДОМЕНЕ ПРИЛОЖЕНИЯ. ЕСЛИ ДОСТУП К ОБЪЕКТУ ОСУЩЕСТВЛЯЕТСЯ ЧЕРЕЗ ПРОКСИ, ИДЕТ УДАЛЕННЫЙ ВЫЗОВ ОБЪЕКТА. В ЭТОМ СЛУЧАЕ ВЫЗЫВАЮЩАЯ ПРОГРАММА И ОБЪЕКТ, С КОТОРЫМ ОНА ВЗАИМОДЕЙСТВУЕТ, НАХОДЯТСЯ В РАЗНЫХ ДОМЕНАХ ПРИЛОЖЕНИЙ. МЕЖДОМЕННЫЕ ВЫЗОВЫ ИСПОЛЬЗУЮТ ТУ ЖЕ ИНФРАСТРУКТУРУ УДАЛЕННЫХ ВЫЗОВОВ, ЧТО И ВЫЗОВЫ МЕЖДУ ДВУМЯ РАЗНЫМИ ПРОЦЕССАМИ ИЛИ ДВУМЯ РАЗНЫМИ МАШИНАМИ. ПО СУЩЕСТВУ, ДЛЯ ПОДДЕРЖКИ ПРАВИЛЬНОЙ JIT-КОМПИЛЯЦИИ ВЫЗОВА МЕТОДА МЕТАДАННЫЕ ИСПОЛЬЗУЕМОГО ОБЪЕКТА ДОЛЖНЫ БЫТЬ ДОСТУПНЫ ДЛЯ ОБОИХ ДОМЕНОВ ПРИЛОЖЕНИЙ. ЕСЛИ ВЫЗЫВАЮЩИЙ ДОМЕН НЕ ИМЕЕТ ДОСТУПА К МЕТАДАННЫМ ВЫЗЫВАЕМОГО ОБЪЕКТА, КОМПИЛЯЦИЯ МОЖЕТ ПРИВЕСТИ К СБОЮ С ГЕНЕРАЦИЕЙ ИСКЛЮЧЕНИЯ ТИПА SYSTEM.IO.FILENOTFOUND. МЕХАНИЗМ ОПРЕДЕЛЕНИЯ СПОСОБОВ МЕЖДОМЕННОГО ДОСТУПА ДЛЯ ОБЪЕКТА ЗАВИСИТ ОТ ОБЪЕКТА. ЕСЛИ ХОЧЕШЬ УЗНАТЬ ЧТО-ТО ДОПОЛНИТЕЛЬНО, СМОТРИ ОПИСАНИЕ КЛАССА MARSHALBYREFOBJECT. [библиотека классов включает] в себя средства для решения практически любой задачи. Кратко пробежимся по библиотеке. Пространство имен System.IO содержит классы, позволяющие осуществлять чтение и запись в файлы и потоки данных, а также классы для работы с файлами и папками. ПРОСТРАНСТВО ИМЕН (NAMESPACE) — ЭТО ЛОГИЧЕСКАЯ ГРУППИРОВКА КЛАССОВ В ЕДИНУЮ ГРУППУ КЛАССОВ, РЕШАЮЩИХ СХОЖИЕ ПО НАЗНАЧЕНИЮ ЗАДАЧИ Чтобы продемонстрировать всю простоту написания кода на C#, приведу пример метода, который сохраняет переданный в виде параметра байтовый массив в файл: void SaveByteArray (byte[] buffer) { SaveFileDialog sfd = new SaveFileDialog(); if (sfd.ShowDialog() == DialogResult.OK) { System.IO.FileStream fs = sfd.OpenFile(); fs.Write(buffer, 0, buffer.Length); } } Пространство имен System.Collections содержит интерфейсы и классы, которые определяют различные коллекции объектов, такие как списки, очереди, двоичные массивы, хэш-таблицы и словари. Пространство имен System.Diagnostics предоставляет классы, позволяющие работать с системными процессами, журналами событий и счетчиками производительности. Пространство имен System.Reflection содержит классы и интерфейсы, обеспечивающие управляемое представление загруженных типов, методов и полей с возможностью динамического создания объектов и вызова методов. Пространство имен System.Security.Cryptography предоставляет службы криптографии, содержащие безопасную кодировку и декодировку данных, а также многие другие операции, например хэширование, генерирование случайных чисел и проверку подлинности сообщений. Пространство имен System.Security.Permissions определяет классы, которые управляют доступом к действиям и ресурсам на основании политики. Пространство имен System.Threading содержит классы и интерфейсы, которые позволяют программировать в многопоточном режиме. |