Код ASP.NET компилируется, а не интерпретируется

СОДЕРЖАНИЕ

1 Основи Internet технологій, використання їх як платформи для WEB-застосувань 2

1.1 Сучасні Інтернет технології побудови систем з архитектурою клієнт-сервер. 2

1.2 Архітектура Web-застосування з базою даних в технології ASP.NET 4

2 Історія компонентних технологій Microsoft. Хронологія розвитку і основні переваги платформи Microsoft .NET. 7

2.1 Історія компонентних технологій Microsoft 7

2.2 Хронологія розвитку платформи Microsoft.NET. 10

3 Архітектура платформи Microsoft .NET. 16

3.1 Архітектура .NET Framework. 19

3.2 Технології платформи Microsoft.NET. 23

3.3 Загальномовне виконуюче середовище Common Language Runtime(CLR) .Схема компіляції .NET-додатків. 28

3.4 Cтруктура CLR-модулів, збірка модулів. 31

3.5 Бібліотека класів .NET Framework Class Library(FCL). Основні простори імен FCL 33

3.6 Особливості та переваги ASP.NET. 35

4 ASP.NET Web Forms. 43

4.1 Модель програмування ASP.NET Web Forms. 43

4.2 Модель зворотного виклику. 50

4.3 Сторінкові директиви в ASP.NET Web Forms. 53

4.4 Серверні елементи управління. 57

4.5 Модель подій та життєвий цикл сторінок. 70

4.6 Збереження стану застосування. 80

4.6.1 Рядок запиту- QueryString. 80

4.6.2 Стан виду ViewState. 81

4.6.3 Стан сеансу - Session. 83

4.6.4 Стан застосування Application. 85

5 Технологія ADO.Net. 87

5.1 Переваги і нововведення ADO.Net. 87

5.2 Типи сховищ даних і рівні моделі постачальників. 89

5.3 Сполучені і роз'єднані оточення в ADO.Net 92

5.4 Підключені та автономні класи і об’єкти. 93

1 Основи Internet технологій, використання їх як платформи для WEB-застосувань

1.1 Сучасні Інтернет технології побудови систем з архитектурою клієнт-сервер.

Web-приложения представляют собой особый тип программ, построенных по архитектуре "клиент-сервер". Особенность их заключается в том, что само Web-приложение находится и выполняется на сервере - клиент при этом получает только результаты работы. Работа приложения основывается на получении запросов от пользователя (клиента), их обработке и выдачи результата. Передача запросов и результатов их обработки происходит через Интернет ( рис.1.1).

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рисунок 1.1 - Архитектура Web-застосування

Отображением результатов запросов, а также приемом данных от клиента и их передачей на сервер обычно занимается специальное приложение — браузер (Internet Expolrer, Mozilla, Opera и т. д.). Как известно, одной из функций браузера является отображение данных, полученных из Интернета, в виде страницы, описанной на языке HTML, следовательно, результат, передаваемый сервером клиенту, должен быть представлен на этом языке.

На стороне сервера Web-приложение выполняется специальным программным обеспечением (Web-сервером), который и принимает запросы клиентов, обрабатывает их, формирует ответ в виде страницы, описанной на языке HTML, и передает его клиенту. Одним из таких Web-серверов является Internet Information Services (IIS) компании Microsoft. Это единственный Web-сервер, который способен выполнять Web-приложения, созданные с использованием технологии ASP.NET.

В процессе обработки запроса пользователя Web-приложение компонует ответ на основе исполнения программного кода, работающего на стороне сервера, Web-формы, страницы HTML, другого содержимого, включая графические файлы. В результате, как уже было сказано, формируется HTML-страница, которая и отправляется клиенту. Получается, что результат работы Web-приложения идентичен результату запроса к традиционному Web-сайту, однако, в отличие от него, Web-приложение генерирует HTML-код в зависимости от запроса пользователя, а не просто передает его клиенту в том виде, в котором этот код хранится в файле на стороне сервера. То есть Web-приложение динамически формирует ответ с помощью исполняемого кода — так называемой исполняемой части.

За счет наличия исполняемой части, Web-приложения способны выполнять практически те же операции, что и обычные Windows-приложения, с тем лишь ограничением, что код исполняется на сервере, в качестве интерфейса системы выступает браузер, а в качестве среды, посредством которой происходит обмен данными, — Интернет. К наиболее типичным операциям, выполняемым Web-приложениями, относятся:

- прием данных от пользователя и сохранение их на сервере;

- выполнение различных действий по запросу пользователя: извлечение данных из базы данных (БД), добавление, удаление, изменение данных в БД, проведение сложных вычислений;

- аутентифицирование пользователя и отображение интерфейса системы, соответствующего данному пользователю;

- отображение постоянно изменяющейся оперативной информации и т. д.

Наиболее актуальна и динамично развивается в современных Веб-приложениях сервис-ориентированная архитектура.

Сервис-ориентированная архитектура (SOA, service-oriented architecture) – модульный подход к разработке программного обеспечения, основанный на использовании сервисов (служб) со стандартизированными интерфейсами.

Веб-сервисы – не зависящие от платформы, объектной модели и клиента программные компоненты, которые можно вызывать из клиентских Веб-приложений (а также из самих Веб-сервисов) через основанный на протоколе HTTP и языке XML протокол SOAP. Для описания Веб-сервисов используется XML-подобный язык WSDL, а для организации реестров Веб-сервисов, в которых разработчики и компании могут искать необходимые им сервисы, а также публиковать данные о своих сервисах – интерфейс UDDI.

Сервис-ориентированная архитектура Интернет систем основополагающая в реализации принципов технологии облачных вычислений.

1.2 Архітектура Web-застосування з базою даних в технології ASP.NET

