Главная » Silverlight » Использование веб-служб ASP.NET

0

Обычно службы WCF не имеют доступа к средствам платформы ASP.NET. Сле­довательно, даже несмотря на то что платформа ASP.NET компилирует и хостирует службу, в службе не могут использоваться следующие средства:

•    состояния сеанса;

•    кеширование данных;

•    правила авторизации, определенные в файле web. config;

•    средства провайдера (аутентификация, членство в группе, профили пользователей).

Во многих случаях эти ограничения не лишены смысла, потому что службы WCF создавались как независимые от платформы ASP.NET Использовать средства ASP.NET опасно, потому что они ограничивают перенос веб-службы на другие компьютеры, ис­пользование других транспортных протоколов и т.д. В приложении Silverlight указан­ные опасности могут не проявиться, тем не менее в большинстве случаев службе лучше быть как можно более самодостаточной.

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

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

Однако в некоторых ситуациях средства ASP.NET могут быть полезными в службе. Например, иногда нужно создать службу, в которой используется кеширование, если оно определено в приложении. Если не определено, служба может плавно деградиро­вать, получая информацию из другого источника (например, из базы данных). Однако если кеш существует и содержит нужную информацию, можно повысить производи­тельность, избавившись от повторных запросов и создания дополнительных объектов. Аналогично некоторые средства провайдера ASP.NET облегчают решение ряда задач, таких как аутентификация пользователя, реализация ролевых средств безопасности и т.д., позволяя отказаться от создания указанных средств с нуля.

Для доступа веб-службы к средствам ASP.NET используется статическое свойство Current класса System.Web.HttpContext. Этот класс отображает среду HTTP, хости- рующую службу, и предоставляет доступ к ключевым объектам ASP.NET посредством своих свойств. Можно использовать следующие свойства: Session (состояние сеанса конкретного пользователя), Application (глобальное состояние приложения), Cache (кеш данных). Request (сообщение запроса HTTP, включая заголовки HTTP, параметры клиентского браузера, файлы cookie, запрошенный URL и т.д.). User (пользователь, сде­лавший запрос и аутентифицированный средствами ASP.NET) и т.д. Разработчики при­ложений ASP.NET хорошо знакомы со всеми этими свойствами.

В следующем примере класс HttpContext используется для обращения к кешу дан­ных. Класс кеширует массив объектов Product, чтобы запрос к базе данных не нужно было передавать при каждом вызове метода веб-службы.

// Это метод веб-службы

public Product[] GetAllProducts () {

/ / Обращение к кешу

HttpContext context = HttpContext.Current;

if (context.Cache["Products"] != null)

{

// Извлечение массива из кеша

return (Product[])context.Cache["Products"];

}

else

{

// Извлечение массива из базы данных Product [ ] products = QueryProducts ();

// Сохранение массива в кеше на 10 минут context.Cache.Insert("Products", products, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero);

return products;

}

}

// Этот закрытый метод содержит код обращения к базе данных private Product[] QueryProducts () { … )

Средства кеширования (как и другие средства ASP. NET) выходят за рамки данной книги. В примере лишь показано, как профессиональные разработчики прило­жений ASP.NIiT могут использовать средства ASP.NET при создании служб WCF.

Поэкспериментировать с кешированием в веб-службе можно с помощью кодов приме­ров для данной главы.

Примечание. Дополнительную информацию о службах платформы ASP.NET, таких как кеширование и аутентификация, можно найти в моей книге Microsoft ASP.NET 3.5 с примерами на С# 2008 для профессионалов ("Вильяме", 2008).

Службы .NET RIA

В дополнении к Silverlight, которое называется .NET RIA (Rich Internet Application — мощные приложения Интернета), реализована модель коммуникации, разрушающая барьеры между Silverlight и ASP.NET и существенно облегчающая доступ из Silverlight к ASP.NET посредством веб-служб. Например, .NET RIA предоставляет инфраструктуру средств аутентификации на основе ASP.NET, которые можно использовать в Silverlight. Кроме того, .NET RIA содержит ин­струмент связывания данных, генерирующий методы чтения и обновления информации, хранящейся в таблицах баз данных. На момент написания книги службы .NET RIA представлены в формате СТР (Community Tech Preview — пред­варительная технология сообщества). Дополнительную информацию о службах .NET RIA можно найти на странице www.silverlight.net/forums/t/101160.aspx.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии