Реферат По курсу Основы информационных технологий Платформа Microsoft. Net framework
![]()
|
Содержание Введение…………………………………………………………………….…….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 Скачать полностью (271.63 Кб) Сколько стоит заказать работу? Работа содержит 1 файл Мой реферат №1.doc — 612.50 Кб (Скачать) Министерство образования Республики Беларусь Учреждение образования “Белорусский государственный университет информатики и радиоэлектроники” Кафедра экономической информатики Реферат По курсу: “Основы информационных технологий» «Платформа Microsoft .NET Framework» Выполнил: Проверил: магистрант ИЭФ Мищук А. А. Колосов С.В. Минск 2010 СОДЕРЖАНИЕ Введение…………………………………………………………………….…….3 Предпосылки создания платформы Microsoft .NET Framework…………..4 Концепция .NET ………………………………………….…………….4 Динамика развития Microsoft .NET Framework…………...………...5 Архитектура Microsoft .NET Framework ……………………………….…..7 Функциональные особенности .NET – платформы ………………....7 2.2 Общеязыковая среда выполнения CLR………………………………...7 Промежуточный язык программирования (MSIL)……………….....9 Библиотеки классов BCL .NET Framework…..…..………..………..11 Создание приложений Windows ….….……………………………………..15 Процесс создания 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 – программная технология, предназначенная для создания распределенных программ и веб-приложений, и основанная на кроссплатформенных взаимодействиях реализуемых между различными существующими архитектурами программирования. В реферате приведены основные направления развития индустриальных платформ программирования основанных на платформе Microsoft .NET Framework для построения больших распределенных программных систем. Приведен обзор внутреннего устройства платформы .NET и общеязыковой исполняющей среды (CLR). Осуществлен сравнительный анализ технологических возможностей и средств платформы .NET для создания распределенных программных систем в сжатые сроки. Определены условия и ограничения применимости различных технологий и методов платформы .NET в зависимости от специфики программного проекта. история создания платформы Microsoft .NET Framework 1.1 Концепция .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, напротив, кроме набора спецификаций, входит несколько реальных продуктов: компиляторы, библиотеки классов и даже целые приложения для конечных пользователей. Следует также отметить существование других альтернативных проектов кроссплатформенного программирования. Так, например, хотя семейство технологией .NET является патентованной торговой маркой корпорации Microsoft, тем не менее, после заключения договоренности с компанией Novell, была признана технология MONO как реализация .NET на Unix-подобных системах (GNU/Linux, Mac OS X). Однако договорённость касается Novell и клиентов Novell, также технологии ASP.NET, ADO.NET и Windows.Forms не были стандартизированы ISO и использование их в MONO находится под угрозой претензий со стороны Microsoft. MONO предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует обходить эти API. DotGNU– проект создания свободной платформы программирования, альтернативы Microsoft .NET, который предоставляет возможности компилировать и запускать C# и Си-приложения, использующие базовые классовые библиотеки, XML, System.Windows.Forms – на таких операционных системах, как GNU/Linux, FreeBSD и Mac OS X. Существуют и другие .NET-подобные системы специфические для определенного круга задач (платформы ROTOR, и пр.) [4]. 1.2 Динамика развития Microsoft .NET Framework 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 Архитектура Microsoft .NET Framework 2.1 Функциональные особенности .NET – платформы Большинство разработчиков воспринимает инфраструктуру .NET собственно как .NET-приложения. Однако, та часть .NET, с помощью которой разрабатываются приложения, называется .NET Framework. Microsoft .NET Framework призвана реализовать следующие цели: обеспечение совместимости различных объектно-ориентированных сред программирования, с сохранением листинга кода, запускаемого локально, выполняемого локально, но для распределенных служб Интернета или осуществляемого удаленно; создание единой среды программирования, которая бы минимизировала развертывание программ с устранением конфликтов версий; обеспечение безопасного выполнения кода, гарантирование того, что код, созданный сторонними или доверенными лицами, будет защищен от несанкционированного доступа; развертывание среды программирования, которая устраняет проблемы производительности уже созданных или вновь интерпретируемых кодовых сценариев; перенос опыта разработчика в программирование различных типов приложений, например, основанных на Windows или Web-структурах; создание полностью связываемого кода в рамках общих стандартов, гарантирующих интеграцию с любым другим кодом [5]. Основу Microsoft .NET Framework составляют две фундаментальные структуры – это общеязыковая среда выполнения (CLR – Common Language Runtime) и библиотека классов .NET Framework (BCL – Base Class Library). При этом CLR является базой для объединения различных платформ, а BCL является надстройкой и ответственна за синтаксис между средами программирования. 2. 2 Общеязыковая среда выполнения CLR 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). Данный код является независимым от операционной системы и типа процессора, на котором будет выполняться приложение. В процессе работы приложения он компилируется в машинно-зависимый код специальным компилятором (Just-in-Time compiler, JIT compiler). Основная задача CLR – это манипулирование сборками: загрузка сборок, трансляция кода IL в машинно-зависимый код, создание окружения для выполнения сборок. Важной функцией CLR является управление размещением памяти при работе приложение и выполнение автоматической сборки мусора, то есть фонового освобождения неиспользуемой памяти. Кроме этого, CLR реализует в приложениях для .NET верификацию типов, управление политиками безопасности при доступе к коду и некоторые другие функции. Кроме упомянутых элементов, выделим еще две части платформы .NET: Система типов данных (Common Type System, CTS) – базовые, не зависящие от языка программирования примитивные типы, которыми может манипулировать CLR. Набор правил для языка программирования (Common Language Specification, CLS), соблюдение которых обеспечивает создание на разных языках программ, легко взаимодействующих между собой. Кроме того хотелось бы подчеркнуть, что любой компилятор для .NET является верхним элементом архитектуры. Библиотека классов BCL, имена ее элементов не зависят от языка программирования. Специфичным элементом языка остается только синтаксис, но не работа с внешними классами. Это упрощает межъязыковое взаимодействие, перевод текста программы с одного языка на другой. С другой стороны, тесная связь с CLR неизбежно находит свое отражение в синтаксических элементах языка программирования [6]. 2.3 Промежуточный язык программирования (MSIL) Для облегчения перевода языков в среду .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Т-компиляторов. Генератор кода при установке (Install-time code generation) выполняет компиляцию всей сборки в двоичный код, специфичный для данного процессора, подобно тому, как это делает компилятор С#. Эта компиляция выполняется в ходе установки, когда обработка Сборки (assembly) ЛТ-компилятором меньше всего заметна для конечного пользователя. Достоинство этого типа генерации двоичного кода в том, что компиляция всей сборки выполняется один раз еще до запуска приложения. Поскольку код скомпилирован, то о потере производительности при первом вызове метода приложения можно не беспокоиться. Вопрос о целесообразности применения этой утилиты решается в зависимости от размера конкретной системы и среды, в которой происходит ее развертывание. Если необходимо создать для своей системы установочное приложение, то лучше всего использовать этот тип ЛТ-компилятора, чтобы у пользователя была уже полностью оптимизированная версия системы. Стандартный JIT, вызываемый при выполнении приложения каждый раз для впервые активизируемого метода (в порядке, описанном выше). Данный режим работает по умолчанию, если не запускается явно компилятор РrеJIТ. EconoJIT. Включается во время выполнения приложения и предназначен специально для систем, которые имеют ограниченные ресурсы, например, для портативных устройств с малым размером памяти. Основное отличие этого компилятора от обычного JITter – в объединении кодовых фрагментов (code pitching). Благодаря разбивке кода на фрагменты EconoJIT может удалить сгенерированный (т. е. откомпилированный) код, если памяти для запуска системы недостаточно. Достоинство этого компилятора в экономии памяти, а недостаток в том, что если фрагментированный код загружается вновь, он должен быть опять перекомпилирован как код, который еще никогда не вызывался [7]. 2.4 Библиотеки классов BCL .NET Framework Все языки .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
Для того, чтобы наглядно продемонстрировать работу конкретного .NET-приложения, ниже будут приведены основные способы создание приложений c использованием классов System.Windows.Forms, а для разработки Web-приложений будут применяться классы System.Web. Создание приложений Windows Процесс создания Windows-приложений Ниже приводится пример разработки приложения 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)
Ниже приведен листинг программы: public class Forml : System.Windows.Forms.Form // общедоступный класс Form1:Система.Windows.Формы.Форма { public Form1() { // // Требуется для поддержки Windows Form Designer // InitializeComponent(); // Добавляем код конструктора после // вызова InitializeComponent // txtAmount.Text = "25"; // Текст txtBalance.Text = "100"; // Текст } /// /// Основная точка входа для приложения. /// [STAThread] static void Main() { Application.Run(new Forml{)); } private void cmdDeposit_Click(object sender, System.EventArgs e) { int amount = Convert.Tolnt32(txtAmount.Text); int balance = Convert.Tolnt32(txtBalance.Text); // баланс balance += amount; // баланс + = количество; txtBalance.Text = Convert.ToString(balance); //Текст } private void cmdWithdraw_Click(object sender, System.EventArgs e) { int amount = Convert.Tolnt32(txtAmount.Text); int balance = Convert.Tolnt32(txtBalance.Text); // баланс balance = amount; txtBalance.Text = Convert.ToString(balance); // Текст } 10. Следующий этап – компиляция и выполнение приложения. Оно должно вести себя как стандартное приложение Windows. В данный момент проект реализован на С#. Сейчас для демонстрации возможностей переноса кода с помощью .NET Framework, перенесем этот проект в C++. Сначала с помощью шаблона Managed C++ Empty Project (Пустой проект на управляемом C++) создадим новый проект C++, который назовем BankGuiPort. Обработка событий в System.Windows.Forms Графический пользовательский интерфейс (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.MouseEventHandler (this.Forml_MouseDown); } protected void Forml_MouseDown (object sender, System.WinForms.MouseEventArgs e) { } Создание Web-приложений Web-служба представляет собой не что иное, как обработчик запросов, поступающих по протоколу передачи гипертекстовых файлов HTTP. В качестве такового Web-служба имеет доступ к внутренним объектам, которые содержатся в этих запросах. Внутренние объекты запроса, передающегося по протоколу передачи гипертекстовых файлов HTTP. Доступ к этим внутренним объектам обеспечивают свойства, которые содержатся в классе WebService. Информационный сервер 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 (Элемент управления), и, таким образом, могут быть вызваны также элементами управления сервера. Ниже приведены наиболее значимые события. Init (Инициализация). Событие возникает на первом этапе жизненного цикла страницы, при ее инициализации. Информация о состоянии элементов управления еще отсутствует. Load (Загрузка). Событие возникает на этапе загрузки элементов управления в страницу. На данном этапе уже имеется информация о состоянии представления этих элементов управления. PreRender (Предвыполнение). Событие возникает непосредственно перед воспроизведением (отображением) элементов управления в выходном потоке. Как правило, страница это событие не обрабатывает. Тем не менее, оно имеет важное значения для реализации собственных элементов управления сервера. Unload (Разгрузка). Событие возникает тогда, когда элементы управления выгружаются из страницы. Записывать ваши собственные данные в выходной поток теперь уже поздно. Ниже в таблице 3 приведены основные свойства Web-страницы. Таблица 3 – Свойства Page (Страницы)
Продемонстрируем отдельные возможности, которые используются при обработке страниц. Для записи простого текста в выходной поток используется свойство Response (Ответ). После возникновения каждого события отображаем текущий текст в элементах управления сервера txtName и IblGreeting. Обработчик события Load (Загрузка) выводит текущее значение свойства IsPostBack. Если страница запрашивается впервые, свойство IsPostBack имеет значение false (ложь). Если же страница запрашивается повторно, оно принимает значение true (истина). Листинг программы: <-d@ Assembly Name = "HelloPage" %> < HEAD> tooitip="Click to echo your name"> Greeting runat = "server "> |