ASP.NET — это платформа для создания Web-приложений и Web-сервисов, работающих под управлением IIS. Сегодня существуют другие технологии, позволяющие создавать Web-приложения. К ним относятся, прежде всего, очень популярные сегодня языки PHP и PERL, более старая и менее популярная технология CGI и т. д. Однако ASP.NET отличается от них высокой степенью интеграции с серверными продуктами, а также с инструментами Microsoft для разработки доступа к данным и обеспечения безопасности.

Кроме того, ASP.NET позволяет разрабатывать Web- и Windows-приложения, используя очень похожие технологические цепочки, одинаковые языки программирования, технологии доступа к данным. Более того, базовые языки программирования, с помощью которых сегодня возможна разработка Web-приложений, являются полностью объектно-ориентированными, что делает разработку исполнимой части, а также ее модификацию, обслуживание, отладку и повторное использование гораздо более простым занятием, чем в других технологиях. Существует достаточно большой перечень сильных сторон использования ASP.NET для создания сложных Web-приложений

Архитектура Web-приложения ASP.NET представлена на рисунке 1.2

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рис. 1.2 - Архітектура Web-застосування ASP.NET

ASP.NET функционирует исключительно на серверах Windows, так как требует наличия IIS. Для создания Web-приложений, не требующих IIS, а использующих, например, Web-сервер Apache и работающих на серверах под управлением операционных систем, отличных от Windows, применяются другие технологии.

Важным моментом в понимании архитектуры ASP.NET является тот факт, что она является частью инфраструктуры .NET Framework.

Целью данного курса является изучение одной из технологии создания Web приложения ASP.NET

2 Історія компонентних технологій Microsoft. Хронологія розвитку і основні переваги платформи Microsoft .NET.

2.1 Історія компонентних технологій Microsoft

Рассмотрим историю недавнего прошлого и ключевые технологии. Это следующие:

- OLE/COM/ActiveX

- DCOM

- Microsoft Visual Studio 6.0 и COM

- COM+/MTS/Enterprise Services

- Появление Microsoft.NET

Технология OLE (Object Linking and Embedding), так изначально называлась технология COM) появилась в начале 90-х. Технология OLE явилась большим шагом навстречу переиспользованию компонентов на уровне бинарного кода и переросла в дальнейшем в COM и ActiveX. Надо сказать, тут Microsoft породила существенную терминологическую путаницу, и разобраться, какая из этих аббревиатур какое понятие означает, довольно сложно. Будем рассматривать все эти три аббревиатуры вместе: OLE/COM/ActiveX, а для краткости называть COM (Component Object Model).

«COM – это метод разработки программных компонентов, небольших двоичных исполняемых файлов, которые предоставляют необходимые сервисы приложениям, операционным системам и другим компонентам. Разработка компонентов COM подобна разработке динамического объектно-ориентированного API. Компоненты COM объединяются друг с другом для создания приложений или систем компонентов. Компоненты можно отключать и менять во время выполнения, без перекомпиляции или перекомпоновки приложения»

С помощью COM появилась возможность переиспользовать готовые объекты, встраивая одни объекты в другие; в частности, хрестоматийный пример, который всегда приводился для объяснения COM, повествовал о том, как встроить таблицу Excel в документ Word. Собственно говоря, отсюда пошло первое название этой технологии, содержащее слово «встраивание» (embedding).

Технология DCOM (Distributed Component Object Model) , распределенная версия COM - появилась вслед за COM, в 1996 году в Windows NT 4.0 Несмотря на то, что с помощью DCOM стало возможным переиспользовать компоненты, находящиеся на других компьютерах, конфигурировать и настраивать приложения, использующие DCOM, было весьма сложно. Кроме того, DCOM использовал механизм RPC, что приводило со сложностями, связанными с файрволами. К минусам можно также отнести отсутствие DCOM на Windows 95/98.

Microsoft Visual Studio 6.0 и COM - вышла в 1998-м году. Она включила в себя IDE для нескольких языков, таких как Visual C++ и Visual Basic. Довольно долго этот пакет являлся рабочим инструментом для разработчиков в мире Microsoft. Поддержка COM была интегрирована в Visual Studio, особенно просто общаться с COM было возможно из Visual Basic. Однако Visual Basic не годится для системного программирования, стандартом де-факто для которого является до сих пор С++. Работа же с COM из Visual C++ была весьма нетривиальной. Вообще, программируя COM-приложения, программист сталкивался со слишком большим количеством технических тонкостей, отвлекающих его от непосредственной задачи. Скажем, различия в системе типов между разными языками, например, индексация массивов и строк, требовали написания специальных конверторов.

Таким образом, несмотря на шаг вперед в интеграции между языками и поддержке этой интеграции в продукте Visual Studio 6.0, у программистов существовали немалые проблемы.

Перечислим основные недостатки COM:

- Для программирования COM требовалось быть тонким знатоком ее устройства, в частности, механизмов ручного подсчета ссылок, маршалинга (передачи между границами процессов) сложных типов, различия делегирующего и неделегирующего IUnknown и т.п., что определяло значительную сложность этого процесса.

- Физическая природа контрактов. В модели СОМ контракт компонента является физическим т.е. двоичным контрактом. Следовательно, компонент СОМ предъявляет жесткие требования к межкомпонентным вызовам. Для правильной работы контракта СОМ необходимы точные смещения виртуальной таблицы для каждого метода. Контракт СОМ требует точной дисциплины стека, используемого при вызове методов, точного смещения каждой структуры данных, передаваемой в качестве фактического параметра метода, точной информации о механизме размещения памяти, используемом вызываемым методом, а также точного формата ссылки на объект. В терминах технологии СОМ контракт компонента - это всего лишь протокол формирования кадров стека, полностью лишенный семантики приложения.

- Интенсивное использование реестра.

