Философия .NET - Международный банковский институт

advertisement
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Тема 2. Технические и программные средства реализации
информационных процессов
Цель
Познакомиться с основными принципами устройства независимой от
используемых
языков
программирования
платформой
.NET
Framework, созданной компанией Microsoft для интеграции
существующих
технологий
программирования
и
разработки
распределенных, настольных и встроенных приложений.
Задачи
1. Познакомиться с концепцией платформы .NET Framework.
2. Изучить структуру обобщенной среды выполнения CLR
(Common Language Runtime).
3. Понять назначение промежуточного языка IL (Intermediate
Language).
4. Рассмотреть иерархию библиотеки классов BCL (Base Class
Library).
5. Сделать выводы о преимуществах новой концепции
программирования.
Оглавление
Философия .NET
Поддержка промышленных стандартов
Постановка задачи и спецификация программы
Унифицированные модели программирования
Основные компоненты .NET Framework
Компонент Common Language Runtime
Библиотека базовых классов Framework
Данные и XML-классы
Приложения для Web
Приложения для Windows
Понятие сборки
Пространства имен
Компилирование и выполнение управляемого кода
Выводы
Вопросы для самопроверки
Литература
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Философия .NET
Любому современному программисту, который желает идти в ногу с
последними
веяниями,
каждые
несколько
лет
приходится
переучиваться. Языки (С++, Visual Basic, Java), библиотеки (MFC1,
ATL2, STL3), архитектуры (COM4, CORBA5), которые стали вехами в
развитии программирования за последние годы, постепенно уходят в
тень лучших или, по крайней мере, более молодых программных
технологий. Вне зависимости от того, нравится это программистам
или нет, этот процесс неизбежен. Платформа .NET – попытка
привести
все
имеющиеся
направления
в
технологии
программирования в единую концепцию, с тем, чтобы дальнейшее
развитие технологий осуществлялось на единой интегрированной
платформе, не имеющей зависимости от конкретного языка
программирования или конкретной технологии программирования.
Поддержка промышленных стандартов
По замыслу компании Microsoft среда .NET Framework должна
базироваться на промышленных стандартах, уже использующихся на
практике. Поэтому, в качестве основы взяты стандарты:
 Расширяемый язык разметки Extensible Markup Language,
XML;
 Протокол доступа к простым объектам Simple Object Access
