- •Теоретические сведения: Проблемы разработки современных ис
- •Решение проблем разработки информационных систем в .Net
- •Общеязыковая исполняющая среда (Common Language Runtime)
- •Утилиты .Net Framework
- •Основные утилиты .Net Framework
- •Утилиты .Net Framework для отладки приложений
- •Утилиты .Net Framework по работе с защитой приложений
- •Утилиты .Net Framework для настройки и установки приложений
- •Сборки в среде clr
- •1 Общие сведения о сборках
- •2 Содержимое сборок
- •3 Манифест сборки
- •4 Размещение сборок
- •Visual Studio .Net – открытая среда разработки.
- •Среда Microsoft Visual c# 2005 Express Edition
- •Структура программы в c#.
- •Пример 1. Программа FirstProject
- •Пространство имен.
- •Создание и запуск проекта.
- •Практична робота № 2 Введення в Windows Forms
- •Ход работы (первой части лабораторного занятия).
- •Теоретические сведения:
- •Создание Windows-приложений
- •Окно кода программы
- •Роль класса Application
- •Свойства проекта
- •Запуск приложения
- •Что такое форма
- •Windows Forms в технологии .Net
- •Функциональные возможности класса Form
- •Цикл существования объекта Form
- •Диалог MessageBox
- •Закрытие формы (Выход из формы)
- •Создание mdi-приложений.
- •Стандартный делегат
- •1 Часть
- •2 Часть
- •Теоретические сведения.
- •Форматирование строки вывода.
- •Консольный ввод.
- •Расширяющее преобразование.
- •Сужающее преобразование
- •Метод Parse().
- •Класс System.Environment. Окружение.
- •Система типов
- •Простые (элементарные) типы
- •Перечисления
- •Структуры
- •Язык xml
- •Практична робота № 4 Огляд мови с #. Змінні. Структури мови Цель: освоить синтаксис языка программирования с#, закрепить практически использование структур языка. Ход выполнения работы:
- •Теоретические сведения. Базовый синтаксис с#
- •Литералы. Представление значений.
- •Арифметические литералы
- •Логические литералы
- •Символьные литералы
- •Символьные управляющие последовательности.
- •Строковые литералы
- •Переменные.
- •Объявление и инициализация.
- •Область видимости.
- •Константы
- •Операции и выражения
- •Контроль за переполнением. Checked и unchecked.
- •Операция is
- •Операция as
- •Особенности выполнения арифметических операций
- •Особенности арифметики с плавающей точкой
- •Управляющие операторы
- •Теоретические сведения: Иерархия классов. Понятие класса управляющих элементов.
- •Класс Control
- •Элемент управления TextBox
- •Класс Button
- •Элемент управления CheckBox
- •Переключатели и группирующие рамки
- •Элемент управления CheckedListBox
- •Комбинированные списки
- •Управляющий элемент ImageList
- •Элемент управления MonthCalendar
- •Элемент управления Panel
- •Порядок перехода по Tab
- •Форматирование элементов управления
- •Свойства Anchor и Dock
- •Всплывающие подсказки (ToolTips)
- •Создание меню
- •Главное меню.
- •Контекстное меню
- •Создание строки состояния
- •Создание пользовательского диалогового окна.
- •Стандартные диалоговые панели общего назначения.
- •II Задание Expression в таблице, используя визуальные средства разработки.
- •Теоретические сведения:
- •1 Класс DataSet.
- •1.1 Класс DataTable (таблицы)
- •1.1.1 Столбцы (объект Columns).
- •1.1.2 Строки (объект Row)
- •Добавление данных.
- •Заполнение полей.
- •Изменение данных.
- •Состояния строки.
- •Обработка событий
- •Привязка DataTable к некоторым элементам управления.
- •1.1.3 Ограничения (объект Constraints)
- •1.1.4 Представление (объект DataView).
- •1.2 Класс DataRelation (связи между таблицами)
- •2 Просмотр данных. Класс DataGridView.
- •Источники данных (DataSource).
- •2.1.1 Отображение данных из массива
- •2.1.2 Отображение данных из DataTable
- •2.1.3 Отображение данных из DataView
- •2.1.4 Отображение данных из класса DataSet
- •2.1.5 Отображение данных из массива
- •2.2 Привязка данных (DataBinding).
- •Простая привязка.
- •Объекты привязывающие данные (BindingContext)
- •3 Схемы xml.
- •3.1 Пример использования xml-формата для взаимодействия с xml Web-службами:
- •3.2 Ado.Net 2.0 тесно интегрировано с xml.
- •4 Xsd (xml Structure Defenitions) схема.
- •4.1 Описание.
- •4.2 Основные элементы
- •4.3 Использование Visual Studio 2005 .Net
- •4.3.1. Загрузка схем и данных в DataSet
- •4.3.2 Запись схемы и данных из DataSet
- •Практична робота № 7 Використання масивів і їх методів в c # Цель: овладеть возможностью использования массивов, строк и их методов.
- •Массив.
- •Объявление массивов Объявление одномерных массивов
- •Многомерные массивы
- •Пример использования массивов.
- •Массивы массивов
- •Встроенный сервис по обслуживанию массивов
- •Практична робота № 8 Використання колекцій в c # Цель: овладеть возможностью использования коллекций.
- •Коллекции.
- •ArrayList. Массив-список.
- •Практична робота № 9 Об'єкти і класи в с # Цель: четко разграничить понятия класса, объекта.
- •Поля класса
- •Методы класса
- •Объект.
- •Конструктор.
- •Деструктор.
- •Операция new
- •Вложенные классы.
- •Ссылки как параметры.
- •Оператор is
- •Оператор as
- •Переменные только для чтения и константы.
- •Ключевое слово static.
- •Практична робота № 10 Успадкування. Інкапсуляція. Поліморфізм Цель: практически освоить основные принципы ооп. Ход работи:
- •1 Часть. Изучение принципов наследования и инкапсуляции.
- •2 Часть. Изучение принципа полиморфизма.
- •Теоретические сведения.
- •Инкапсуляция
- •Наследование
- •Полиморфизм
- •Виртуальные методы и работа с ними в производных класах.
- •Интерфейсы.
- •Практична робота № 11 Робота з файлами в с # Цель: овладеть возможностью считывания/записи данных из/в файл.
- •Потоки: байтовые, символьные, двоичные
- •Общая характеристика классов потоков
- •Класс Filestream
- •Открытие и закрытие файла.
- •Копирование файла.
- •Файловый ввод–вывод с ориентацией на символы.
- •Пример использования StreamWriter.
- •Пример использования StreamReader.
- •Пример перенаправления потоков.
- •Основні поняття, що використовуються при проектуванні діалогу.
- •Основна термінологія, що використовується при проектуванні вікон. Визначення вікон, типи вікон.
- •Спосіб проектування інтерфейсу користувача з орієнтацією на дані.
- •Спосіб проектування інтерфейсу користувача з орієнтацією на документи.
- •Вибір моделі інтерфейсу.
- •Розробка вікна.
- •Теоретичні відомості.
- •Поле вибору: визначення, стан, типи.
- •Поле вибору: представлення об’єктів, ідентифікація поля.
- •Поле вибору: курсор вибору, виділення обраного об’єкту, недоступність об’єкту вибору, черговість розташування, елементи настроювання.
- •Взаємодія користувача з полями вибору, первісні представлення, вхідний стан.
- •Поле введення: визначення, ідентифікація, роздільники, шрифт, правила читабельності.
- •Теоретичні відомості. Меню дій, спадаюче меню: призначення, розташування, обов’язкові опції, число опцій.
- •Послідовність опцій курсору.
- •Елементи настроювання і виклик опцій.
- •Особливості режимів роботи для одного користувача і багатьох користувачів.
- •Спливаюче меню.
- •Область функціональних клавіш.
- •Теоретичні відомості.
- •Область команд: розміщення, зміст, використання, правила запиту дії “Команда”.
- •Правила для дій “Витяг команди”, правила для дії “Підказка”.
- •Співвідношення між областю команд і меню дій.
- •Практична робота № 16 Створення графічних додатків в с #
- •Практична робота № 17 Створення графічних примітивів
Общеязыковая исполняющая среда (Common Language Runtime)
Common Language Runtime (CLR) – это набор утилит и служб, которые включают в себя все необходимые средства для создания и запуска приложений.
CLR расположена поверх операционной системы и предоставляет виртуальную среду для управляемых приложений. Код для платформы .NET либо исполняется CLR, либо получает разрешение на исполнение за её пределами.
Весь код для платформы .NET преобразуется CLR в промежуточный код на языке CIL. Поэтому разработчики могут легко интегрировать код, написанный для .NET на различных языках программирования.
Код на CIL начинает выполняться под управлением CLR (по этой причине код называется управляемым). Исполнительную среду можно рассматривать, как своеобразную виртуальную IL-машину. Эта машина транслирует «на лету» требуемые для исполнения участки кода в команды реального процессора, который в действительности и выполняет код.
Другими словами, команды на языке CIL компилируются в машинный код соответствующего типа процессора по запросу (just-in-time) в период выполнения. Обычно компиляция метода происходит один раз во время его первого вызова. Затем результат кэшируется в памяти, чтобы избежать задержек при повторных вызовах. JIT-компилятор выполняет оптимизацию кода специально для процессора, на котором исполняется этот код.
Преобразуя команды CIL в команды процессора, JIT-компилятор выполняет верификацию кода на предмет безопасности типов.
Практически невозможно выполнить команду, обращающуюся к области памяти, к которой у этой команды нет разрешения на доступ. В управляемом приложении устраняется проблема ошибочно инициализированных указателей, запрещается преобразовать тип в нечто, чем он не является, так как это нарушение безопасности типов. CLR не позволяет вызывать методы с разрушенным стековым фреймом.
Ресурсы, выделяемые управляемым кодом, освобождаются сборщиком мусора (Garbage Collector). Иначе говоря, программист только выделяет память, но не освобождает её – это делает CLR. Сборщик мусора отслеживает все ссылки на объекты, создаваемые программой, и уничтожает эти объекты, когда занимаемая ими память требуется где-то ещё. Таким образом, в приложениях с управляемым кодом разрешается проблема утечек памяти.
Верификация кода также является основой способности CLR выполнять несколько приложений внутри одного процесса. Процесс разделяется на виртуальные отсеки – домены приложений (application domain). Таким образом, повышается эффективность использования памяти, выделяемой процессам. Домены приложений не менее безопасны, чем процессы, так как их границы не могут быть нарушены управляемыми приложениями.
Для того чтобы классы, разработанные на разных языках, мирно уживались в рамках одного приложения, для их бесшовной отладки, возможности построения разноязычных потомков, они должны удовлетворять некоторым ограничениям. Эти ограничения задаются набором общеязыковых спецификаций – CLS (Common Language Specification). Класс, удовлетворяющий спецификациям CLS, называется CLS-совместимым. Он доступен для использования в других языках, классы которых могут быть клиентами или наследниками совместимого класса.
Спецификации CLS точно определяют, каким набором встроенных типов можно пользоваться в совместимых модулях. Понятно, что эти типы должны быть общедоступными для всех языков, использующих Framework .Net. В совместимых модулях должны использоваться управляемые данные и выполняться некоторые другие ограничения. Заметьте, ограничения касаются только интерфейсной части класса, его открытых свойств и методов. Закрытая часть класса может и не удовлетворять CLS.
Все компоненты, входящие в CLR представлены на Рисунок1.2., а именно:
Class loader – управляет загрузкой классов,
MS Intermediate Language – специальный язык независимый от платформы,
Code manager – управляет запуском кода,
Garbage Collector – сборщик мусора, для освобождения неиспользуемых ресурсов памяти,
Security Engine – обеспечивает механизм защиты приложений,
Debugger – позволяет пользователю отлаживать приложение и отслеживать выполнение запущенного приложения,
Type checker – гарантирует правильное приведение типов данных,
Exception manager – обеспечивает механизм передачи исключений,
Thread support – отвечает за поддержку классов для создания многопоточных приложений,
COM marshaler – обеспечивает взаимодействие с СОМ – компонентами.
Base Class Library Support |
|||
Thread Support |
COM Marshaler |
||
Type Checker |
Exception Manager |
||
Security Engine |
Debug Engine |
||
MSIL to Native Compilers |
Code Manager |
Garbage Collector |
|
Class Loader |
|||
Рисунок 1.2. – Компоненты CLR.
Сама CLR состоит из двух главных компонентов:
ядра (mscoree.dll),
библиотеки базовых классов (mscorlib.dll).
Наличие этих файлов на диске – верный признак того, что на компьютере, по крайней мере, была предпринята попытка установки платформы .NET. Ядро среды выполнения реализовано в виде библиотеки mscoree.dll.
При компоновке сборки в неё встраивается специальная информация, которая при запуске приложения (файла с расширением EXE) или при загрузке библиотеки (обращение к DLL из неуправляемого модуля – вызов функции LoadLibrary для загрузки управляемой сборки) приводит к загрузке и инициализации CLR.
После загрузки CLR в адресное пространство процесса, ядро среды выполнения реализует следующие действия:
находит местонахождение сборки,
загружает сборку в память,
производит анализ содержимого сборки (выявляет классы, структуры, интерфейсы),
производит анализ метаданных,
обеспечивает компиляцию кода на промежуточном языке (CIL) в платформозависимые инструкции (ассемблерный код). Фактически создается так называемый управляемый модуль – переносимый исполняемый файл (Portable Executable или PE-файл)1,
выполняет проверки, связанные с обеспечением безопасности,
используя основной поток приложения, передаёт управление преобразованному в команды процессора фрагменту кода сборки.
Ниже представлена схема выполнения .NET приложения в среде CLR.
Рисунок 1.3. – Схема выполнения .NET приложения в среде CLR
2. .NET Framework Class library (FCL)
В .NET включены сборки библиотеки классов .NET Framework Class library (FCL), содержащие определения нескольких тысяч типов, каждый из которых предоставляет некоторую функциональность. Наборы «родственных» типов собраны в отдельные пространства имён.
К примеру, пространство имён System содержит базовый класс Object, из которого в конечном счёте порождаются все остальные типы. Таким образом, всякая сущность в .NET является объектом со своими полями и методами.
Кроме того, System содержит типы для целых чисел, символов, строк, обработки исключений, консольного ввода-вывода, группу типов для безопасного преобразования одних типов в другие, форматирования данных, генерации случайных чисел и выполнения математических операций. Типами из пространства имён System пользуются все приложения.
Для изменения существующего FCL-типа можно создать свой собственный производный тип. Можно создавать свои собственные пространства имён. Всё это будет чётко соответствовать принципам, предлагаемым платформой .NET.
Приведём некоторые наиболее распространённые пространства имён и краткое описание содержащихся там типов.
Таблица 1.1 – Основные пространства имён FCL
Пространство имён |
Содержание |
System |
Фундаментальные типы данных и вспомогательные классы |
System.Collections |
Хэш-таблицы, массивы переменной размерности и другие контейнеры |
System.Data |
Классы ADO.NET для доступа к данным |
System.Drawing |
Классы для вывода графики (GDI+) |
System.IO |
Классы файлового и потокового ввода-вывода |
System.Net |
Классы для работы с сетевыми протоколами, например, с HTTP |
System.Reflection |
Классы для чтения и записи метаданных |
System.Runtime.Remoting |
Классы для распределённых приложений |
System.ServiceProcess |
Классы для создания служб Windows |
Sustem.Threading |
Классы для создания и управления потоками |
System.Web |
Классы для поддержки HTTP |
System.Web.Services |
Классы для разработки web-сервисов |
System.Web.Services.Protocols |
Классы для разработки клиентов web-сервисов |
System.Web.UI |
Основные классы, используемые ASP.NET |
System.Web.UI.WebControls |
Серверные элементы управления ASP.NET |
System.Windows.Forms |
Классы для приложений с графическим интерфейсом пользователя |
System.Xml |
Классы для чтения и ввода данных в формате XML |
Все управляемые приложения используют библиотеку классов FCL. Это упрощает интеграцию приложений и позволяет легче переносить приложения с одного языка на другой.