- Отсутствие общей системы типов - у разных языков разные типы, что приводило к тонким ошибкам, в частности, при работе с объектами С++ из VB приходилось писать код для адаптации некоторых типов.

- По сути, ориентация на С++.

- Отсутствие хорошей среды разработки

В конце 96 года появился COM+. Под этой аббревиатурой подразумевалось использование DCOM вместе с MTS (Microsoft Transaction Server). COM+ стал следующим шагом в сторону решения сложных инфраструктурных вопросов. В COM+, построенной на основе COM, появилось автоматическое управление транзакциями, пулы ресурсов и пулы потоков, защита на основе ролей и т.д. Именно в COM+ появилось аспектно-ориентированное программирование.

К недостаткам DCOM и COM+/MTS можно отнести еще большую сложность, чем сложность COM. Вместе с тем COM+ по сути является прародителем .NET. Существенная часть функциональности COM+ перешла в .NET под именем Enterprise Services.

2.2 Хронологія розвитку платформи Microsoft.NET

.NET – не только следующий шаг Microsoft в направлении компонентной разработки, но целая платформа, помогающая в борьбе за удешевление разработки по всем фронтам:

- использование языков более высокого уровня: C#, VB.NET;

- использование более мощных инструментов поддержки разработки - современная среда разработки Visual Studio.NET

- увеличение объема переиспользования собственного кода - новая технология компонентной разработки, основанная на метаданных

- увеличение объема использования сторонних библиотек - мощная библиотека классов FCL

Хронология событий примерно такая:

Год 2000

CTP (Community Technology Preview)

Visual Studio 7.0 Beta 1

Год 2001

VS Beta 2, Release Candidate 1

Приняты стандарты C# и CLI

Хронология событий выпуска последующих версий приведена в таблице 1.1

Перечислим основные преимущества платформы Microsoft.NET перед предыдущими технологиями компании:

- Единая программная модель

- Упрощенная модель программирования

- Автоматическое управление версиями

- Упрощенное развертывание

- Многоплатформенность

- Автоматическое управление ресурсами

- Проверка безопасности типов

- Единая среда разработки

- Возможность отладки многоязыковых приложений

- Единая модель обработки ошибок

- Современная модель безопасности

- Интеграция языков программирования

- Стандартизация основных частей .NET

Таблица 1.1 – Список версий .NET Framework

Версия CLR Номер версии Дата выхода Visual Studio
1.0 1.0 1.0.3705.0 1 мая 2002 г Visual Studio .NET
1.1 1.1 1.1.4322.573 1 апреля 2003 г Visual Studio .NET 2003
2.0 2.0 2.0.50727.42 11 июля 2005 г Visual Studio 2005
3.0 2.0 3.0.4506.30 6 ноября 2006 г Visual Studio 2005 + расширения
3.5 2.0 3.5.21022.8 9 ноября 2007 г Visual Studio 2008
4.0 4.0.30319.1 12 апреля 2010 г Visual Studio 2010
4.5 4.5.50709.17929 15 августа 2012 г Visual Studio 2012
4.5.1 4.5.50938.18408 17 октября 2013 г Visual Studio 2013
4.5.2 4.5.51209.34209 5 мая 2014 г Visual Studio 2013
4.6 4.6.1038.0 20 июля 2015 г Visual Studio 2015
4.6.1 4.6.23123.0 17 ноября 2015 г Visual Studio 2015 Update 1

Версия .NET Framework 3.0 улучшила возможности NET Framework 2.0 добавив 4 новые подсистемы:

- Windows Presentation Foundation (WPF) – новая подсистема интерфейса пользователя и программный интерфейс на основе XML и векторной графики.

- Windows Workflow Foundation (WF) – новая идеология программирования, предлагаемая компанией Microsoft, основанная на бизнес-сущностях и потоках.

- Windows Communication Foundation (WCF) – сервис-ориентированная система обмена сообщениями, которая позволяет программам взаимодействовать локально или удаленно подобно веб-сервисам.

- Windows CardSpace (WCS) – это способ безопасной идентификации пользователей при перемещении между ресурсами Интернета без необходимости повторного ввода имен и паролей.

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рисунок 1.3 – Нововведения .NET Framework

Версия .NET Framework 3.5 предоставила новые возможности технологий из версий 2.0 и 3.0 и дополнительные технологии в виде новых сборок. В .NET Framework 3.5 впервые представлены следующие технологии:

- LINQ;

- новые компиляторы для C#, Visual Basic, C++ и J#;

- ASP.NET AJAX.

В .NET Framework 3.5 с пакетом обновления 1 (SP1) входят следующие технологии (рис. 1.3):

- платформа динамических данных ASP.NET;

- ADO.NET Entity Framework;

- поддержка поставщика данных SQL Server 2008;

- поддержка .NET Framework Client Profile.

Вышедшая Версия.NET Framework 4.0 получила следующие нововведения (рис.1.4):

- нововведения в CLR, а также в библиотеке классов самой платформы;

- усовершенствования в языках программирования Visual Basic и C#;

- улучшения в моделировании,а также в доступе к данным;

- усовершенствования в ASP.NET;

- улучшения в системе для построения клиентских приложений;

- улучшения в WF(Windows Workflow);

- нововведения в платформе для построения распределенных систем;

- улучшение эффективности параллельного программирования.

Основные новые возможности версии.NET Framework 4.5 и нововведения .NET 4.5.1 весьма важны для реализации Microsoft Azure:

- поддержка разработки приложений .NET для магазина Windows;

- поддержка разработки переносимых библиотек классов, в том числе - для Windows Phone и для магазина Windows;

- поддержка больших массивов, более 2 Гб;

- фоновая сборка мусора для серверов;

- фоновая JIT-компиляция для многоядерных процессоров;

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рис. 1.4 - Нововведения .NET Framework 4.0

