Автор: Пользователь скрыл имя, 12 Января 2011 в 00:47, реферат
В реферате приведены основные направления развития индустриальных платформ программирования основанных на платформе Microsoft .NET Framework для построения больших распределенных программных систем. Приведен обзор внутреннего устройства платформы .NET и общеязыковой исполняющей среды (CLR). Осуществлен сравнительный анализ технологических возможностей и средств платформы .NET для создания распределенных программных систем в сжатые сроки. Определены условия и ограничения применимости различных технологий и методов платформы .NET в зависимости от специфики программного проекта.
Введение…………………………………………………………………….…….3
1.Предпосылки создания платформы Microsoft .NET Framework…………..4
1.Концепция .NET ………………………………………….…………….4
2.Динамика развития Microsoft .NET Framework…………...………...5
2.Архитектура Microsoft .NET Framework ……………………………….…..7
1.Функциональные особенности .NET – платформы ………………....7
2.2 Общеязыковая среда выполнения CLR………………………………...7
3.Промежуточный язык программирования (MSIL)……………….....9
4.Библиотеки классов BCL .NET Framework…..…..………..………..11
3.Создание приложений Windows ….….……………………………………..15
1.Процесс создания Windows-приложений …………..…………………….….…..15
3.2 Обработка событий в System.Windows.Forms ….….………………...16
4 Разработка Web-приложений.……………...……….……………………... 18
5 Средства разработки .NET-приложений …..…………...............……….....22
5.1 Инструментарий разработки NET-приложений……………...…….....22
5.2 Обзор оболочки Visual Studio .NET…………...…………….……….....22
5.3 Программная структура Visual Studio .NET ………………………........24
Заключение ………………………………………………….…………....….…..26
Список использованных источников …………………………………….….…27
Министерство образования Республики Беларусь
Учреждение образования
“Белорусский государственный университет
информатики
и радиоэлектроники”
Кафедра
экономической информатики
Реферат
По курсу:
“Основы
информационных технологий»
«Платформа
Microsoft .NET Framework»
Выполнил:
магистрант ИЭФ
Мищук А. А.
Минск 2010
СОДЕРЖАНИЕ
Введение…………………………………………………………
2.2 Общеязыковая среда выполнения CLR………………………………...7
3.2 Обработка событий в System.Windows.Forms ….….………………...16
4 Разработка
Web-приложений.……………...……….………
5 Средства
разработки .NET-приложений …..…………...............……….....
5.1
Инструментарий разработки NET-приложений……………...…….....
5.2 Обзор оболочки Visual Studio .NET…………...…………….……….....22
5.3 Программная структура Visual Studio .NET ………………………........24
Заключение ………………………………………………….…………....….
Список использованных
источников …………………………………….….…27
ВВЕДЕНИЕ
Microsoft .NET Framework – программная технология, предназначенная для создания распределенных программ и веб-приложений, и основанная на кроссплатформенных взаимодействиях реализуемых между различными существующими архитектурами программирования.
В
реферате приведены основные направления
развития индустриальных платформ программирования
основанных на платформе Microsoft .NET Framework
для построения больших распределенных
программных систем. Приведен обзор внутреннего
устройства платформы .NET и общеязыковой
исполняющей среды (CLR). Осуществлен сравнительный
анализ технологических возможностей
и средств платформы .NET для создания распределенных
программных систем в сжатые сроки. Определены
условия и ограничения применимости различных
технологий и методов платформы .NET в зависимости
от специфики программного проекта.
Попытки унифицировать программные средства с сохранением ключевых возможностей различных платформ программирования, позволяющие гибко и беспрепятственно разворачивать на базе общих известных принципов единые распределенные программные системы, а также учитывающие современные требования к обмену данными в сети Интернет, – привели к созданию под предводительством корпорации Microsoft семейства служб следующего поколения Next Generation Windows Services (NGWS). В дальнейшем, в силу преобладания Интернет-контента в вычислительных операциях, приведенные службы были переработаны, систематизированы и объединены в группу .NET.
Одной из основных идей Microsoft .NET является совместимость различных служб, написанных на разных языках программирования. Например, служба, написанная на C++ для Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок [1].
Платформа .NET решает многие проблемы, которые досаждали программистам в прошлом. К их числу относятся проблемы, связанные с развертыванием приложений, управлением версиями, утечкой памяти, а также проблемы безопасности. Платформа .NET позволяет разрабатывать мощные, независимые от языка программирования, настольные приложения и масштабируемые (расширяемые) Web-службы, основанные на открытых стандартах Интернет и построенные на базе новой мощной полнофункциональной библиотеки классов .NET Framework. Разработчикам программного обеспечения технология .NET предоставляет новую программную платформу и великолепные инструментальные средства разработки, в которых основную роль играет язык XML (eXtensible Markup Language – расширяемый язык разметки) [2].
Несомненно, на развитие технологии .NET оказали влияние другие технологические достижения, в частности расширяемый язык разметки XML, платформа Java™, а также модель компонентных объектов Microsoft (Component Object Model – COM).
Надо отметить, что и до технологии Microsoft .NET предпринимались попытки создавать единые платформы программирования с универсальными механизмами взаимодействий между средами разработки. Так, например, ранее Microsoft в технологии Windows DNA, нацеленной на решение определенных бизнес-задач посредством серверных продуктов Microsoft, была предложена идея развернуть общее промежуточное звено, с помощью которого различные распределенные системы смогли бы соединяться между собой, обеспечив при этом надежные, масштабируемые и свободно управляемые процессы. Однако, будучи только технической спецификацией, Windows DNA не имело каких-то определенных компонентов. В Microsoft .NET, напротив, кроме набора спецификаций, входит несколько реальных продуктов: компиляторы, библиотеки классов и даже целые приложения для конечных пользователей.
Следует также
отметить существование других альтернативных
проектов кроссплатформенного
DotGNU– проект создания свободной платформы программирования, альтернативы Microsoft .NET, который предоставляет возможности компилировать и запускать C# и Си-приложения, использующие базовые классовые библиотеки, XML, System.Windows.Forms – на таких операционных системах, как GNU/Linux, FreeBSD и Mac OS X.
Существуют и
другие .NET-подобные системы специфические
для определенного круга задач (платформы
ROTOR, и пр.) [4].
Microsoft начала разрабатывать .NET Framework в конце 1990-х под именем Next Generation Windows Services (NGWS). Позже в 2000 году была выпущена первая бета версия .NET 1.0.
Первый релиз .NET Framework вышел 5 января 2002 года с поддержкой ОС: Windows 98, NT 4.0, 2000 и XP. Уже в расширенной версии .NET Framework 1.1 были добавлены функции управления серверными технологиями (поддержка Windows Server 2003). Начиная с версии 2.0, осуществляется поддержка обобщенных классов (англ. generic), анонимных методов, реализуется аппаратно-программная поддержка 64-битных платформ x64 и IA64. Следующим этапом развития технологии .NET Framework в версии 3.0 было добавление новых четырёх компонентов:
1) Windows Presentation Foundation (WPF) – графическая (презентационная) подсистема в составе .NET Framework 3.0, имеющая прямое отношение к XAML.
2) Windows Communication Foundation (WCF);
3) Windows Workflow Foundation (WF);
4) Windows CardSpace (WCS) – универсальная система аутентификации личных данных пользователя.
Начиная с версии .NET Framework 3.5 реализуется ряд новых возможностей, включающие расширенную поддержку языков C# 3.0 и VB.NET 9.0: добавление языка LINQ и провайдеров LINQ to Objects, LINQ to XML и LINQ to SQL; включение в поставку ASP.NET AJAX; расширение функциональности WF и WCF; унификация пространства имён System.CodeDom.
И как результат, 29 сентября 2008 года Microsoft анонсировала релиз четвёртой версии среды .NET Framework 4.0, основные отличительные особенности которой включают:
1) Parallel Extensions — PLINQ (Parallel LINQ) и Task Parallel Library, предназначенные для упрощения программирования для многопроцессорных и распределённых систем;
2) изменения в Visual Basic и C#;
3) полная поддержка IronPython, IronRuby и F#;
4) поддержка подмножества .NET Framework и ASP.NET в варианте «Server Core»;
5) поддержка Code Contracts;
6) средства моделирования Oslo и язык программирования M, предназначенный для создания предметно-ориентированных языков и моделей.
На
рисунке 1 приведены основные этапы развития
платформенных концепций, расширяющие
деятельность системы .NET.
Рисунок 1 – Стек технологий .NET Framework
2.1 Функциональные особенности .NET – платформы
Большинство разработчиков воспринимает инфраструктуру .NET собственно как .NET-приложения. Однако, та часть .NET, с помощью которой разрабатываются приложения, называется .NET Framework.
Microsoft .NET Framework призвана реализовать следующие цели:
Основу
Microsoft .NET Framework составляют две фундаментальные
структуры – это общеязыковая среда выполнения
(CLR – Common Language Runtime) и библиотека классов
.NET Framework (BCL – Base Class Library). При этом CLR является
базой для объединения различных платформ,
а BCL является надстройкой и ответственна
за синтаксис между средами программирования.
Common Language Runtime (CLR) – это ключевая технология Microsoft .NET Framework, представляющая собой общеязыковую среду выполнения кода, в которой обеспечивается эффективное взаимодействие приложений, пересекающее границы разных языков программирования (cross-language interoperability). CLR, по сути, является «прослойкой» между операционной системой и кодом приложений для .NET Framework. Такой код называется управляемым (managed code). С другой точки зрения CLR – это виртуальная машина, в которой функционируют приложения .NET. Говоря о CLR как о виртуальной машине, необходимо понимать, что код, выполняемый в инкапсулированной и управляемой среде, отделен от других процессов на этой машине.
Любой компилятор для .NET позволяет получить из исходного текста программы двоичный исполняемый файл или библиотеку кода. Однако эти файлы по своей структуре и содержанию не имеют ничего общего с традиционными исполняемыми файлами операционной системы. Двоичные файлы для платформы .NET называются сборками (assembly). Сборка состоит из следующих частей:
1.
Манифест (manifest) – описание сборки:
версия, ограничения безопасности,
список внешних сборок и
2.
Метаданные – специальное
3.
Код на промежуточном языке
Microsoft Intermediate Language (MSIL или просто IL).
Данный код является
Основная задача CLR – это манипулирование сборками: загрузка сборок, трансляция кода IL в машинно-зависимый код, создание окружения для выполнения сборок. Важной функцией CLR является управление размещением памяти при работе приложение и выполнение автоматической сборки мусора, то есть фонового освобождения неиспользуемой памяти. Кроме этого, CLR реализует в приложениях для .NET верификацию типов, управление политиками безопасности при доступе к коду и некоторые другие функции.
Кроме упомянутых элементов, выделим еще две части платформы .NET:
Кроме
того хотелось бы подчеркнуть, что любой
компилятор для .NET является верхним элементом
архитектуры. Библиотека классов BCL, имена
ее элементов не зависят от языка программирования.
Специфичным элементом языка остается
только синтаксис, но не работа с внешними
классами. Это упрощает межъязыковое взаимодействие,
перевод текста программы с одного языка
на другой. С другой стороны, тесная связь
с CLR неизбежно находит свое отражение
в синтаксических элементах языка программирования
[6].
Для облегчения перевода языков в среду .NET в Microsoft разработан промежуточный язык – Microsoft Intermediate Language (MSIL). Чтобы откомпилировать приложение для .NET, компиляторы берут исходный код, написанный на определенном языке, и создают из него MSIL-код. MSIL – это полноценный язык, пригодный для написания приложений. Однако, как в случае с ассемблерным языком, пользоваться им без особых обстоятельств не придется. Каждая группа разработчиков компилятора решает, в какой мере он будет поддерживать MSIL. Но если создатели компиляторов захотят, чтобы их язык полноценно взаимодействовал с другими языками, им придется ограничить себя рамками, определяемыми спецификациями CLS.
Однако
следует четко понимать, что при
реализации перевода из одного языка
в другой с использованием принципов
.NET удается сократить колоссальное количество
времени и ресурсов. Например, если необходимо,
чтобы какое-либо приложение функционировало
на N-различных вычислительных машинах,
работающих в своем уникальном интерфейсе,
то для этого (без применения механизмов
.NET) следовало бы произвести ровно N-копий
компиляций, зачастую несовместимых между
собой и требующих знание N-языков программирования
(рисунок 2, а). При этом общее количество
приложений созданных для работы всех
ЭВМ составляет N2. Применение механизма
MSIL (рисунок 2, б), за счет трансляции одного
интерфейса в другой, требует в этом случае
ровно N-компиляций. То есть применение
данной процедуры в многоинтерфейсных
средах повышает эффективность такой
разработки ровно в N раз [5].
Рисунок 2 – Процедура переноса кода (а) без применения принципов .NET
и (б) с использованием
механизма MSIL
Рассмотрим более подробно функционирование механизма MSIL на примере кода написанного на С#.
Шаг 1. По стандартной процедуре осуществляется компиляция кода с помощью компилятора языка С# в ЕХЕ-файл.
Шаг 2. Компилятор создает MSIL-код и помещает в раздел со свойством “только на чтение” выходного файла стандартный РЕ-заголовок (признак машино-независимой выполняемой программы для Win32) и импортирует из CLR функцию _CorExeMain.
Шаг 3. При запуске приложения, ОС загружает этот РЕ, а также все нужные динамические подгружаемые библиотеки, в частности, библиотеку, которая экспортирует функцию _CorExeMain (mscoree.dll).
Шаг 4. Загрузчик ОС по стандартной процедуре выполняет переход в точку входа РЕ, устанавливаемую компилятором. Однако так как ОС не в состоянии выполнить MSIL-код, то фактически в точке входа содержится препятствие, в котором установлена команда перехода к функции jCorExeMain из mscoree.dll. Данная функция перехватывает выполнение MSIL-кода, помещенного в РЕ.
Шаг 5. Так как MSIL-код не может быть выполнен непосредственно (ведь это не машинный код), CLR компилирует его с помощью оперативного компилятора (just-in-time, или JIТ) в команды процессора. Эта компиляция выполняется только для непосредственно вызываемых методов программы.
Шаг 6. Откомпилированный выполняемый код сохраняется на машине и перекомпилируется только в случае изменения исходного кода.
Для преобразования MSIL в настоящий машинный код можно применить один из следующих JIТ-компиляторов.
Все языки .NET имеют в своем распоряжении библиотеки классов .NET Framework. Библиотеки классов .NET Framework играют чрезвычайно важную роль в обеспечении межъязыкового взаимодействия приложений, так как они позволяют разработчикам использовать единый программный интерфейс ко всем функциональным средствам CLR. Библиотеки классов .NET Framework позволяют добиться наиболее высокой производительности в разработке компиляторов. Благодаря такому набору все языки в идеале располагают одними и теми же функциональными возможностями, поскольку все они могут выполнять свои процедуры (если речь идет не только об объявлении переменных) только с помощью этих библиотек.
Библиотеки классов .NET Framework включают поддержку практически всех известных технологий применяемых в современных средах программирования, таких как файлового ввода-вывода, классы для работы со строками и массивами, коллекциями данных, поддержки многопоточности и обмена с БД, XML и SOAP. Частью BCL являются компоненты, поддерживающие различные технологии обработки данных и организации взаимодействия с пользователем. Это классы для работы с XML, базами данных (ADO.NET), создания Windows-приложений и Web-приложений (ASP.NET) [8], [9].
На
рисунке 3 приведена систематизированная
модель, включающая основные библиотеки
классов .NET Framework.
Рисунок
3 – Библиотеки классов .NET Framework
Библиотеки классов .NET Framework представляют большой и очень полезный набор типов, которые ускоряют процесс программирования. Группы исполняемых классов объединены в определенные библиотеки.
Ниже приводится основное назначение и состав приведенных библиотек (или их подгрупп).
Основные библиотеки:
System – содержит основные классы;
System.Data – управляет данными из множественных источников, включая массивы и БД;
System.Xml – обеспечивает поддержку работы XML
System.Drawing – обеспечение графических интерфейсов;
System.Web – реализация клиент-серверного соединения;
System.Windows.Forms – создание пользовательских интерфейсов для приложений Windows;
Основные применяемые подгруппы классов:
System.Collections – определяет различные коллекции объектов;
System.IO – реализует функции ввода/вывода информации;
System.Net – реализация компьютерного интерфейса для выхода в сеть;
System.Text – функции символьного кодирования;
System.Threading – процедуры многопоточного программирования;
System.Runtime.Remoting – поддержка распределенных приложений;
System.Web.Services – услуги предоставляемые сетью.
В
.NET Framework сглажено различие между типами
и классами.
А именно, любой тип можно воспринимать
как класс, который может быть связан с
другими типами отношением наследования.
Это позволяет рассматривать все типы
.NET Framework в виде иерархии классов (рис.
4). При этом существует базовый тип System.Object,
являющийся предком всех типов. Все структурные
типы наследуются от класса System.ValueType [6].
Рисунок 4 – Иерархия типов .NET Framework
Все
массивы в .NET Framework могут рассматриваться
как классы, являющиеся потомками
класса System.Array. В таблице 1 описаны основные
методы и свойства класса System.Array.
Таблица 1 – Элементы класса System.Array
Имя элемента | Описание |
Rank | Свойство только для чтения, возвращает размерность массива |
Length | Свойство только для чтения, возвращает число элементов массива |
GetLength() | Метод возвращает число элементов в указанном измерении |
GetValue() | Метод возвращает значение элемента с указанными индексами |
SetValue() | Метод устанавливает значение элемента с указанными индексами (значение – первый аргумент) |
Sort() | Статический метод, который сортирует массив, переданный в качестве параметра. Тип элемента массива должен реализовывать интерфейс IComparable |
BinarySearch() | Статический метод поиска элемента в отсортированном массиве. Тип элемента массива должен реализовывать интерфейс IComparable |
IndexOf() | Статический метод, возвращает индекс первого вхождения своего аргумента в одномерный массив или –1, если элемента в массиве нет |
LastIndexOf() | Статический метод. Возвращает индекс последнего вхождения своего аргумента в одномерный массив или –1, если элемента в массиве нет |
Reverse() | Статический метод, меняет порядок элементов в одномерном массиве или его части на противоположный |
Copy() | Статический метод. Копирует раздел одного массива в другой массив, выполняя приведение типов |
Clear() | Статический метод. Устанавливает для диапазона элементов массива значение по умолчанию для типов элементов |
CreateInstance() | Статический метод. Динамически создает экземпляр массива любого типа, размерности и длины |
Для
того, чтобы наглядно продемонстрировать
работу конкретного .NET-приложения,
ниже будут приведены основные способы
создание приложений c использованием
классов System.Windows.Forms, а для разработки
Web-приложений будут применяться классы
System.Web.
Ниже приводится пример разработки приложения Windows с помощью Visual Studio.NET (особенности которого будут описаны во втором разделе). В качестве языка программирования будем использовать C# [3].
Для примера мы создадим Windows-приложение,
которое позволит вносить
1. Создаем новый проект Windows Application (Windows-приложение).
2 На панели инструментов Toolbox, перетянув указатель мыши на вертикальную вкладку Toolbox в левой части главного окна Visual Studio.
3. Далее следует перетащить из панели инструментов Toolbox две надписи (Label), два поля (TextBox) и две кнопки (Button) на форму.
4. В конструкторе форм (Forms Designer) необходимо щелкнуть на надписи label1. Тем самым выделится этот управляющий элемент в окне Properties (Свойства), которое находится под Solution Explorer (Поиск решения). Окно Properties (Свойства) позволяет изменять свойства управляющих элементов. В поле свойства Text (Текст) объекта labell введите Amount (Сумма). После того, как введено значение, следует нажать возврат каретки. Можно увидеть, что текст появится на форме.
5. Также следует изменить текст надписи label2 на Balance (Баланс).
6. Вводим значения свойств полей и кнопок в соответствии с таблицей 2.
7. С помощью маркеров размера, которые находятся посредине каждой стороны формы, изменяем ее размер и сохраняем изменения, сделанные в проекте.
8. Добавляем обработчики событий кнопок, дважды щелкнув на каждой кнопке.
9.
Добавляем необходимый код к коду, сгенерированному
мастером:
Таблица 2 – Значения свойств полей (Textbox) и кнопок (Button)
Имя свойства | Текст |
txtAmount | (не заполняется) |
txtBalance | (не заполняется) |
cmdDeposit | Deposit (Вклад) |
cmdWithdraw | Withdraw (Снять) |
Ниже
приведен листинг программы:
public class Forml : System.Windows.Forms.Form
//
общедоступный класс Form1:
{
public Form1()
{
//
//
Требуется для поддержки
//
InitializeComponent();
//
Добавляем код конструктора
// вызова InitializeComponent
//
txtAmount.Text = "25";
// Текст txtBalance.Text = "100";
// Текст
}
/// <summary>
/// Основная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Forml{));
}
private void cmdDeposit_Click(object sender,
System.EventArgs e)
{
int
amount = Convert.Tolnt32(txtAmount.
int
balance = Convert.Tolnt32(txtBalance.
balance += amount;
// баланс + = количество;
txtBalance.Text = Convert.ToString(balance); //Текст
}
private void cmdWithdraw_Click(object sender,
System.EventArgs e)
{
int
amount = Convert.Tolnt32(txtAmount.
int
balance = Convert.Tolnt32(txtBalance.
balance = amount;
txtBalance.Text = Convert.ToString(balance); // Текст
}
10. Следующий этап – компиляция и выполнение приложения. Оно должно вести себя как стандартное приложение Windows.
В
данный момент проект реализован на С#.
Сейчас для демонстрации возможностей
переноса кода с помощью .NET Framework, перенесем
этот проект в C++. Сначала с помощью шаблона
Managed C++ Empty Project (Пустой проект на управляемом
C++) создадим новый проект C++, который назовем
BankGuiPort.
Графический пользовательский интерфейс (GUI) управляется событиями приложения, вызванные пользователем, например, на щелчок кнопкой мыши или выбор пункта меню. Каждая форма или элемент управления имеет заранее определенный набор событий. Например, у каждой формы есть код, обрабатывающий событие MouseDown (кнопка мыши нажата).
В Windows Forms применяется модель обработки событий NET, в которой делегаты (ссылочный тип, играющий роль указателя на метод) используются для того, чтобы связать события с обрабатывающими их методами. В классах Windows Forms используются групповые делегаты. Групповой делегат содержит список связанных с ним методов. Когда в приложении происходит событие, управляющий элемент возбуждает событие, вызвав делегат для этого события. Потом делегат вызывает связанные с ним методы.
Для
того чтобы добавить делегат к событию,
в C# используется перегруженный оператор
“+=” Мы добавляем метод Forml_MouseDown к событию
MouseDown (кнопка мыши нажата).
MouseDown += new MouseEventHandler
(this,
Forml_MoaseDown),
Добавление события.
В
окне Properties (Свойства) дважды щелкните
на событии MouseDown (Кнопка мыши нажата) Автоматически
будет сгенерирован код, который
зарегистрирует делегата для события
и образует скелет метода, связанного
с делегатом, [10].
private void InitializeComponent ()
{
this.MouseDown =
new
System.WinForms.
(this.Forml_MouseDown);
}
protected void Forml_MouseDown (object sender,
System.WinForms.
{
}
Web-служба
представляет собой не что
иное, как обработчик запросов, поступающих
по протоколу передачи
Информационный сервер Internet компании Microsoft (Internet Information Server – HIS) взаимодействует как со страницами ASP.NET так и с Web-службами, которые отсыпают ему запросы по протоколу передачи гипертекстовых файлов HTTP. Запросы кодируются как часть унифицированного указателя информационного ресурса (URL) или представляются в виде XML-текста. В ответ на запрос Web-службы информационный сервер Internet (US) создает запрошенный объект. Затем информационный сервер Internet (US) вызывает метод объекта, который обрабатывает соответствующий запрос. Любые возвращаемые данные преобразуются в XML-формат и возвращаются клиенту как ответ по протоколу передачи гипертекстовых файлов HTTP.
При необходимости класс Web-службы может быть производным от любого базового класса. Тогда получить доступ к внутренним объектам можно с помощью рассматриваемого объекта HttpContext. Класс WebService является производным от класса MarshalByRefObject. Поэтому, если класс Web-службы является производным от другого базового класса и необходимо, чтобы служба обрабатывала удаленные запросы, тогда убедитесь, что ее класс является производным от класса MarshalByRef Object. Информацию о запросе, который передается по протоколу передачи гипертекстовых файлов HTTP, можно получить с помощью объекта HttpContext. Информацию о текущем запросе можно получить при помощи статического свойства Current (Текущий).
С точки зрения программиста, модели событий Web-форм и Windows-форм очень похожи. Именно благодаря этому сходству программирование Web-форм оказывается таким легким. Но, по сути, события Web-форм сильно отличаются от событий Windows-форм. Самое существенное отличие состоит в том, что события Web-форм инициируются клиентом, а обрабатываются сервером.
В процессе стандартной обработки страницы на сервере происходит ряд событий. Фактически эти события определены в базовом классе Control (Элемент управления), и, таким образом, могут быть вызваны также элементами управления сервера. Ниже приведены наиболее значимые события.
Ниже
в таблице 3 приведены основные свойства
Web-страницы.
Таблица 3 – Свойства Page (Страницы)
EnableViewState | указывает, разрешено ли сохранение состояния представления самой страницы и ее элементов управления (true/false) |
ErrorPage | указывает страницу, на которую будет перенаправлен браузер в исключительных ситуациях |
IsPostBack | указывает, загружается страница впервые или повторно |
IsValid | указывает, была ли успешной проверка правильности страницы |
Request (Запрос) | доступ к данным входных запросов, поступающих по протоколу передачи http |
Response (Ответ) | отсылает запрошенные данные браузеру |
Session (Сеанс) | получает текущий объект, в котором ASP.NET хранит состояние сеанса |
Trace (Трассировка) | получает объект TraceContext страницы, в этот объект записывается трассировочная информация |
Продемонстрируем
отдельные возможности, которые используются
при обработке страниц. Для записи простого
текста в выходной поток используется
свойство Response (Ответ). После возникновения
каждого события отображаем текущий текст
в элементах управления сервера txtName и
IblGreeting. Обработчик события Load (Загрузка)
выводит текущее значение свойства IsPostBack.
Если страница запрашивается впервые,
свойство IsPostBack имеет значение false (ложь).
Если же страница запрашивается повторно,
оно принимает значение true (истина).
Листинг
программы:
<!-- HelloPage.aspx -->
<-d@ Assembly Name = "HelloPage" %>
<V:P Page Inherits=MyHelloPage %>
<HTML>
< HEAD>
</HEAD>
<BODY>
<!-- ТЕЛО -->
<FORK RUNAT="SERVER">Your name:
<asp:textbox id=txtName Runat="server">
</asp:textbox>
<p><asp: button id=cmdEcho onclick=cmdEcho_Click Text="Echo" •runat-"server"
tooitip="Click to echo your name">
<!-- подсказка --> </a.-;p : bu11оn></p>
Greeting runat = "server "></asp : label>
</FORMi>
</Body>
< !-- тело -->
</HTML>
В .aspx-файле, который приведен выше, имеется ссылка на сборку HelloPage. Названная сборка содержит класс MyHelloPage. В этом файле также указано, что класс r.vj'.' (Страница) является производным от класса MyHelloPage. Это означает, что события данной страницы обрабатываются методами класса MyHelloPage.
Если
страница запрашивается впервые, текстовые
поля и подписи не содержат никаких
значений, поскольку никакой информации
в форму еще не вводили. Свойство IsPostBack
имеет значение false (ложь). Теперь введем
имя Robert (Роберт), и щелкните на кнопке
Echo (Эхо). Обработчики событий страницы
выведут следующую информацию:
Page_Init
txtName =
IblGreeting =
Page_Load
IsPostBack = True // Истина
txtName = Robert // Роберт
iblGreeting =
Page_PreRender
txtName = Robert // Роберт
IblGreeting
= Hello, Robert. Welcome again
В функции Page_Init элементы управления не содержат никаких данных, поскольку состояние представления на этапе инициализации страницы не доступно. В функции Page_Load текстовое поле содержит данные. Надпись не содержит никаких данных, так как обработчик события (щелчка мыши) еще не вызван. Свойство IsPostBack теперь имеет значение true (истина). В функции Page_PreRender оба элемента управления содержат данные.
Если щелкнуть на кнопке Echo (Эхо) еще раз, то данные в элементах управления функции Page_Init опять будут отсутствовать, а вот в функции Page_Load оба элемента управления используют данные состояния представления.
Файл
с расширением .aspx может содержать директиву
Assembly (Сборка) и директиву Page (Страница).
Директива Assembly (Сборка) связывает уже
существующую скомпилированную сборку
с текущей страницей. Директива Page (Страница)
определяет различные атрибуты, которые
управляют обработкой ASP.NET-страницы. Каждая
директива содержит одну или несколько
пар атрибут/значение. Синтаксис директивы
Assembly (Сборка) и директивы Page (Страница)
приведен ниже.
<@ Assembly Name="HelloCodebehind" @>
<@
Page Inherits=MyWebPage @>
Программа
HelloCodebehind.aspx служит примером .aspx-страницы,
в которой отсутствует код сценария. Если
использовать другие языки программирования,
например, С# или VB.NET, сценарий можно вложить
непосредственно в .aspx-файл. В таком случае
использовать директиву Assembly (Сборка)
нет необходимости. Указанные языки программирования
также позволяют использовать файлы с
фоновым исходным кодом. Для этого в директиве
Page (Страница) используется атрибут Src,
который указывает на нескомпилированный
исходный файл. Язык C++ такие возможности
не поддерживает. Если используется язык
C++, директива Assembly (Сборка) должна содержать
атрибут Name (Имя), который идентифицирует
скомпилированную сборку. При помощи атрибута
Inherits (Наследуется) указывается класс,
производный от класса Page (Страница), производным
от которого в свою очередь является класс
данной . aspx-страницы.
5 СРЕДСТВА РАЗРАБОТКИ
NET-ПРИЛОЖЕНИЙ
5.1
Инструментарий разработки
NET-приложений
Наличие набора эффективных инструментальных средств разработки программного обеспечения является необходимым условием успешного программирования.
На сегодняшний день существуют достаточное количество коммерческих проектов, в том числе не Microsoft, которые выгодно отличаются друг от друга теми или иными наборами управления и предназначенные для решения конкретных задач.
Наиболее выгодным образом выделяются следующие среды разработки .NET-приложений:
Функционально
все выше приведенные программные пакеты
зачастую реализуют одинаковые свойства.
Отличия могут быть только в составе определенных
библиотек. Однако для лучшего понимания
ниже будет произведен анализ среды разработки
Visual Studio .NET, как наиболее сложившаяся система
программирования NET-приложений.
5.2
Обзор оболочки Visual
Studio .NET
Компания Microsoft уже давно предлагает замечательные инструментальные средства разработки, к числу которых принадлежат Visual C++ и Visual Basic. Платформа .NET объединяет средства разработки в единую интегрированную среду, которая имеет название Visual Studio.NET (VS.NET).
Среда VS.NET обладает широкими функциональными возможностями, которые могут быть использованы при создании приложения на любом языке, поддерживаемом платформой .NET.
Платформа .NET позволяет использовать несколько языков программирования для написания приложений и имеет необходимые средства отладки.
Среда
VS.NET предоставляет множество
Независимые разработчики могут и в дальнейшем разрабатывать расширения среды Visual Studio.NET, а также предлагать дополнительные языки программирования и соответствующие полноценные среды разработки, поддерживаемые платформой .NET. Программы на предложенных независимыми разработчиками языках программирования смогут взаимодействовать с программами на любых языках, поддерживаемых платформой .NET. Существующий набор инструментальных средств разработки обладает широкими возможностями, которые используются при создании Web-приложений и Web-служб. Обеспечивается также всесторонняя поддержка разработки приложений с базами данных.
И хотя вполне реально создать приложение Windows Forms, используя в командной строке только комплекс инструментальных средств разработки программ .NET Framework, на практике подобную работу намного проще выполнить с помощью Visual Studio.NET. К сожалению, в Visual Studio.NET нет средств для генерирования проекта пусковой системы на управляемом C++ на основе Form (Форма), и управляемый C++ не поддерживает конструктор форм (Forms Designer). Однако для начала можно создать проект Windows-приложения на С# (Windows Application). При этом будет сгенерирован код пусковой системы и будут установлены ссылки на необходимые библиотеки .NET. Затем можно в конструкторе форм (Forms Designer) перетащить управляющие элементы на форму.
Конструктор форм (Forms Designer) вставит необходимый шаблон кода на С#, который поддерживает функционирование этих управляющих элементов в форме. В окне Properties (Свойства) несложно определить свойства управляющего элемента в процессе проектирования. Можно, конечно, определить эти свойства и во время запуска приложения, как мы это сделали для поля pTxtGreeting в предыдущем примере. После этого можно перенести код С# в программу на управляемом C++, но этого обычно не рекомендуется делать.
На
рисунке 5 приведено окно запуска Visual
Basic .NET
Рисунок 5 – Окно запуска Visual Basic .NET
Важнейшие изменения в VB.NET следующие:
5.3
Программная структура
Visual Studio .NET
Структура классов в Visual Studio .NET включает две группы:
В этом случае данные, формируемые в приложении, могут быть представлены следующим образом (рисунок 1.4 – правая часть):
Дополнительные средства языка Visual Studio .NET:
ЗАКЛЮЧЕНИЕ
Microsoft .NET – это переход на вычислительную модель, в которой устройства, службы и компьютеры работают совместно, обеспечивая создание решений для пользователей. Центром этого перехода являются разработка .NET Framework и CLR . .NET Framework содержит библиотеки классов, совместно используемые различными языками, которые компилируются для запуска в среде CLR. Понимание особенностей этих технологий является необходимым условием для получения максимальной пользы от разрабатываемых приложений.
Вопросы выбора той или иной визуальной среды программирования зависит от конкретных решаемых задач, а вопросы безопасности должны учитываться при трансляции .NET-кода по сети.
Следует
отметить, что на сегодняшний день средствами
.NET Framework возможно унифицировать программную
индустрию в рамках единых принципов программировании.
СПИСОК
ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