Protocol, SOAP.
Кроме того, компания Microsoft представила в Европейскую
ассоциацию производителей компьютеров (European Computer
Manufactures Association, ECMA) рабочий проект стандарта не
зависящей от языка инфраструктуры (Common language Infrastructure,
CLI). Этот стандарт является набором спецификаций, которые
необходимы для разработки компиляторов, поддерживаемых средой
.NET Framework. Независимым производителям была предоставлена
возможность использовать эти спецификации, чтобы создавать
собственные компиляторы, совместимые с .NET. Так, компания
Interactive Software engineering (ISE) разработала компилятор языка
Eiffel для платформы .NET. Кроме того, теперь сторонние
производители могут создавать не зависимую от языка среду
выполнения (Common Language Runtime, CLR), которая позволит
запускать на различных платформах приложения, написанные на
1
Microsoft Foundation Classes.
Active Template Library.
3
Standard Type Library.
4
Component Object Model.
5
Common Object Request broker Architecture.
2
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
языках, поддерживающих .NET – технологию. Например, появилась
возможность выполнять приложения на Visual Basic в среде Linux.
Постановка задачи и спецификация программы
Принципиальная схема разработки программ в среде .NET полностью
соответствует
стандартной
схеме
разработки
программного
обеспечения и включает следующие основные этапы: постановку
задачи, экономико-математическое описание, разработка алгоритма,
составление программы, тестирование и отладка, приемо-сдаточные
испытания, опытная и промышленная эксплуатации.
Постановка задачи представляет собой концепцию создаваемого
программного продукта. Она должна прояснить цель проекта,
сформулировать требования к проекту и его результатам и выявить
ограничения, которые существуют для достижения этих целей и
выполнения этих требований.
На всех этапах разработки программного обеспечения исключительно
важным вопросом является создание спецификаций. Назначение
спецификации состоит в определении поведения применяемых в
проекте абстракций. Дальнейшая реализация, обеспечивающая
описываемое поведение, удовлетворяет заданной спецификации.
Спецификации важны для достижения требуемой модульности
программы.
Спецификация
описывает
соглашение
между
разработчиками и пользователем. Создание спецификаций для
программных продуктов, создаваемых в среде .NET, выполняется в
соответствии с методами ведения объектно-ориентированного
анализа: диаграмм вариантов использования, диаграмм классов,
диаграмм
состояний,
диаграмм
деятельности,
диаграмм
последовательностей. Все эти методы подробно изучаются в курсе
«Проектирование информационных систем». В нашем курсе мы
рассмотрим возможности среды .NET, реализующие стандартные
спецификации программ.
Чтобы
сделать
процесс
программирования
максимально
производительным, компания Microsoft создала расширяемую среду
программирования .NET Framework – CLR (Common Language
Runtime). В результате этого разработчикам были предоставлены:
унифицированная библиотека классов – BCL (Base Class Library),
система общих типов данных CTS (Common Type System) и
спецификации конструкций языка CLS (Common Language
Specification). Используя принцип наследования и уже существующие
интерфейсы, можно легко получить доступ к данным классам и
расширить их функциональные возможности. В частности, вы сможете
создать класс для кнопки управления, который не только будет
наследовать базовые функции класса кнопок из среды .NET
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Framework,
но
функциональные
приложения.
и
позволит
получить
новые
возможности, которые требуются
уникальные
для вашего
Унифицированные модели программирования
Еще одна цель, к которой стремились разработчики .NET Framework, –
независимость среды .NET от языков программирования и интеграция
созданных на разных языках компонентов и кода. Для достижения
этой цели все коды, написанные на языках, соответствующих
спецификации CLS (Common Language Specification) компилируются в
промежуточный код, поддерживающий общий набор базовых типов
данных и единый набор методов доступа к коду (рис. 2.1).
Промежуточный язык Microsoft Intermediate Language (IL), в который
происходит первичная компиляция, не зависит от платформы, на
которой будет производиться выполнение программы.
В результате появилась возможность взаимодействия не только
классов, разработанных с использованием различных CLSсовместимых языков, но и структур объектно-ориентированного
программирования (ООП). Например, используя VB.NET, можно
разработать класс, который будет наследовать свойства класса,
созданного в C#.NET.
Сейчас у компании Microsoft уже существует пять языков
программирования, в которых реализована поддержка .NET
Framework. Кроме Visual Basic .NET, в этот список входят такие языки,
как C#.NET, C++.NET, Jscript .NET, J#.NET. независимые компании
также создали версии многих популярных языков программирования
для среды .NET Framework, например Perl, SmallTalk, Delphi.
C#
Исходный код
C#
компилятор
Perl
Исходный код
Perl
компилятор
COBOL
Исходный код
COBOL
компилятор
C++
Исходный код
Intermediate Language (IL)
и метаданные
IL
Компилятор
(DLL или
EXE)
C++
компилятор
Рис. 2.1. Все компиляторы, ориентированные на .NET, генерируют IL-инструкции и
метаданные
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Двоичные файлы .NET, для которых используются стандартные
расширения DLL и EXE, по своему внутреннему содержанию не имеют
абсолютно ничего общего с обычными исполняемыми файлами.
Например, файлы DLL не предоставляют свои методы в
распоряжение приложений на компьютере. Самое важное отличие
двоичных файлов .NET заключается в том, что они не содержат
зависящих от платформы команд. Содержимое двоичных файлов
.NET – это платформенно-независимый «промежуточный язык»,
который официально называется Microsoft Intermediate Language
(MSILL, промежуточный язык Microsoft) или просто IL.
Основные компоненты .NET Framework
Теперь, когда мы рассмотрели назначение и возможности среды
разработки .NET Framework, рассмотрим ее основные компоненты.
Компонент Common Language Runtime
Базовым компонентом среды .NET Framework является компонент
Common Language Runtime (CLR) – не зависимая от языка среда
выполнения. Он используется для управления кодом во время
выполнения приложения, а также для обеспечения соответствующего
уровня безопасности при взаимодействии между кодом приложения и
операционной системой.
На рис. 2.2. продемонстрирована роль среды выполнения .NET и ее
главные компоненты. Первый компонент – это ядро среды
выполнения, которое реализовано в виде библиотеки mscoree.dll. При
обращении к приложению .NET mscoree.dll автоматически загружается
в память, и, в свою очередь, эта библиотека управляет процессом
загрузки в память сборки данного приложения. Ядро среды
выполнения ответственно за множество задач:
 загрузки кода в память и подготовки его к выполнению;
 преобразования кода из промежуточного языка IL (Intermediate
Language) в исполняемый код;
 управления выполнением кода;
 управления системой безопасности на уровне кода и