- улучшенная производительность при извлечении ресурсов приложений;

- новые возможности для параллельных вычислений.

- автоматическая переадресация привязки для сборок, в Visual Studio 2013, при компиляции приложения, ориентированного на .NET Framework 4.5.1, в файл конфигурации приложения можно добавить переадресации привязок, если приложение или его компоненты ссылаются на несколько версий одной и той же сборки. Можно также включить эту функцию для проектов, предназначенных для более старых версий платформы .NET Framework;

- возможность сбора диагностической информации, чтобы помочь разработчикам повысить производительность серверных и облачных приложений;

- возможность явно уплотнять кучу больших объектов во время сборки мусора;

- дополнительные улучшения производительности, например, приостановка приложений ASP.NET, усовершенствования многоядерного JIT и более быстрый запуск приложений после обновления платформы .NET Framework.

3 Архітектура платформи Microsoft .NET

Microsoft.NET Framework – это платформа для создания, развертывания и запуска web-сервисов и приложений. Она представляет высокопроизводительную, основанную на стандартах, многоязыковую среду, которая позволяет интегрировать существующие приложения с применениями и сервисами следующего поколения, а также решать задачи развёртывания и использования интернет-приложений.

Концепция Microsoft.NET – целостный взгляд на новую эпоху в развитии информационных систем и Интернета, когда самые разные программные приложения доставляются пользователями как сервисы, взаимодействуют между собой в соответствии с конкретными потребностями бизнеса, доступны на самых разных устройствах от высокопроизводительного кластера до мобильного телефона, имеют понятный и полностью адаптирующийся к потребностям каждого пользователя интерфейс. Официальный старт платформы Microsoft.NET состоялся 13 февраля 2002 года. В этот день на грандиозной презентации в Сан-Франциско были представлены рабочие версии двух ключевых элементов платформы:

- операционной среды .NET Framework;

- инструментального набора Visual Studio.NET.

Структура и логика работы платформы Microsoft.NET представлена на рисунке 3.1.

На верхнем уровне архитектуры .NET находится совершенно новое средство разработки под названием Visual Studio.NET(VS.NET),которое делает возможным быструю разработку различных приложений и веб-сервисов. VS.NET представляет собой интегрированную среду разработки (Integrated Development Environment, IDE), поддерживающею четыре различных языка и такие средства, как межъязыковая отладка и редактор XML-схем, при этом каждый язык взаимодействует с .NET Framework через общий языковый интерфейс.

В центре .NET располагается Microsoft .NET Framework, который фактически представляет собой единую среду исполнения программ и поддержки их разработки, в которой собраны базовые классы для всех языков программирования, реализованные в виде библиотеки ядра System, а также большого числа специализированных библиотек. Над ними располагается набор средств формирования исполняемых модулей различного типа, единый для разных языков.

         
    Код ASP.NET компилируется, а не интерпретируется - student2.ru
 
  Код ASP.NET компилируется, а не интерпретируется - student2.ru
 
    Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рисунок 3.1- Структурная схема .NET Framework.

На нижнем уровне находится собственно операционная система, поверх которой и функционирует Microsoft .NET Framework

С одной стороны, такой механизм позволил достаточно просто подключать к рассматриваемой среде различные языки. В настоящее время о создании таких средств COBOL, FORTRAN, Perl и т.п. объявил целый ряд независимых разработчиков. В тоже время почти у всех этих инструментов есть альтернативные варианты среды, которые работают вне VS.NET и напрямую взаимодействуют с .NET Framework.

С другой стороны, такая унификация автоматически нивелировала функциональные возможности разных языков, в значительной степени сводя проблемы выбора конкретного инструмента к приверженности людей к тому или иному синтаксису.

Microsoft .NET поддерживает не только языковую независимость, но и языковую интеграцию. Это означает, что разработчик может наследовать от классов, обрабатывать исключения и использовать преимущества полиморфизма при одновременной работе с несколькими языками. Платформа .NET Framework предоставляет такую возможность с помощью спецификации CTS (Common Type System — общая система типов), которая полностью описывает все типы данных, поддерживаемые средой выполнения, определяет, как одни типы данных могут взаимодействовать с другими и как они будут представлены в формате метаданных .NET. Например, в .NET любая сущность является объектом какого-нибудь класса, производного от корневого класса System.Object. Спецификация CTS поддерживает такие общие понятия, как классы, делегаты (с поддержкой обратных вызовов), ссылочные и размерные типы.

Важно понимать, что не во всех языках программирования .NET обязательно должны поддерживаться все типы данных, которые определены в CTS. Спецификация CLS (Common Language Specification — общая языковая спецификация) устанавливает основные правила, определяющие законы, которым должны следовать все языки: ключевые слова, типы, примитивные типы, перегрузки методов и т. п. Спецификация CLS определяет минимальные требования, предъявляемые к языку платформы .NET. Компиляторы, удовлетворяющие этой спецификации, создают объекты, способные взаимодействовать друг с другом. Любой язык, соответствующий требованиям CLS, может использовать все возможности библиотеки FCL (Framework Class Library — библиотека классов платформы). CLS позволяет и разработчикам, и поставщикам, и производителям программного обеспечения не выходить за пределы общего набора правил для языков, компиляторов и типов данных.

3.1 Архітектура .NET Framework

Платформа .NET Framework является надстройкой над операционной системой, в качестве которой может выступать любая версия Windows.

Собственно .NET Framework состоит из трёх основных частей:

- среда выполнения программ CLR (Common Language Runtime - общеязыковая среда выполнения), в которой выполняются объекты, построенные на этой платформе;

- иерархическое множество унифицированных библиотек классов FCL(Framework Class Labrary) для построения Web-служб и приложений, работающих в Windows и в Интернете;

- набор Framework уровня приложений;

