Опубликован: 04.07.2012 | Уровень: специалист | Доступ: платный
Лекция 11:

Разработка web-приложений на платформе .NET. Системы управления контентом

Аннотация: Цель лекции: представить концепцию и структуру платформы .NET Показать какие инструменты предоставляет платформа .NET разработчику. Рассмотреть подходы к разработке веб-контента в системах управления контентом CMS.

Microsoft Visual Studio .NET - это интегрированная среда разработки для создания, документирования, запуска и отладки программ, написанных на языках .NET.

Эта среда разработки является открытой языковой средой. Наряду с языками программирования, изначально включенными в среду - C++, C#, J#, Visual Basic, - в нее могут добавляться любые языки программирования, компиляторы которых создаются сторонними разработчиками. Необходимым условием для включения языков в среду Visual Studio .Net является использование единого каркаса - платформы Framework.Net.

Платформа Framework.Net позволяет:

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

Платформа Framework .Net содержит две основных компоненты:

  • FCL (Framework Class Library) - библиотеку классов каркаса;
  • CLR (Common Language Runtime) - общеязыковую исполнительную среду.

В рамках данной платформы используется стандартная система типов Common Type System (CTS), которая полностью описывает все типы данных, поддерживаемые средой выполнения, определяет взаимодействие типов данных и их представление в формате метаданных .NET.

Набор правил, определяющих подмножество общих типов данных, в отношении которых гарантируется, что они небезопасны при использовании во всех языках .NET, описывается в рамках спецификации Common Language Specification (CLS). Для того чтобы классы, разработанные на разных языках, можно было совместно использовать в рамках одного приложения, они должны удовлетворять определенным ограничениям, задаваемым CLS. Класс, удовлетворяющий CLS, называется CLS-совместимым. Он доступен для использования в других языках, классы которых могут быть клиентами или наследниками совместимого класса.

Платформа .NET предоставляет в распоряжение программиста библиотеку базовых классов, доступную из любого языка программирования .NET. Поскольку число классов библиотеки FCL достигает нескольких тысяч, то в целях структуризации функционально близкие классы объединяются в группы, называемые пространством имен (Namespace).

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

Следует помнить, что C# генерирует код, предназначенный для выполнения только в среде выполнения .NET (управляемый код). Сам двоичный файл, содержащий управляемый файл, называется сборкой. Сборка содержит код на промежуточном языке MSIL (Microsoft Intermediate Language) или просто IL. Аналогично байт-коду Java IL-код компилируется в платформенно-специфические инструкции при непосредственном обращении среды выполнении .NET к блоку IL-инструкций. Двоичные модули .NET в дополнение к инструкциям содержат также метаданные. Метаданные описывают не только типы, используемые в сборке, но и саму сборку. Данная часть метаданных называется манифестом.

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

Сборка из одного файла содержит и манифест, и метаданные, и инструкции IL.

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

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

Основы C#

Что нового принес язык C# по сравнению с уже существовавшими до него языками?

  • В программах на C#, как правило, нет необходимости в работе с указателями (при сохранении этой возможности), поскольку в нем реализовано автоматическое управление памятью.
  • Предусмотрены встроенные синтаксические конструкции для работы с перечислениями, структурами и свойствами классов.
  • Имеется полная поддержка программных интерфейсов. Использование двоичных модулей .NET позволяет передавать объекты (по ссылке или по значению) через границы программных модулей.
  • Полная поддержка объектно-ориентированных технологий.

Для разработки приложений в Visual Studio.Net используются проекты.

Проект (Project) - это основная единица, с которой имеет дело разработчик. Сначала он должен выбрать тип проекта, после чего Visual Studio создает каркас проекта в соответствии с выбранным типом. Проект состоит из классов, собранных в одном или нескольких пространствах имен. Пространства имен (Namespaces) позволяют структурировать проекты, содержащие большое число классов, объединяя в одну группу близкие классы.

Несколько проектов могут объединяться в решение (Solution), которое также может включать ресурсы, необходимые этим проектам.

С точки зрения разработчика конечным результатом его работы, получаемым после компиляции исходного программного кода, является решение, а с точки зрения CLR (Common Language Runtime - общеязыковой среды исполнения) - сборка (assembly), содержащая PE файл, т.е. модуль в формате исполняемого файла PE (Portable Executable) для 32-разрядной ОС Windows либо DLL (Dynamic Link Library) файл.

Visual Studio.Net предлагает большое разнообразие возможных типов проектов.

Типы данных С#

Стандарт языка C++ включает следующий набор фундаментальных типов.

  • Логический тип (bool).
  • Символьный тип (char).
  • Целые типы. Они могут отличаться размером: short, int, long, а также могут быть знаковыми (signed) или беззнаковыми (unsigned).
  • Типы с плавающей точкой. Они также могут отличаться размерами: float, double и long double.

Тип void указывает на отсутствие информации.

К конструируемым типам относятся следующие:

  • Указатели (например, char*).
  • Ссылки (например, char&).
  • Массивы (например, char[]).