пользователя;
 автоматического перемещения и освобождения памяти;
 отладки и контроля над выполнением кода;
 обеспечения структурированной обработки исключительных
ситуаций.
Второй главный компонент CLR – это библиотека базовых классов.
Сама библиотека разбита на множество отдельных сборок, однако
главная сборка библиотеки базовых классов представлена файлом
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
mscorlib.dll. В библиотеке базовых классов содержится огромное
количество типов для решения распространенных задач при создании
приложений. Приложения .NET будут обязательно использовать
сборку mscorlib.dll и по мере необходимости – другие сборки (как
встроенные, так и создаваемые вами).
На рис. 2.2. представлен путь, который проходит исходный код
приложения. Прежде чем воплотиться в выполнение каких-либо
действий на компьютере.
Рис. 2.2. Роль среды выполнения .NET
Библиотека базовых классов Framework
Библиотека базовых классов .NET Framework (Base Class Library
Framework) находится на самом верхнем уровне иерархии среды CLR.
Она содержит классы, обеспечивающие поддержку ссылочных и
обычных типов, инкапсулирующих доступ к функциям системы.
Типы являются структурами данных, определяющими операции,
которые можно выполнять над заданными значениями. Ссылочные
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
типы – это сложные типы, например, классы и интерфейсы, служащие
для описания значения, представленного адресом в памяти. Обычные
типы – простые типы данных, к которым относятся, в частности,
целочисленные и логические значения.
Базовые классы и интерфейсы используются программистами в
качестве
основы
для
создания
приложений,
компонентов,
пользовательских элементов управления и пользовательских типов
данных (классов).
В библиотеку базовых классов включено также несколько типов,
которые инкапсулируют структуры данных, выполняют основные
операции ввода-вывода, инициируют управление безопасностью и
обеспечивают передачу данных в сети.
Данные и XML6-классы
На верхнем уровне иерархии библиотеки базовых классов
расположены классы, поддерживающие управление данными (тип
классов, называемых ADO.NET7). Используя объектную модель
ADO.NET, программист имеет доступ к данным, хранящимся в
различных структурах, и может ими управлять. Эта объектная модель
и созданные компанией Microsoft классы позволяют эффективно
выполнять слабосвязанные изолированные и многоуровневые
приложения.
Основу
для
работы
ADO.NET
составляют
данные
в
структурированном XML-формате. Благодаря его применению гораздо
проще передавать данные по протоколу HTTP и выполнять их
обработку в системах, поддерживающих различные платформы. Еще
одно преимущество, предоставляемое ADO.NET, – возможность
извлекать из базы не только данные, но и ассоциированные с ними
метаданные. Данные извлекаются в виде миниатюрной связанной
базы данных, что повышает эффективность их получения и обработки
при отключении от источника данных.
Компания Microsoft разработала несколько технологий доступа к
базам данных других производителей. Например, доступ к
информации, хранящиеся на сервере Microsoft SQL Server 7.0 или
более поздней версии, осуществляется посредством поставщика
данных SQL, а к базам данных DB2 и Oracle – посредством
поставщика данных OLE DB. Однако последний не подключается
напрямую к ядру базы данных, поэтому его использование является
менее надежным и эффективным, чем непосредственное соединение.
6
7
eXtensible Markup Language
ActiveX Data Object.NET
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Компания Microsoft предпочитает открытые стандарты, и среда .NET
Framework является именно таковой, поэтому вполне вероятно, что
вскоре многие независимые разработчики систем управления базами
данных, начнут поставлять средства доступа и к другим хранилищам
данных.
При хранении, обработке, а также передаче данных и метаданных
ADO.NET использует возможности языка XML. Классы ADO.NET
позволяют обрабатывать, осуществлять поиск и преобразовывать
XML-данные. Фактически применяющий эти классы программист
может работать с любым устройством хранения данных и на любой
платформе, поддерживающей XML-формат.
Приложения для Web
В среде .NET Framework представлен базовый набор классов,
которые могут быть применены на web-сервере в целях разработки
пользовательских интерфейсов и служб, предназначенных для webсовместимых клиентов. Используя эти классы, носящие общее
название ASP.NET8, можно создать один пользовательский
интерфейс, который будет динамически взаимодействовать с
клиентом. В процессе работы среда .NET Framework выполняет
идентификацию клиента. Делающего запрос (тип браузера и его
версия), и предоставляет соответствующий интерфейс.
Графические пользовательские интерфейсы (Graphical User Interface,
GUI) для web-приложений, которые запускаются на Windows-клиентах,
стали теперь более надежными. Поскольку .NET Framework содержит
многие функциональные возможности API9, ранее свойственные
только основанным на формах традиционным Windows-приложениям
C++ и VB. Еще одно из преимуществ применения .NET Framework при
разработке приложений для Web состоит в том, что код серверного
приложения может теперь быть написан на любом совместимом с
.NET языке (ранее он создавался только с использованием языков
сценариев, таких как VBScript или Jscript).
На основе входящих в состав ASP.NETбазовых классов и
интерфейсов можно создавать web-службы, которые (по мнению
компании Microsoft) смогут обеспечить те же функциональные
возможности, что и компоненты, разработанные с помощью
предыдущих версий VC++ и VB. Такие компоненты использовали
двоичные файлы, поэтому работать с ними в сети Интернет было
сложно. Количество типов данных, которые могли эффективно
использовать компоненты, также было ограничено. Все эти проблемы
8
9
Active Server Page
Application Programming Interface
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
были устранены в рамках концепции .NET. Версии компонентов webслужб, созданных в рамках .NET технологии, позволяют легко
взаимодействовать
с
любым
клиентским
приложением,
поддерживающим язык XML и протокол HTTP.
Приложения для Windows
Кроме того, компания Microsoft представила богатый набор классов
для
построения
традиционных
GUI10-приложений
Windows.
Разработчики добавили в классы .NET возможности, прежде
доступные только через скрытые вызовы функций API. Ранее
написание приложений для Windows на C++ значительно отличалось
от их разработки в среде Visual Basic. Теперь средства разработки
приложений для Windows стали составной частью набора базовых
классов .NET Framework и поддерживаются всеми .NET языками
программирования.
Понятие сборки
Приложения для .NET структурированы в сборки, представляющие
собой набор из одного или нескольких файлов. Весь код, который
выполняется с использованием среды .NET, также должен быть
помещен в сборку. Сборка содержит код, ресурсы и манифест
(метаданные о данной сборке), необходимые для запуска приложения.
Сборки могут вкладываться в один DLL или EXE файл, либо в
нескольких файлов, включающих отдельные DLL-файлы, графические
файлы и файлы манифеста. Одной из главных функций сборки
является создание ограничений для типов, ссылок и средств
безопасности, другая важная функция – построение модуля установки
компонента.
Пространства имен
Библиотека классов .NET создана в виде иерархической структуры,
что способствует более эффективному управлению средой
разработки. Все классы объединены в пространства имен. Каждое
такое пространство содержит классы и другие типы, которые
относятся к специфическим задачам или группам задач – операциям
ввода-вывода, созданию web-приложений. Работе с данными и XMLдокументами и так далее.
Организация среды на основе пространств имен значительно снижает
вероятность конфликтов имен при проектировании. Благодаря
объединению схожих функций в одном пространстве имен удалось
значительно упростить использование среды разработки. Например,
10
Graphic User Interface
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
для создания обычного Windows –приложения разработчику, скорее
всего, понадобятся классы пространства имен System.Windows.Forms.
Корневым пространством имен в .NET является пространство имен
System. Например, чтобы добавить в форму элемент меню, требуется
создать экземпляр класса System.Windows.Forms.MenuItem:
Private withEvents MenuItem as System.Windows.Forms.MenuItem
В Visual Basic.NET можно использовать оператор Imports, поэтому не
требуется постоянно указывать в коде полное имя объекта.
Imports System.Windows.Forms
Private WithEvents MenuItem as MenuItem
В C# для этого используется другое ключевое слово Using System;
Для получения информации о пространствах имен и типах в среде
Visual Studio.NET, в которой вы будете создавать свои приложения,
следует открыть меню View и выбрать команду Object Browser.
Компилирование и выполнение управляемого кода
В процессе компиляции исходный код преобразуется в код
промежуточного языка (IL). Код в IL-формате не зависит от конкретной
аппаратной платформы и типа процессора, поэтому перед
выполнением программы он должен быть еще раз преобразован в
команды соответствующего процессора. В результате компиляции
исходного кода получается исполняемый файл с дополнительными
секциями,
содержащими
информацию,
необходимую
среде
выполнения. Кроме IL-кода в этом файле содержатся метаданные,
которые записаны в манифесте. Запись метаданных в один файл с
исполняемым
кодом
позволяет
сделать
данный
код
самоописывающимся,
поэтому
отпадает
необходимость
в
использовании библиотеки типов и дополнительных файлов языка
описания интерфейсов.
Платформа .NET обеспечивает интеграцию языков, поскольку
исходный код, написанный на различных языках программирования,
совместимых с .NET, компилируется в один и то же IL-формат, а
формат метаданных базируется на едином общем системном типе
данных. Это можно считать расширением возможностей модели
взаимодействия COM-компонентов Windows, где, например, код
клиента, написанный на VB, может создавать экземпляры и
использовать методы кода компонента, реализованного в C++.
Программа на языке IL, хранящаяся в файле, остается неизменной до
тех пор, пока файл не будет вызван на выполнение. В момент вызова
IL-код преобразуется с помощью компилятора JIT(Just-In-Time
Compiler) в код конкретной платформы.
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Выводы
Перечислим основные возможности и преимущества, которые
предоставляет платформа .NET:
 Полные возможности взаимодействия с существующим