- Отношения архитектурных компонентов платформы .NET Framework с концептуальной точки зрения представлены на рисунке 3.2.

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рисунок. 3.2. - Архитектура .NET Framework

Самым важным компонентом платформы .NET Framework является CLR (Common Language Runtime), предоставляющая среду, в которой выполняются программы. Главная ее роль заключается в том, чтобы обнаруживать и загружать типы .NET и производить управление ими в соответствии с полученными командами. CLR включает в себя виртуальную машину, во многих отношениях аналогичную виртуальной машине Java. На верхнем уровне среда активизирует объекты, производит проверку безопасности, размещает объекты в памяти, выполняет их, а также запускает сборщик мусора.

Под сборкой мусора понимается освобождение памяти, занятой объектами, которые стали бесполезными и не используются в дальнейшей работе приложения. В ряде языков программирования (например, C/C++) память освобождает сам программист, в явной форме отдавая команды как на создание, так и на удаление объекта. В этом есть своя логика. Однако в CLR задача сборки мусора и другие вопросы, связанные с использованием памяти решается в нужное время и в нужном месте исполнительной средой, ответственной за выполнение вычислений.

На на рис.3.2. над уровнем CLR находится набор базовых классов платформы, над ним расположены слой классов данных и XML, а также слой классов для создания Web-служб (Web Services), Web- и Windows-приложений (Web Forms и Windows Forms). Собранные воедино, эти классы известны под общим именем FCL (Framework Class Library). Это одна из самых больших библиотек классов в истории программирования. Она открывает доступ к системным функциям, включая и те, что прежде были доступны только через API Windows, а также к прикладным функциям для Web-разработки (ASP.NET), доступа к данным (ADO.NET), обеспечения безопасности и удаленного управления. Имея в своем составе большое количество классов, библиотека FCL способствует быстрой разработке настольных, клиент-серверных и других приложений и Web-служб.

Набор базовых классов платформы — нижний уровень FCL — не только прячет обычные низкоуровневые операции, такие как файловый ввод/вывод, обработка графики и взаимодействие с оборудованием компьютера, но и обеспечивает поддержку большого количества служб, используемых в современных приложениях таких как управление безопасностью, поддержка сетевой связи, управление вычислительными потоками, работа с отражениями и коллекциями и т. д..

Над этим уровнем находится уровень классов, которые расширяют базовые классы с целью обеспечения управления данными и XML. Классы данных позволяют реализовать управление информацией, хранящейся в серверных базах данных. В число этих классов входят классы SQL (Structured Query Language, язык структурированных запросов), дающие программисту возможность обращаться к долговременным хранилищам данных через стандартный интерфейс SQL. Кроме того, набор классов, называемый ADO.NET, позволяет оперировать постоянными данными. Платформа .NET Framework поддерживает также целый ряд классов, позволяющих манипулировать XML-данными и выполнять поиск и преобразования XML.

Базовые классы, классы данных и XML расширяются классами, предназначенными для построения приложений на основе трех различных технологий: Web Services (Web-службы), Web Forms (Web-формы) и Windows Forms (Windows-формы). Web-службы включают в себя ряд классов, поддерживающих разработку облегченных распределяемых компонентов, которые могут работать даже с брандмауэрами и программами трансляции сетевых адресов (NAT). Поскольку Web-службы применяют в качестве базовых протоколов связи стандартные протоколы HTTP и SOAP, эти компоненты поддерживают в киберпространстве подход "Plug & Play".

Инструментальные средства Web Forms и Windows Forms позволяют применять технику RAD (Rapid Application Development — быстрая разработка приложений) для построения Web- и Windows-приложений. Эта техника сводится к перетаскиванию элементов управления с панели инструментов на форму, двойному щелчку по элементу и написанию кода, который обрабатывает события, связанные с этим элементом.

Основные NET- технологии можно представить следующими ключевыми технологиями:

ASP.NET - компонентная версии ASP, называемая ASP.NET, это эволюция ASP в .NET. ASP.NET представляет собой полнофункциональ-ную платформу для создания сложных серверных веб-приложений. Неотъемлемой частью ASP.NET являются технологии Web-Forms и Web-Services. Сегодня ASP.NET пользуется небывалой популярностью, но с выхода первой версии .NET Framework более 12 лет назад появилось совершенно новое направление, составляющее конкуренцию традиционному программированию с использованием ASP.NET, которое получило название ASP.NET MVC

Web-Forms ( web-формы) – часть ASP.NET , поддерживающая серверные элементы управления, которые создают пользовательский HTML-интерфейс для программ просмотра и WEB-приложений, включают набор классов, позволяющих быстро разрабатывать веб-приложения с графическим интерфейсом пользователя.

Web-сервисы-XML - приложения, исполняющиеся на web-сервере и представляющееся интернет-клиентам набором функций API или web-методов, включают ряд классов, поддерживающих разработку облегченных распределенных компонентов, которые могут быть применены с использованием стандартных Интернет-протоколов в различных WEB-приложениях. XML – расширенный язык разметки. Представляет универсальный способ для описания и обмена структурированной информацией, независимо от приложений и разработчиков, используется для обмена данными между web-сервисами и клиентами.

Windows Forms – функциональная библиотека Windows для построения клиентских приложений, которая поддерживает набор классов, позволяющий разрабатывать обычные Windows-приложения, обеспечивая простую разработку графических интерфейсов, общий совместимый интерфейс для многих языков программирования. Набор классов содержится в пространстве имён System.Windows.Forms.

ADO.NET - набор средств и слоев , позволяющих приложению легко управлять и взаимодействовать со своим файловым или серверным хранилищем данных. ADO.NET – естественное развитие ADO. ADO(Active X Data Objects)- механизм доступа к БД, на платформах Microsoft, представляет собой набор COM – объектов, доступ к данным которых обеспечивают OLE-DB-провайдеры. ADO.NET снимает ограничения на обмен данными, используя XML в качестве формата.

