Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
Основные темы книги• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Однако .NET существенно помогает операционной системе в ответах на вопросы, сколько полномочий предоставить коду, будет ли он приложением интранет, элементом управления на странице Web или приложением Windows Forms, загруженным от поставщика программного обеспечения в Интернете.
Конфигурационный файл системы безопасности
Как мы уже видели, общим звеном, соединяющим группы кода, полномочия и множества полномочий, являются три уровня политики системы безопасности (Enterprise, Machine и User). Информация о конфигурации системы безопасности в .NET хранится в конфигурационных файлах XML, которые защищены системой безопасности Windows. Например, политика безопасности уровня Machine распространяется только на пользователей групп Administrator, Power User и SYSTEM в Windows 2000.
В Windows 2000 файлы, которые хранят политику безопасности расположены в следующих местах:
Конфигурация политики предприятия
C:\WinNT\Microsoft.NET\Framework\v1.0.xxxx\Config\enterprise.config
Конфигурация политики машины
C:\WinNT\Microsoft.NET\Framework\v1.0.xxxx\Config\security.config
Конфигурация политики пользователя
%USERPROFILE%\application data\Microsoft\CLR security config\vxx.xx\security.config
Номер версии, отмеченный несколькими 'x', будет меняться в зависимости от версии .NET Framework, установленной на машине. При необходимости можно вручную редактировать эти конфигурационные файлы, например, если администратору нужно сконфигурировать политику для пользователя не регистрируясь в системе со своей учетной записью. Однако в общем рекомендуется использовать caspol.exe
или подключаемый модуль ММС для управления политикой системы безопасности.
Простой пример
Создадим небольшое приложение, обращающееся к локальному диску, поведение которого требует тщательного управления. Приложение относится к C# Windows Forms с окном списка и кнопкой. Если нажать на кнопку, то окно списка заполняется из файла с именем animals.txt
в корне диска C:\
:

Приложение создается с помощью Visual Studio.NET, единственными изменениями в нем являются добавления к форме окна списка и кнопки Load Data, а также подключение к кнопке события, что выглядит следующим образом.
// Пример из SecurityAppl
private void button1_Click(object sender, System.EventArgs e) {
StreamReader stream = File.OpenText(@"C:\animals.txt");
String str;
while ((str = stream.ReadLine()) != null) {
listBox1.Items.Add(str);
}
}
Метод открывает простой текстовый файл из корня диска C:\
, который содержит список животных на отдельных строках, и загружает каждую строку в переменную типа string, которая затем используется для создания каждого элемента в окне списка.
Если выполнить приложение на локальной машине и нажать кнопку, то мы увидим загруженные из корня диска C:\
данные, выведенные в окне списка, как и ожидалось. Неявно среда выполнения предоставила сборке полномочие, которое необходимо для выполнения, доступа к интерфейсу пользователя и чтения данных с локального диска:

Вспомним, что полномочия группы кода в зоне интранет являются более строгими, чем на локальной машине, в частности, они не разрешают доступ к локальному диску (за исключением папки, из которой выполняется приложение). Если снова выполнить приложение, но в этот раз с общего сетевого диска, оно будет выполняться так же, как и раньше, поскольку ему предоставлены полномочия для выполнения и доступа к интерфейсу пользователя. Однако, если теперь нажать кнопку Load Data на форме, будет порождаться исключение безопасности:

В тексте сообщения исключения упоминается объект System.Security.Permissions.FileIOPermission
. Он является полномочием, не предоставленным приложению и запрошенным классом из Framework, который используется для загрузки данных из файла на локальном диске.
По умолчанию группе кода Intranet предоставляется множество полномочий LocalIntranet
. Изменим с помощью следующей команды это множество полномочий на FullTrust
, чтобы любой код из зоны интранет мог выполняться полностью без ограничений.
caspol.exe -chggroup 1.2 FullTrust
Если теперь снова выполнить приложение с общего сетевого диска и нажать на кнопку, мы увидим, что окно списка заполняется из файла в корне диска C:\
и исключения не возникают.

В подобных сценариях, где используются ресурсы, управляемые полномочиями, рекомендуется расширять код, чтобы исключения безопасности перехватывались и приложение могло постепенно уменьшать свою деятельность. Например, в данном приложении можно добавить блок try-catch вокруг кода доступа к файлу и, если порождается исключение SecurityException
, то в окне списка выводится строка "Permission denied accessing file" ("Полномочия не разрешают доступ к файлу"):
// Код из SecurityАрр1
private void button1_Click(object sender, System.EventArgs e) {
try {
StreamReader din = File.OpenText(@"C:\animals.txt");
String str;
while((str = din.ReadLine() != null) {
listBox1.Items.Add(str);
}
} catch (SecurityException exception) {
listBox1.Items.Add("Permission denied accessing file");
}
}

В действительности, если необходимо выполнить определенное приложение с общего сетевого диска, то скорее всего будет выбрано решение, которое не открывает клиентскую машину всему коду в интранет. Вместо этого будут использоваться группы кода и условия членства для строгого контроля требования приложения с учетом его расположения в интранет, строгого имени или сертификата, подтверждающего идентичность издателя.
Управление группами кода и полномочиями
В управляемой безопасности .NET, если сборка отказывает с исключением безопасности, обычно имеются три пути продолжения работы:
□ Смягчить политику полномочий
□ Переместить сборку
□ Применить для сборки строгое имя
Принимая решения такого рода, нужно брать в расчет уровень надежности сборки.
Включение и выключение системы безопасности
По умолчанию система безопасности .NET обычно включена. Если по какой-то причине необходимо ее выключить, это делается таким образом:
caspol.exe -security off
Чтобы снова включить систему безопасности, используйте команду:
caspol.exe -security on
Интервал:
Закладка: