- •Назначение платформы .Net Framework.
- •Версии платформы .Net
- •Общие концепции синтаксиса языка с#
- •Система типов clr и языка c#. Типы-значения и ссылочные типы
- •Система типов clr и языка c#. Преобразование типов
- •Идентификаторы, ключевые слова и литералы в языке c#
- •Допустимые элементы класса
- •Классы. Модификаторы доступа для элементов и типов
- •Классы. Использование класса
- •Методы. Описание метода. Вызов метода
- •Описание метода
- •Вызов метода
- •12, 13. Интерфейсы в языке c#. Объявление и реализация интерфейсов
- •14. Универсальные шаблоны. Универсальные классы и структуры
- •Универсальные классы и структуры
- •15. Универсальные шаблоны. Ограничения на параметры универсальных типов
- •16. Делегаты в языке с#
- •17. Анонимные методы и лямбда-выражения в языке c#
- •18. Понятие Пространства имен. Применяемые пространства имен в .Net.
- •19. Препроцессорные директивы
- •20. Создание проекта в Visual Studio. Интерфейс среды.
- •21. Настройка внешнего вида и поведения формы. Добавление элементов управления. Категории элементов.
- •22. Создание mdi-приложений. Главное и дочерние окна. Упорядочивание mdi-окон
- •23. Работа с текстовыми файлами. Запись, чтение, открытие, создание.
- •24, 25, 26 Сериализация объектов в .Net.
- •27. Жизненный цикл объектов. Алгоритм «сборки мусора» Жизненный цикл объектов
- •Сборщик мусора
- •28. Жизненный цикл объектов. Финализаторы
- •29. Xml. Правило построения xml-документов Понятие о языке xml
- •Простейший xml-документ
- •30. Создание, сохранение, загрузка xml Создание, сохранение, загрузка xml
- •31. Состав и взаимодействие сборок
- •32 Многопоточное программирование. Класс Thread. Основные свойства класса.
- •33 Многопоточное программирование. Пул потоков
- •34. Синхронизация потоков
- •35, 36, 37. Аспекты безопасности .Net
- •35 Аспекты безопасности .Net. Разрешение на доступ
- •36 Аспекты безопасности .Net. Изолированные хранилища
- •37 Аспекты безопасности .Net. Криптография
- •38. Работа с ключами реестра в .Net.
- •43. Методы доступа к субд.
- •44. Метод доступа ado .Net.
- •45 Работа с элементами управления DataSet.
- •46. Создание базы данных ms sql server.
- •47. Соединение с базой данных. Открытие и закрытие соединения с базой данных.
- •48. Адаптер SqlDataAdapter. Запросы sql.
- •49 Разработка Windows приложений с использованием com объектов
- •50. Работа с com сервером Excel. Запуск и закрытие Excel из приложения на c#. Создание рабочих книг
- •51 Работа с com сервером Excel. Вывод информации в ячейки Excel
- •52 Работа с com сервером Excel. Создание диаграмм
- •53 Работа с com сервером Word. Создание и сохранение документов
- •54 Работа с com сервером Word. Вывод текстовой информации
- •55 Работа с com сервером Word. Работа с таблицами
34. Синхронизация потоков
В основу синхронизации положено понятие блокировки, посредством которой организуется управление доступом к кодовому блоку в объекте. Когда объект заблокирован одним потоком, остальные потоки не могут получить доступ к заблокированному кодовому блоку. Когда же блокировка снимается одним потоком, объект становится доступным для использования в другом потоке.
Средство блокировки встроено в язык C#. Благодаря этому все объекты могут быть синхронизированы. Синхронизация организуется с помощью ключевого слова lock.
Lock ( lockObj){
// синхронизирумые объекты}
Блокируемым считается такой объект, который представляет синхронизируемый ресурс. В некоторых случаях им оказывается экземпляр самого ресурса или же произвольный экземпляр объекта, используемого для синхронизации. Блокируемый объект не должен быть общедоступным, так как в противном случае он может быть заблокирован из другого, неконтролируемого в программе фрагмента кода и в дальнейшем вообще не разблокирутеся.
35, 36, 37. Аспекты безопасности .Net
Рассмотрим аспекты безопасности выполнения приложения.
Во-первых, код приложения может быть зашифрован и подписан цифровыми подписями. Для этого в состав метаданных включаются цифровые сертификаты и открытый ключ, необходимый для расшифровки. Расшифровка возможна только в среде выполнения CLR.
Во-вторых, код приложения можно защитить от незаконной модификации. Проще говоря, хитроумным знатокам языка MSIL не удастся изменить коды ваших сборок, если использовать механизм контрольных сумм. Для каждого файла сборок приложения можно сохранять контрольные суммы (результат обработки кода файла односторонней хэш-функцией). По умолчанию в среде выполнения CLR используется функция SHA1. Контрольная сумма пересчитывается перед запуском приложения, и если в код внесены изменения, результат вычисления не совпадет с контрольной суммой.
В-третьих, для каждого приложения можно определить права доступа на основе стандартного механизма политик безопасности операционной системы. Например, код .NET, запускаемый из удаленного источника, по определению будет иметь ограниченные права по доступу к файлам компьютера. Политики безопасности можно настраивать стандартными средствами Windows.
35 Аспекты безопасности .Net. Разрешение на доступ
Среда .NET Framework, предоставляет многочисленные классы, помогающие разрабатывать в приложениях безопасный код. Многие из этих классов предлагают основанную на ролях безопасность и криптографию. Среда .NET Framework также дает объекты разрешений доступа к коду, являющиеся компоновочными блоками для защиты от несанкционированного доступа к коду. Они являются фундаментом, гарантирующим управляемому коду безопасность — может выполняться только тот код, который имеет разрешение выполняться в текущем контексте.
Каждое разрешение доступа к коду демонстрирует одно из следующих прав:
Право доступа к защищенным ресурсам, например к файлам.
Право выполнения защищенной операции, например обращения к управляемому коду.
Для мира Интернета и особенно для сетевых приложений классы System.Net предоставляют встроенную поддержку аутентификации и разрешений доступа к коду. Среда .NET Framework дает класс SocketPermission, обеспечивающий соблюдение разрешений доступа к коду.
Класс SocketPermission используется для управления правами на установление и принятие соединений, контролирующими доступ к сети через сокеты.
Для сокетов C# имеется два способа обеспечить разрешение, поддерживающее безопасность:
Императивно, используя класс SocketPermission
Декларативно, используя класс SocketPermissionAttribute