3.2 Технології платформи Microsoft.NET

Платформа .NET Framework является мощным инструментом для разработчика, поскольку содержит большое обилие технологий для создания приложений.При этом, важным достоинством .NET Framework является то, что функциональность библиотеки базовых классов доступна во всех типах приложений.

В целом, все приложения можно разделить на несколько типов:

- настольные приложения - приложения, которые запускаются на локальном компьютере пользователя;

- веб-приложения - приложения, которые работают в рамках веб-сервера и доступны пользователю через браузер в рамках протокола HTTP/HTTPS;

- веб-приложения с богатым пользовательским интерфейсом - приложения, которые доставляются пользователю по протоколу HTTP/HTTPS в рамках браузера и исполняются на клиентской стороне;

- веб-сервисы - программный код, который выполняется на стороне сервера и может быть вызван с клиента для получения каких-либо данных или выполнения операции;

- мобильные приложения - приложения, которые выполняются на мобильных устройствах.

Для каждого из приведенных типов приложений в составе .NET Framework существуют соответствующие технологии, которые позволяют создавать приложения. Кроме того, .NET Framework содержит общие библиотеки, которые можно использовать в разных типах приложений.

Настольные приложения отличаются тем, что запускаются непосредственно на компьютере пользователя. Это – наиболее распространенный тип приложений. Настольные приложения обычно имеют доступ к ресурсам компьютера пользователя, таким как жесткий диск, звуковое оборудование и т.д. К достоинствам такого типа приложений можно отнести интерактивность пользовательского интерфейса и возможность работы приложения вне зависимости от подключения к сети Интернет и другим ресурсам. Однако, для работы таких приложений их необходимо устанавливать на локальный компьютер.

Настольные приложения можно разделить на три вида – оконные приложения, консольные приложения и службы Windows. Оконные приложения обладают графическим интерфейсом. Консольные приложения обычно имеют вид командной строки, а интерфейс таких приложений является текстовым, а не графическим. Наконец, службы Windows вовсе не имеют пользовательского интерфейса, а работают в фоновом режиме.

Для построения приложений с оконным графическим интерфейсом в рамках платформы .NET Framework могут использоваться технологии Windows Forms (доступно начиная с .NET Framework 1.0) и Windows Presentation Foundation (доступно начиная с .NETFramework 3.0).

На рисунке 3.3 ниже показано окно создания проекта на .NET Framework. Как видно, доступны все описанные выше типы проектов.

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рисунок 3.3. - Создание проекта на .NET Framework.

Веб-приложения отличаются от настольных тем, что работают удаленно на веб-сервере. Пользователь использует возможности веб-приложений посредством браузера и протокола HTTP/HTTPS. Преимуществом этого типа приложений является то, что нет никакой необходимости устанавливать их на компьютер каждого пользователя – приложение нужно установить на веб-сервер, после чего оно становится доступным для всех пользователей. Однако, недостатком таких приложений является ограниченные возможности построения пользовательских интерфейсов. Это происходит из-за того, что пользовательский интерфейс строится на основе форматов HTML, CSS и JavaScript, которые являются достаточно ограниченными. Поэтому функциональность пользовательских интерфейсов обычно является достаточно ограниченной.

Для создания веб-приложений в рамках платформы .NET Framework используется платформа Microsoft ASP.NET. Это – универсальный и мощный механизм, который позволяет строить высокоэффективные и мощные веб-приложения.

На рисунке 3.4 ниже показано окно создания проекта веб-приложения на .NET Framework

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рисунок 3.4. - Создания проекта веб-приложения на .NET Framework

Поскольку веб-приложения обладают серьезным недостатком – ограниченными возможностями по формированию интерфейса пользователя – появился новый тип приложений, который называется богатые интернет-приложения или интернет-приложения с богатым пользовательским интерфейсом (Rich Internet Applications, RIA). Идеология этих приложений состоит в том, что в браузер интегрируется специальное дополнение (plugin), которое способно отображать дополнительный тип содержимого. После этого, когда пользователь отрывает страницу в браузере, на сторону клиента передается программный код, который работает в рамках этого дополнения. Поскольку в этом случае весь код отрабатывает на стороне клиента, у разработчиков появляется больше возможностей по формированию пользовательских интерфейсов.

Для построения подобного типа приложений существует несколько технологий. Одна из наиболее известных технологий – это технология Adobe Flash. Кроме того, существует также технология Microsoft Silverlight, которая позволяет наиболее удобно интегрироваться с остальными технологиями в рамках .NET Framework.

Зачастую возможности по построению приложений RIA комбинируют с построением обычных веб-приложений.

Другим типом приложений являются сервисыили веб-сервисы. Сервисы – это некий программный код, который расположен на сервере и запускается по запросу от пользователя. Например, можно создать набор сервисов по работе с данными из базы данных, хранящейся на сервере. Обычно, другие типы приложений, такие как настольные приложения, веб-приложения и другие обращаются к сервисам с целью выполнить какую-либо операцию на сервере или получить с сервера данные.

В рамках платформы .NET Framework существует ряд технологий, которые позволяют создавать сервисы. Наиболее старой технологией является ASP.NET Web Services. Она позволяет создавать простые веб-сервисы, которые работают по протоколу HTTP/HTTPS. Дальнейшим развитием стала технология Windows Communication Foundation (WCF). Эта платформа является наиболее мощным и гибким инструментом, которая поддерживает различные типы каналов (HTTP, TCP, именованные каналы и др.) и существенно расширяет возможности разработчика по созданию сервисов.

Также существуют дополнительные ответвления проекта WCF – это WCF Syndication Extensions (WCF REST) и ADO.NET Data Services. Эти проекты разработаны для того, чтобы можно было удобно строить сервисы доступа к данным.