Также язык позволяет разработчику конструировать собственные типы:

  • Перечислимые типы (enum).
  • Структуры (struct).
  • Классы.

В языке C# все типы можно рассматривать и под другим ракурсом, разделив их на четыре категории:

  • Типы-значения (value).
  • Ссылочные (reference).
  • Указатели (pointer).
  • Тип void.

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

Логический, арифметический, структуры, перечисление относятся типам-значениям. Массивы, строки и классы относятся к ссылочным типам.

И ссылочные, и обычные типы являются производными от базового класса object. В тех случаях, когда обычный тип должен вести себя как объект, создается оболочка (wrapper), которую можно рассматривать как ссылочный объект, помещенный в кучу, и в нее копируется значение переменной обычного типа. Оболочка автоматически помечается таким образом, что система знает, какое значение она содержит. Этот процесс назывется упаковкой (boxing), а обратный процесс - распаковкой (unboxing).

Упаковка происходит автоматически, для этого нужно только присвоить значение обычного типа переменной типа object. Упаковка и распаковка позволяют обрабатывать любой тип как объект. Например, в выражении

7.ToString();

целое число 7 упаковывается путем вызова функции Int32.ToString().

Массивы в C# могут быть многомерными (multidimensional) или невыровненными (jagged). Более сложные структуры данных такие, как стек и хеш-таблица определены в пространстве имен System.Collections.

В языке C# определен класс сhar[], и его можно использовать для представления строк постоянной длины. Однако массив сhar[] - это обычный массив, поэтому его нельзя инициализировать строкой символов. В C# не определено преобразование из класса сhar[] в класс String. У String есть динамический метод ToCharArray, задающий подобное преобразование в сhar[].

Класс String не разрешает изменять существующие объекты. Класс StringBuilder позволяет исправить этот недостаток. Этот класс принадлежит к изменяемым классам и его можно найти в пространстве имен System.Text.

Классы и методы в C#.

В Visual Studio.Net, и в C# в частности, любая программная система рассматривается как совокупность классов, объединенных в проекты, пространства имен, решения.

Описание класса имеет следующий синтаксис:

[атрибуты][модификаторы]class имя_класса[:список_родителей] {тело_класса}

В теле класса могут быть объявлены:

  • константы;
  • поля;
  • конструкторы и деструкторы;
  • методы;
  • события;
  • делегаты;
  • классы (структуры, интерфейсы, перечисления).

Поля класса синтаксически являются обычными переменными (объектами) языка. Их описание удовлетворяет обычным правилам объявления переменных. Поля характеризуют свойства объектов класса.

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

Конструктор представляет собой специальный метод класса, позволяющий создавать объекты класса. Его имя должно совпадать с именем класса. Если разработчик не определяет конструктор класса, то к классу автоматически добавляется конструктор по умолчанию - конструктор без аргументов.

Делегат в C# представляет собой описание случая класса и задает определение функционального типа (класса) данных. Экземплярами класса являются функции. Каждый делегат описывает множество функций с заданной сигнатурой. Каждая функция (метод), сигнатура которого совпадает с сигнатурой делегата, может рассматриваться как экземпляр класса, заданного делегатом. Синтаксис объявления делегата имеет следующий вид:

[<спецификатор доступа>] delegate <тип результата> <имя класса> (<список аргументов>);

Выражения и операторы C#.

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

В таблице ниже приведен список операций C#.

Категория операций Операции
Арифметические + - * / %
Логические (boolean и побитовые) & | ^ ! ~ && ||
Строковые +
Инкремент и декремент ++ --
Сдвиг >> <<
Сравнение == != < > <= >=
Присвоение = += -= *= /= %= &= |= ^= <<= >>=
Обращение к члену класса .
Индексация []
Приведение типа (Cast) ()
Условие ?:
Создание объекта new()
Информация о типе is sizeof typeof
Управление исключениями checked unchecked
Косвенности и адресации * -> [] &

Имя и тип переменной задаются при ее объявлении и остаются неизменными в течение всего времени ее жизни. Особенностью языка C# является требование обязательной инициализации переменной до начала ее использования. Попытка использовать неинициализированную переменную приводит к ошибкам, обнаруживаемым еще на этапе компиляции.

По используемым выражениям и операторам C# похож на C++. Так в программах на C# используются такие операторы как:

  • Оператор присваивания (=)
  • Составной оператор ({})
  • Операторы выбора: if-else и switch
  • Операторы цикла: for, while, оператор
  • Операторы break и continue
  • Оператор return
  • Оператор перехода goto

Кроме того, введены несколько новых инструкций. Например, оператор foreach позволяет получить доступ ко всем элементам массива или коллекции поочередно, в порядке возрастания индексов. Его синтаксис:

foreach (тип идентификатор in контейнер) оператор
Галина Башкирова
Галина Башкирова

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

Системный администратор информационно-коммуникационных» систем.
Мне нужно самой найти тему? или делать по высланным темам

 

Константин Моренко
Константин Моренко
Елена Кашникова
Елена Кашникова
Россия, братск