Платформа Microsoft .NET Framework

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

Мой реферат №1.doc

— 612.50 Кб (Скачать)

Министерство  образования Республики Беларусь

Учреждение  образования

“Белорусский  государственный университет

информатики и радиоэлектроники” 
 

Кафедра экономической информатики 
 
 
 
 

Реферат 

По курсу:

“Основы информационных технологий» 

«Платформа Microsoft .NET Framework» 
 
 
 
 
 
 
 
 

Выполнил:                                                                 Проверил:

магистрант ИЭФ              

Мищук А. А.                                                             Колосов С.В.

 

       
 
 
 
 

Минск 2010

 

СОДЕРЖАНИЕ 

Введение…………………………………………………………………….…….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

    1. Промежуточный язык программирования (MSIL)……………….....9
    2. Библиотеки классов BCL .NET Framework…..…..………..………..11
  1. Создание приложений 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 – программная технология, предназначенная для создания распределенных программ и веб-приложений, и основанная на кроссплатформенных взаимодействиях реализуемых между различными существующими архитектурами программирования.

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

    1. история создания платформы 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

     

      1. Архитектура 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Т-компиляторов.

    1. Генератор кода при установке (Install-time code generation) выполняет компиляцию всей сборки в двоичный код, специфичный для данного процессора, подобно тому, как это делает компилятор С#. Эта компиляция выполняется в ходе установки, когда обработка Сборки (assembly) ЛТ-компилятором меньше всего заметна для конечного пользователя. Достоинство этого типа генерации двоичного кода в том, что компиляция всей сборки выполняется один раз еще до запуска приложения. Поскольку код скомпилирован, то о потере производительности при первом вызове метода приложения можно не беспокоиться. Вопрос о целесообразности применения этой утилиты решается в зависимости от размера конкретной системы и среды, в которой происходит ее развертывание. Если необходимо создать для своей системы установочное приложение, то лучше всего использовать этот тип ЛТ-компилятора, чтобы у пользователя была уже полностью оптимизированная версия системы.
    2. Стандартный JIT, вызываемый при выполнении приложения каждый раз для впервые активизируемого метода (в порядке, описанном выше). Данный режим работает по умолчанию, если не запускается явно компилятор РrеJIТ.
    3. 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

    Имя элемента Описание
    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. 

     

       
    1. Создание  приложений Windows
     
          1.   Процесс создания 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)

    Имя свойства Текст
    txtAmount (не заполняется)
    txtBalance (не заполняется)
    cmdDeposit Deposit (Вклад)
    cmdWithdraw Withdraw (Снять)
     

          Ниже  приведен листинг программы: 

          public class Forml : System.Windows.Forms.Form

          // общедоступный класс Form1:Система.Windows.Формы.Форма 

          {

          public Form1()

          {

          //

          // Требуется для поддержки Windows Form Designer

          //

          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.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.  

          1.   Обработка событий в 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)

          {

          } 
     
     

     

    1. Создание  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 (Страницы)

       
    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:&nbsp;

          <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-приложений:

    1. Microsoft Visual Studio (C#, Visual Basic .NET, Managed C++);
    2. SharpDevelop;
    3. MonoDevelop;
    4. Eclipse;
    5. Borland Developer Studio (Delphi for .NET, C#);
    6. PascalABC.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 следующие:

    1. Поддержка концепций объектно–ориентированного программирования с конструкторами и деструкторами, наследованием, перекрытием методов (Overrides) и др.
    2. Компиляция в байт-код (intermediate language, IL), исполняемый с помощью виртуальной машины common language runtime (CLR).
    3. Использование всего набора объектных библиотек, входящих в .NET Framework, включающих мощные средства по работе с формами (Windows Forms), базами данных (ADO.NET), графикой (GDI+), средствами обеспечения безопасности, веб-страницами (ASP.NET) и т. п.
    4. Поддержка свободной многопоточности.
    5. Поддержка структурной обработки исключений (structurized exception handling, SEH).
    6. Кроме того, CAD Import Netбиблиотека для разработчиков на платформе .NET, позволяющая приложению предоставить возможность просмотра, разбора структуры, редактирования векторных CAD(DXF\DWG), HPGL, CGM, Gerber, Windows Metafiles(EMF\EMF+\WMF); а также растровых BMP, JPG, PNG, TIFF, CUR, ICO файлов. Библиотека поддерживает экспорт в формат DXF. Содержит в себе инструменты по выбору областей изображения, визуальному созданию и изменению примитивов.
     

          5.3 Программная структура Visual Studio .NET 

          Структура классов в Visual Studio .NET включает две группы:

    • группа Interface — прототипы классов, Implements — их реализация;
    • аппарат Namespaces для предотвращения конфликтов имён.

          В этом случае данные, формируемые в приложении, могут быть представлены следующим образом (рисунок 1.4 – правая часть):

    1. режим жёсткой проверки типов (Option Strict);
    2. новые или изменённые типы данных:
      • Char (беззнаковое слово, содержащее Unicode-символ);
      • String – содержит двухбайтовые Unicode-символы;
      • Short (вместо прежнего Integer), 16 битов;
      • Integer (вместо прежнего Long), 32 бита;
      • Long (целое, 64 бита, до 9.223.372.036.854.775.808).
      1. их беззнаковые варианты UShort, UInteger, ULong;
      • байт со знаком: SByte;
      • Decimal (96-битовое целое, масштабированное требуемой степенью 10), примерно до 8×1028;
      • структура данных Structure вместо Type, причём она, подобно классу, допускает методы;
      • тип Variant переименован в Object. Типы Currency, String длина упразднены;
    1. при описании можно указать начальное значение.

          Дополнительные  средства языка Visual Studio .NET:

        1. структурная обработка исключений: операторы Try/Catch/Finally/ Throw, объект Exception;
        2. новые виды оператора присваивания: += -= >>= и др.;
        3. оператор Continue {For|Do|While} – новый оборот цикла;
        4. оператор Return возвращает значение для функций;
        5. операции сдвига для целых;
        6. новые логические операции AndAlso, OrElse – для них лишние вычисления операндов блокируются, логические операции Eqv, Imp упразднены;
        7. комплект стандартных функций, работа с элементами управления и многое другое существенно изменены.
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

          ЗАКЛЮЧЕНИЕ 

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

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

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

          СПИСОК  ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 

    1. Microsoft .NET Homepage. Электронный ресурс. Режим доступа, сайт. http://www.microsoft.com/net/
    2. Г. Шилдт. Полный справочник по C#, Вильямс, 2007 – 752 с.
    3. Дж. Просис. Программирование для Microsoft .NET, Русская редакция, 2002
    4. Дон Бокс, Крис Селз. Основы .Net. Том 1 - CLR, Вильямс, 2003
    5. Art Gittleman, Computing with C# and the .NET Framework, Jones and Bartlett Publishers, 2003
    6. Волосевич А.А. Язык C# и платформа .NET: Уч-метод. пособие по курсу «Избранные главы информатики» для студ. cпец. 1-31 03 04 «Информатика» всех форм обуч. – Мн.: БГУИР, 2006. – 60 с.: ил.
    7. Serge Lidin. Inside Microsoft .NET IL Assembler, Microsoft Press, 2002
    8. Dino Esposito. Programming Microsoft ASP.NET, Microsoft Press, 2003
    9. Don Box, Chris Sells. Essential .NET, Volume 1. The Common Language Runtime, Addison Wesley, 2002
    10. Олифер В.Г., Олифер Н.А. Компьютерные сети. Принципы, технологии, протоколы: Учеб. пособие для вузов. – СПб.: Питер, 2006. – 958 с.

    Информация о работе Платформа Microsoft .NET Framework