Наконец, последним типом приложений являются мобильные приложения. Мобильные приложения работают в рамках мобильных устройств на базе операционной системы Windows Mobile. Для мобильных устройств также существует реализация подмножества возможностей .NET Framework, которая называется .NET Compact Framework.

Таким образом, весь спектр технологий в рамках платформы .NET Framework можно представить следующей схемой

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рисунок . 3.5. - Технологий и типы приложений платформы

.NET Framework

3.3 Загальномовне виконуюче середовище Common Language Runtime(CLR) .Схема компіляції .NET-додатків

Common Language Runtime (CLR) – общая для языков среда исполнения, которая является краеугольным камнем в фундаменте организации вычислительных процессов всей концепции .NET с помощью её решаются основные задачи повышения надёжности и безопасности программ, платформенной независимости.

Все исполняемые модули .NET-приложений (CLR-модули) реализуются не в виде машинного кода, а с помощью так называемого байт-кода по спецификациям промежуточного языка Microsoft Intermediate Language (MSIL), т.е. каждый совместимый с .NET компилятор должен преобразовывать исходный код на языке высокого уровня в двоичный MSIL-код, который уже затем будет исполняться в среде CLR.

MSIL называют также псевдоассемблером, так как он определяет набор команд процессора, однако в данном случае процессором является CLR. MSIL содержит ~ 100 команд.

В отличие от Java, CLR выполняет код не в режиме классического интерпретатора, а путём предварительной компиляции в машинный код отдельных фрагментов программы или целого приложения

.NET-приложения исполняются иначе, чем традиционные Windows-приложения. Такие программы компилируются фактически в два этапа. На первом этапе исходный код компилируется во время построения проекта и вместо исполняемого файла с машинными кодами получается сборка2) (assembly), содержащая команды промежуточного языка MSIL (Microsoft Intermediate Language — промежуточный язык Microsoft). Код IL сохраняется в файле на диске. При этом файлы MSIL (сокращенно IL), генерируемые компилятором, например, С#, идентичны IL-файлам, генерируемым компиляторами с других языков .NET. В этом смысле платформа остается в неведении относительно языка. Самой важной характеристикой среды CLR является то, что она общая; одна среда выполняет как программы, написанные на С#, так и программы на языке VB.NET.

