
Министерство образования и науки Российской Федерации
Саратовский государственный технический университет
Балаковский институт техники, технологии и управления
ИНТЕРАКТИВНОЕ ПРОГРАММИРОВАНИЕ ВЕБ-
ПРИЛОЖЕНИЙ
Методические указания к самостоятельной работе по дисциплине «Интерактивное программирование веб-приложений»
для студентов всех форм обучения по направлению 230400.62
Одобрено редакционно-издательским советом Балаковского института техники,
технологии и управления
Балаково 2014
ВВЕДЕНИЕ
Цель работы – изучение основных понятий и возможностей интерак-
тивного программирования веб-приложений в среде ASP.NET.
ТЕМЫ, ИЗУЧАЕМЫЕ В КУРСЕ
ИНТЕРАКТИВНОЕ ПРОГРАММИРОВАНИЕ ВЕБ-
ПРИЛОЖЕНИЙ
Веб-приложение — клиент-серверное приложение, в котором клиен-
том выступает браузер, а сервером — веб-сервер. Логика веб-приложения распределена между сервером и клиентом, хранение данных осуществля-
ется, преимущественно, на сервере, обмен информацией происходит по се-
ти. Одним из преимуществ такого подхода является тот факт, что клиенты не зависят от конкретной операционной системы пользователя, поэтому веб-приложения являются межплатформенными сервисами.
Модель разработки .NET
Существует три основных модели разработки Web-приложений:
изолированная (рекомендуется);
частично изолированная;
неизолированная.
Изолированная модель. В рамках этой модели вы разрабатываете программное обеспечение (редактируете, отлаживаете и запускаете его) в
полной изоляции на своем компьютере и используете локальный Web-
сервер (http://localhost). Доступ к исходным файлам осуществляется через базу данных Microsoft Visual SourceSafe (VSS), размещенную на общем се-
тевом диске. Вы можете как разрешить, так и запретить разработчикам од-
2
новременно снимать с контроля (check out) один и тот же файл.
Частично изолированная модель. В рамках этой модели для разра-
ботки и отладки приложения используется общий Web-сервер
(http://remoteserver). Вы регистрируете и снимаете с контроля файлы через базу VSS на общем сетевом диске. Ваша рабочая копия проекта размеща-
ется на общем Web-сервере в определенной папке, являющейся корневой папкой Microsoft Internet Information Server (IIS). За каждым разработчиком закрепляется собственная папка проекта на общем Web-сервере.
Примечание При первом получении Web-проекта от VSS, Microsoft
Visual Studio® .NET не позволяет разместить рабочие файлы в папке, уже содержащей другой Web-проект.
Если включена функция VSS, отвечающая за снятие файла с кон-
троля несколькими пользователями одновременно (multiple checkout feature), разработчики могут снимать с учета и редактировать один и тот же файл, но единовременно только один разработчик может отлаживать приложение на Web-сервере. Это связано с тем, что при отладке приложе-
ния IIS блокируется. Таким образом, другие Web-запросы к любым другим приложениям не обслуживаются.
Неизолированная модель. В рамках этой модели для разработки и отладки приложения используется общий Web-сервер (http://remoteserver).
Однако у вас нет собственных копий рабочих файлов, и все разработчики используют один и тот же виртуальный корневой каталог на сервере,
например http://remoteserver/projectname.
При сохранении изменений в файл версия файла в памяти вашего компьютера пересылается на сервер по протоколу Hypertext Transfer Protocol (HTTP). Существующая серверная копия перезаписывается. Когда вы последовательно регистрируете изменения с помощью встроенных сер-
висов контроля версий Visual Studio .NET, для обновления копии файла в базе данных VSS используется Microsoft FrontPage Extensions.
3

Интегрированная среда разработки Visual Studio
Интегрированная среда разработки Visual C# представляет собой набор средств разработки, предоставляемых через единый пользователь-
ский интерфейс. Некоторые средства используются совместно с другими языками Visual Studio, в то время как другие, например, компилятор C#,
свойственны только Visual C#. Документация в этом разделе содержит об-
щие сведения об использовании наиболее важных средств Visual C# при работе в интегрированной среде разработки на различных этапах процесса разработки.
Взаимодействие со средствами осуществляется через окна, меню,
страницы свойств и мастеров в интегрированной среде разработки. Основа интегрированной среды разработки показана ниже:
Рис. 1. Основа интегрированной среды Visual Studio.
Для быстрого доступа к любым окнам или файлам открытого сред-
ства используется сочетание клавиш CTRL + TAB.
В главном большом окне открывается редактор кода, конструктор
Windows Forms или конструктор Windows Presentation Foundation. Для пе-
реключения между представлением кода и конструктора можно в меню Вид выбрать команду Код или Конструктор, или воспользоваться клави-
шей F7 или сочетанием SHIFT + F7. В представлении конструктора эле-
4
менты управления из Панели элементов можно перетаскивать в окно (для открытия панели элементов следует слева щелкнуть пункт Панель элемен-
тов).
Окно Свойства справа внизу появляется только в представлении кон-
структора. В его помощью можно задать свойства и привязать события для элементов управления пользовательского интерфейса, таких как кнопки,
текстовые поля и другие. Если для этого окна установить параметр Авто-
матически скрывать, оно будет сворачиваться в правое поле при каждом переходе к Представлению кода.
Справа вверху расположено окно Обозреватель решений, в котором
впредставлении иерархического дерева показаны все файлы проекта. Если при помощи меню Проект добавить новые файлы к проекту, они отразятся
вОбозревателе решений. Кроме файлов в Обозревателе решений отобра-
жаются параметры проекта и ссылки на внешние библиотеки, необходи-
мые для приложения.
Страницы свойств Конструктора проектов можно открыть, щелкнув правой кнопкой мыши узел Свойства в Обозревателе решений и выбрав команду Открыть. На этих страницах можно изменить параметры построе-
ния, требования безопасности, данные развертывания и многие другие свойства проекта.
Для компилятора C# не предусмотрено окна, поскольку это средство не является интерактивным, однако его параметры можно задать в окне Конструктор проектов. Компилятор C# вызывается в интегрированной среде разработки по команде Построить в меню Построение. В случае успешного построения в панели состояния выводится сообщение “Постро-
ение успешно завершено”. Если будут обнаружены ошибки построения,
под окном редактора/конструктора откроется окно Список ошибок со списком ошибок. Для перехода к строке с ошибкой в исходном коде следу-
ет дважды щелкнуть ошибку. Нажатием клавиши F1 можно открыть спра-
5
вочную документацию по выделенной ошибке.
Отладчик имеет различные окна, в которых отображаются значения переменных и сведения о типах во время выполнения приложения. Окно редактора кода можно использовать во время отладки для определения строки, на которой необходимо приостановить выполнение в отладчике и пошагово пройти по одной строке кода за раз.
Все окна в Visual C# можно закрепить или сделать плавающими,
скрыть или отобразить, или переместить в другое местоположение. Чтобы изменить поведение окна, щелкните значок стрелки или кнопки в строке заголовка и выберите доступные варианты. Чтобы переместить закреплен-
ное окно в другое местоположение, перетащите строку заголовка таким образом, чтобы появился значок пипетки. Удерживая левую кнопку мыши,
переместите указатель над значком в новое местоположение. Для прикреп-
ления окна к определенной стороне поместите указатель на левый, правый,
верхний или нижний значки. Поместите указатель на значок в середине,
чтобы в окне размещались вкладки. По мере изменения положения указа-
теля будет появляться полупрозрачный прямоугольник, обозначающий ме-
сто закрепления окна в новом местоположении.
Web-проекты ASP.NET
При создании веб-проекта Visual Studio генерирует набор дополни-
тельных файлов, включая пользовательские файлы проекта с расширением
.csproj, a также файл решения с расширением .sln. При компоновке прило-
жения Visual Studio генерирует временные файлы, которые размещает в подкаталоге Obj, и один или более .pdb-файлов с отладочными символами,
которые размещает в подкаталоге Bin. Ни один из этих файлов не должен развертываться на веб-сервере, когда веб-приложение будет готово.
Более того, также не должны развертываться и файлы исходного ко-
да на C# (с расширением .cs), поскольку Visual Studio предварительно
6
компилирует их в DLL-сборку.
На первый взгляд предварительная компиляция веб-проектов кажет-
ся большим преимуществом, ведь она не только гарантирует отсутствие необходимости в компилировании страниц при первом запросе, но и также позволяет избегать развертывания исходного кода на веб-сервере. Однако беспроектные веб-сайты можно так же легко компилировать для разверты-
вания: необходимо всего лишь воспользоваться соответствующим инстру-
ментом предварительной компиляции.
У основанной на проектах разработки имеется свой круг почитате-
лей. Ниже перечислены наиболее важные преимущества веб-проектов:
Система проектной разработки является более строгой, чем си-
стема беспроектной разработки. Дело в том, что в файле проекта явно пе-
речислены все файлы, которые должны входить в проект. Это позволяет перехватывать вероятные ошибки (вроде недостающих файлов) и даже анализировать возможные варианты атак (вроде добавления злонамерен-
ным пользователем нежелательных файлов).
Веб-проекты предусматривают больше возможностей для управ-
ления файлами. Одним из примеров может служить случай, когда создает-
ся несколько проектов, и все они размещаются в подкаталогах внутри од-
ного и тоже же виртуального каталога. При таком сценарии получается,
что файлы хранятся отдельно для целей разработки, но при этом по сути все равно являются частью одного и того же приложения для развертыва-
ния. В случае беспроектной разработки возможность размещать файлы от-
дельно в таких подкаталогах отсутствует. По этой же причине веб-проекты может быть эффективнее применять и при создании веб-приложения, ис-
пользующего огромное количество файлов ресурсов, например, веб-сайта,
включающего подкаталог Images с тысячами различных изображений. При беспроектной разработке Visual Studio обнаружит эти файлы и добавит их в окно Solution Explorer, поскольку они будут являться частью каталога
7
веб-сайта. В случае веб-проекта таких дополнительных накладных расхо-
дов удастся избежать, потому что явно добавлять эти рисунки в список файлов проекта вы не будете.
Веб-проекты предусматривают возможность настройки процесса развертывания. Файлы проектов Visual Studio работают со средством веб-
пакетов, которое предоставляет дополнительные возможности для конфи-
гурирования развертываемой версии приложения.
Веб-проекты работают лучше в некоторых сценариях миграции.
Любое веб-приложение, которое создавалось с помощью Visual Studio 2003
или более ранней версии, представляет собой веб-проект, поскольку в этих версиях Visual Studio не было возможности создавать веб-сайты без ис-
пользования проектов. Открытие такого веб-проекта в Visual Studio 2010
приводит к запуску мастера миграции для преобразования этого приложе-
ния в веб-проект Visual Studio 2010.
Доступные функциональные возможности ASP.NET как при беспро-
ектной, так и при основанной на проектах разработке выглядят одинаково.
Более того, показатели производительности и в том, и в другом случае то-
же ничем не отличаются. Так какой же вариант лучше выбирать при со-
здании нового веб-сайта ASP.NET? У каждого подхода имеются свои сто-
ронники.
Официально Microsoft рекомендует пользоваться более простой мо-
делью веб-сайта во всех случаях, кроме тех, когда существует серьезная причина применять веб-проект. К числу таких случаев относятся ситуации,
когда было разработано специальное расширение MSBuild, когда уже име-
ется готовый тщательно автоматизированный процесс развертывания, ко-
гда выполняется перенос в новую версию старого веб-сайта, созданного в
Visual Studio 2003, или когда необходимо создать в одном каталоге сразу несколько проектов.
Чтобы создать веб-проект, выберите в меню File пункт New -->
8
Project. Откроется диалоговое окно New Project, которое выглядит очень похоже на рассмотренное ранее диалоговое окно New Web Site.
Выберите элемент ASP.NET Web Application (Веб-приложение
ASP.NET). Далее нужно указать место размещения, либо в виде пути к файлу, либо в виде URL-адреса, указывающего на локальный или удален-
ный веб-сервер IIS.
Как и при создании беспроектного веб-сайта, в списке вверху окна можно изменить целевую версию .NET Framework. Хотя веб-проекты и беспроектные веб-сайты дают одинаковый конечный результат после раз-
вертывания и компиляции на веб-сервере, есть некоторые отличия в спо-
собе, которым они структурируются во время проектирования.
Обработка страниц ASP.NET
На стороне сервера обработка веб-формы ASP.NET происходит по-
этапно. На каждом этапе генерируются различные события. Это позволяет странице включиться в поток обработки на любом этапе и выдать ответ любым удобным способом. В следующем списке перечислены основные этапы потока обработки страницы ASP.NET:
Инициализация структуры страницы
Инициализация кода пользователя
Проверка достоверности
Обработка событий
Автоматическая привязка данных
Очистка
Инициализация структуры страницы. На этом этапе ASP.NET созда-
ет страницу. Генерируются все элементы управления, определенные в де-
скрипторах внутри веб-страницы .aspx. Более того, если страница запра-
шивается не впервые (иначе говоря, если это обратная отправка), ASP.NET
десериализирует информацию о состоянии представления и применяет ее
9
ко всем элементам управления.
На этом этапе запускается событие Page.Init. Однако это событие редко обрабатывается веб-страницей, поскольку еще слишком рано вы-
полнять инициализацию страницы. Причина в том, что объекты элементов управления еще не созданы, а информация о состоянии представления по-
ка не загружена.
Инициализация кода пользователя. На этом этапе запускается собы-
тие Page.Load. Большинство веб-страниц обрабатывают это событие для выполнения любой необходимой инициализации, подобной заполнению динамических текстовых полей или конфигурирования элементов управ-
ления.
Событие Page.Load запускается всегда, независимо от того, запраши-
вается страница впервые или же как часть обратной отправки. К счастью, ASP.NET позволяет программистам различать события первой загрузки страницы и все последующие загрузки.
Почему это важно? Во-первых, поскольку состояние представления поддерживается автоматически, вам необходимо извлекать свои данные из источника динамических данных только при первой загрузке страницы. Во время обратной отправки вы можете позволить ASP.NET самостоятельно восстановить свойства элементов управления из состояния представления.
Это может значительно увеличить производительность, если информацию достаточно "дорого" восстанавливать (например, если ее необходимо за-
прашивать из базы данных).
Во-вторых, существуют также другие сценарии, например, формы редактирования и страницы детализации, для которых нужно отображать один интерфейс при первом использовании страницы и другой интерфейс при последующих ее загрузках.
Конфигурация ASP.NET
10