программным кодом, например, двоичные компоненты COM
совместимы с двоичными файлами .NET.
 Полное и абсолютное межъязыковое взаимодействие. В
отличие от классической технологии программирования COM,
в .NET поддерживаются межъязыковое наследование,
межъязыковая обработка исключений и межъязыковая
отладка.
 Общая среда выполнения для любых приложений .NET, вне
зависимости от того, на каких языках они были созданы. Один
из важных моментов при этом – то, что для всех языков
используется один и тот же набор встроенных типов данных.
 Библиотека базовых классов, которая обеспечивает сокрытие
всех
сложностей,
связанных
с
непосредственным
использованием вызовов API, и предлагает целостную
объектную модель для всех языков программирования,
поддерживающих .NET.
1.
2.
3.
4.
5.
6.
Вопросы для самопроверки
Какие компоненты среды выполнения CLR вы можете назвать?
Является ли язык IL полноценным языком программирования?
Можно ли на нем писать программный код?
В чем состоит принцип двойного компилирования (см. рис. 1)?
Относится ли библиотека классов BCL к обобщенной среде
выполнения CLR (см. рис. 2)?
Какие типы приложений можно создавать, используя концепцию
.NET?
В чем заключаются преимущества иерархической структуры
библиотеки классов?
Литература
1. Брукшир, Дж., Гленн. Введение в компьютерные науки. Общий
обзор, 6-е издание. : Пер. с англ. — М.: Издательский дом
«Вильямс», 2001. — 688 с.: ил. – Парал. тт. англ.
2. Эпплман Д. Переход на VB.NET: стратегии, концепции, код. —
СПб.: Питер, 2002. — 464 с.: ил.
3. Троелсен Э. C# и платформа .NET. Библиотека программиста —
СПб.: Питер, 2006 — 796 с.: ил.
Download