Второй этап компиляции наступает непосредственно перед фактическим выполнением страницы. На этом этапе CLR транслирует промежуточный код IL в низкоуровневый собственный машинный код, выполняемый процессором. Процесс происходит следующим образом: при выполнении .NET-программы системы CLR активизирует JIT-компилятор, который затем превращает MSIL во внутренний код процессора. Этот этап известен как оперативная компиляция "точно к нужному моменту" (Just-In-Time) или JIT-компиляция (JIT'ing), и он проходит одинаково для всех приложений .NET (включая, например, приложения Windows). При исполнении программы CLR берет на себя управление памятью, контроль типов и решает за приложение ряд других задач. На рис.3.6. показан этот двухэтапный процесс компиляции.

Стандартный JIT-компилятор работает по запросу. Когда вызывается тот или иной метод, JIT-компилятор анализирует IL-код и производит высокоэффективный машинный код, выполняемый очень быстро. JIT-компилятор достаточно интеллектуален, чтобы распознать, был ли код уже скомпилирован, поэтому во время выполнения программы компиляция происходит лишь при необходимости. По ходу своего выполнения .NET-программа работает все быстрее и быстрее, так как повторно используется уже скомпилированный код.

Спецификация CLS подразумевает, что все языки платформы .NET генерируют очень похожий IL-код. Кроме того, при компилировании программы в дополнение к MSIL формируется еще один компонент — метаданные. Они описывают данные, используемые программой, и это позволяет коду взаимодействовать с другим кодом. В результате объекты, созданные на одном языке, доступны и могут наследоваться на другом. То есть можно создать базовый класс на языке VB.NET, а производный от него класс — на языке С#.

В целом при написании приложения создается так называемый управляемый код (managed code), который выполняется под контролем среды исполнения CLR-приложения, не зависящей от языка. Поскольку приложение запускается под контролем CLR, управляемый код должен соответствовать определенным требованиям,т. е. компилятор должен создать MSIL-файл, предназначенный для CLR, а также использовать библиотеки .Net Framework, при выполнении которых он получает множество преимуществ, включая современное управление памятью, способность совмещать языки, высокий уровень безопасности передачи данных, поддержку контроля версии и понятный способ взаимодействия компонентов программного обеспечения.

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Рис. 3.6. Схема компиляции .NET-приложения

Таким образом, компиляция .NET делится на два этапа с целью предоставления разработчикам удобных условий и мобильности. Перед созданием низкоуровневого машинного кода компилятору необходимо знать, в какой операционной системе и на каком базовом оборудовании будет функционировать приложение. Благодаря двум этапам компиляции можно создать скомпилированную сборку с кодом .NET и распределить ее более чем на одну платформу.

Конечно, компиляция не будет столь полезна, если ее выполнение будет необходимо каждый раз при запросе пользователем Web-страницы. Приложения ASP.NET не нужно компилировать всякий раз при запросе Web-страницы или Web-службы. Вместо этого код IL создается один раз и повторно генерируется только при изменении исходного кода. Подобным образом файлы собственного машинного кода кэшируются в системном каталоге.

3.4 Cтруктура CLR-модулів, збірка модулів.

Рассмотрим структуру CLR-модулей. CLR-модули состоят из исполняемого кода и метаданных. Метаданные, например, различные декларации полей, методов, свойств и событий, широко применяются и в COM-технологии, что и составляет ее основное отличие от обычных двоичных DLL. В CLR состав метаданных значительно расширен, что позволяет более эффективно контролировать версии, проверять надежность источников поступления программ и т. п.

Исполняемый код в основном представлен в виде "управляемого кода". Возможны и фрагменты "неуправляемого кода", но они будут отныне большой редкостью. Это означает, что CLR не просто преобразует MSIL в машинные инструкции, а выполняет эти действия с учетом определенных внешних установок. Например, Модуль1 может задать свой собственный набор прав, предоставляемый вызываемому им Модулю2, запретив, в частности, любые операции изменения файлов.

Платформенная независимость обеспечивается CLR, поскольку предполагается наличие JIT-компиляторов с любых возможных языков программирования через MSIL для разных типов процессоров и аппаратуры (карманные ПК, сотовые телефоны и т.п. ).

Компиляторы .NET Framework генерирует «управляемые модули», CLR-модули, которые содержат CIL + метаданные, но CIL не способен использовать CLR-модули напрямую, т.к. базовой единицей защиты, управления версиями и развёртыванием в .NET Framework является «сборка» (assembly).

Сборка – это файл или набор файлов, в совокупности составляющих логическую единицу. Большинство сборок содержит один файл, но может содержать несколько файлов. Все файлы в составе одной сборки должны находиться в одном каталоге.

Многофайловые сборки( рис.3.4) обычно служат для инсталляции модулей, написанных на разных языках и для объединения управляемых модулей с обычными файлами, содержащими изображения в формате JPEG и др. ресурсы.

Код ASP.NET компилируется, а не интерпретируется - student2.ru

Aux1.netmodule Image. jpg Aux2.netmodule

Рисунок 3.7 - Многофайловая сборка

Как CLR узнает, какие файлы относятся к сборке?

Один из файлов, входящих в состав, содержит декларацию (mainfest), содержащую дополнительные метаданные:

- имя строки;

- список всех остальных файлов сборки вместе с криптографическими хэш-значениями, вычисленными по содержимому файлов;

- список типов данных, экспортируемых другими файлами сборки, и информация, связывающая эти типы данных с файлами, где они определены;

- номер версии в формате;

- и др.

3.5 Бібліотека класів .NET Framework Class Library(FCL). Основні простори імен FCL

Библиотека классов .NET Framework – CLS совместимая библиотека классов, интерфейсов и типовых значений. Она обеспечивает доступ к системным возможностям и спроектирована, чтобы стать основой, на которой будут создаваться приложения .NET, компоненты и элементы управления. Это классы для сетевого взаимодействия, ввода-вывода, безопасности и т.п., которые разделены по функциональным группам.

FCL содержит более 7000 типов: классов, структур, интерфейсов, перечислений. Некоторые классы FCL содержат до 100 методов, свойств и других членов.Чтобы облегчить изучение и использование FCL, Microsoft разделила эту библиотеку на иерархические пространства имён. Всего в FCL около 100 таких пространств, в каждом содержаться классы и другие типы, имеющие общее назначение. Наборы «родственных» типов собраны в отдельные пространства имён. Например, API Windows для управления окнами инкапсулирована в пространство имён System.Windows Forms, пространство System.Collection – содержит классы хэш-таблиц, массивов переменной размерности и др.

Пространство имён System содержит базовый класс Object, из которого в конечном счёте порождаются все остальные типы. Таким образом, всякая сущность в .NET является объектом со своими полями и методами.

Кроме того, System содержит типы для целых чисел, символов, строк, обработки исключений, консольного ввода-вывода, группу типов для безопасного преобразования одних типов в другие, форматирования данных, генерации случайных чисел и выполнения математических операций. Типами из пространства имён System пользуются все приложения.

Для изменения существующего FCL-типа можно создать свой собственный производный тип. Можно создавать свои собственные пространства имён. Всё это будет чётко соответствовать принципам, предлагаемым платформой .NET.

Таким образом, FCL – это библиотека базовых функций, на основе которых строятся .NET-приложения. Принципиальная новизна заключается в том, что если ранее подобный набор создавался для каждого языка программирования, то теперь он – один для всех средств.

Таблица 3.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 – логически делится на:

- библиотеку базовых классов – классы поддерживают элементарную функциональность ввода-вывода, манипуляции со строками, управления безопасностью, функциональность отражений и коллекций и др. функций.

- библиотеку дополнительных классов – расширяет базовые классы поддержкой управления данными и XML (ADO.NET, SQL, XSLT, XPath, XML и т.д.).

3.6 Особливості та переваги ASP.NET

Когда платформа ASP.NET была выпущена впервые, от предыдущих продуктов Microsoft и конкурирующих платформ ее отличали семь ключевых фактов:

Код ASP.NET компилируется, а не интерпретируется

Подобно всем приложениям .NET, приложения ASP.NET всегда компилируются, а в действительности проходят через два этапа компиляции.

На первом этапе написанный код на C# компилируется в код на промежуточном языке, который называется MSIL или просто IL. Этот первый этап как раз и является одной из главных причин, по которым в .NET могут использоваться самые разные языки. Скомпилированный файл с кодом на IL представляет собой сборку.

Второй этап компиляции происходит непосредственно перед фактическим выполнением страницы. На этом этапе код IL компилируется в код на низкоуровневом машинном языке. Называется этот этап оперативной JIT компиляцией и выглядит одинаково для всех приложений .NET

Процесс компиляции в .NET разделен на два этапа для предоставления разработчикам как можно большего удобства и мобильности. Благодаря выполнению таких двух этапов компиляции, можно создавать скомпилированную сборку с кодом .NET и распространять ее среди более, чем одной, платформы. Код на IL создается один раз и генерируется заново только в случае изменения исходного кода, а файлы, содержащие машинный код, кэшируются в системном каталоге. Это бесспорно способствует ускорению процесса преобразования и отображения страниц Web-приложения и благотворно влияет на общую производительность системы

Наши рекомендации