Чтение онлайн

ЖАНРЫ

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

Сразу сделаем несколько замечаний о терминологии и времени жизни приложения.

Приложение определяется как все файлы проекта, оно сконфигурировано с помощью файлов

web.config
. Объект
Application
создается, когда приложение запускается в первый раз, что происходит, когда поступает первый запрос HTTP. В это время также срабатывает событие
Application_Start
, обработчик событий для которого детально описывается в
global.asax
(вместе со всеми другими событиями, обсуждаемыми здесь), и создается пул экземпляров
HttpApplication
. Каждый входящий запрос получает один из этих экземпляров,
который выполняет обработку запроса (это означает, что объекты
HttpApplication
не нуждаются в копировании при одновременном доступе, в отличие от глобального объекта
Application
). Когда все экземпляры
HttpApplication
заканчивают свою работу срабатывает событие
Application_End
, и приложение прекращается, разрушая объект
Application
.

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

Session
вместе с включением события
Session_Start
. В течение сеанса в отдельные запросы могут входить события
Application_BeginRequest
и
Application_EndRequest
. Это повторяется несколько раз за сеанс, когда в приложении происходит доступ к различным ресурсам. Отдельные сеансы могут прекращаться вручную или будут прерываться, если не получают больше никаких запросов. Прекращение сеанса включает событие
Session_End
и разрушение объекта
Session
.

Как этот процесс может нам помочь? Существует несколько вещей, которые можно сделать, чтобы рационализировать приложение. Вернемся к приложению, которое разрабатывалось в этой главе. Каждый раз при доступе к странице .aspx множество записей заполняется содержимым

PCSWebApp3.mdb
. Это множество записей всегда используется только для считывания данных, так как для добавления мероприятий в базу данных используется другой метод. В таких случаях можно заполнить множество записей в обработчике событий
Application_Start
и сделать его доступным для всех пользователей. Единственный раз, когда понадобиться обновить множество записей, возникнет, если будет добавлено событие. Это существенно повышает производительность, так как в большинстве запросов не будет требоваться доступ к базе данных.

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

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

Заключение

В этой главе был представлен обзор создания приложения Web с помощью ASP.NET. Мы видели, как можно использовать информацию о C#, которая была дана в этой книге совместно с элементами управления сервера Web для получения насыщенной среды разработки. Мы разработали приложение для заказа помещения для проведения мероприятий, чтобы проиллюстрировать многие из доступных технологий, таких как существующие различные серверные элементы управления и соединение данных с ADO.NET.

В следующих двух главах мы рассмотрим две более важные темы Web: службы Web и специальные элементы управления. Мы продолжим разработку примера

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

В заключение можно сказать, что ASP.NET является новым оружием в арсенале разработчика Web: серверная обработка на данный момент является непревзойденной, а мощнейшие возможности C# и платформы .NET очень привлекательны для пользователей. 

Глава 17

Службы Web

Службы Web — это новый способ выполнения удаленного вызова методов посредством HTTP с помощью SOAP (Simple Object Access Protocol — простой протокол доступа к объектам). Раньше это было связано с трудностями, что может засвидетельствовать каждый, кто имеет опыт работы с DCOM (Distributed COM — распределенный COM). Создание экземпляра объекта на удаленном сервере, вызов метода и получение результата были далеко не простыми, а необходимая конфигурация была еще более сложной.

SOAP существенно упрощает ситуацию. Эта технология является стандартом на основе XML который определяет, как можно делать вызовы методов через HTTP воспроизводимым образом. Удалённый сервер SOAP способен понимать эти вызовы и выполнять всю трудную работу, такую как создание экземпляра требуемого объекта, выполнение вызова и возврат клиенту ответа, форматированного SOAP.

Как и в случае ASP.NET мы обладаем всеми возможностями технологий C# и .NET на сервере, но более важно, что простое использование служб Web можно получить на любой платформе, имеющей к серверу доступ HTTP. Другими словами, вполне возможно что код Linux мог бы, например, использовать службы .NET.

Кроме того, службы Web можно полностью описать с помощью WSDL (Web Service Description Language — язык описания служб Web), допуская динамический поиск cлужб Web во время выполнения приложения. WSDL предоставляет с помощью XML со схемами XML описания всех методов (вместе с типами данных, требуемыми для их вызова). Существует широкое множество типов данных, доступных для служб Web, которые простираются от простых примитивных до полноценных объектов

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

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

SOAP

Как упоминалось выше, одним из способов обмена данными со службами Web является SOAP. Эта технология широко обсуждалась в прессе, особенно с тех пор, как компания Microsoft решила принять ее для использования на платформе .NET. Теперь волнение, кажется, слегка успокоилось, так как спецификация SOAP была завершена. Если подумать, то знание того, как точно работает SOAP, похоже на знание того, как работает HTTP, в принципе это интересно, но не существенно. Большую часть времени нам нет необходимости беспокоиться о формате сделанного со службами Web обмена, он просто происходит, а мы получаем требуемый результат, и все довольны. 

По этой причине здесь не будет представлено подробное рассмотрение, но будет показано несколько простых запросов и ответов SOAP, чтобы можно было получить некоторое представление о том, что происходит за сценой. 

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

int DoSomething(String stringParam, int intParam)

Далее представлены требуемые для этого заголовки SOAP и body. Вверху указан адрес службы Web (об этом больше будет сказано далее):

Поделиться с друзьями: