Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвИ / Конспект лекций.doc
Скачиваний:
267
Добавлен:
01.06.2015
Размер:
1.05 Mб
Скачать

Лекция 15. Управление Web-методами при помощи атрибутов Атрибуты Web-метода

При помощи свойств атрибута WebMethod можно определять поведение методов Web-сервиса XML в период разработки. Следующие свойства атрибута WebMethod позволяют настраивать методы и управлять поведением Web-сервиса:

  • BufferResponse — свойство типа boolean; разрешает или запрещает буферизацию откликов Web-метода в памяти;

  • CacheDuration — свойство типа integer; определяет время кэширования (в секундах) отклика Web-метода в памяти;

  • Description — свойство типа string; описывает Web-метод;

  • EnableSession — свойство типа boolean; определяет, активно ли сеансовое состояние для данного Web-метода. Если да, Web-методу будет доступен объект ASP.NET HttpSessionState;

  • MessageName — задает псевдоним Web-метода;

  • TransactionOption — определяет для Web-метода параметры поддержки транзакций.

Буферизация откликов Web-метода

Буферизация откликов Web-метода повышает производительность приложения, уменьшая объем данных, которыми обмениваются рабочий процесс с процессом IIS. Буферизация откликов Web-метода включается при помощи свойства BufferResponse атрибута WebMethod: если оно установлено в True (значение по умолчанию), ASP.NET буферизует все отклики перед отправкой клиенту, в противном случае для откликов выделяются буферы размером по 16 Кб. Ниже показан пример, иллюстрирующий применение свойства BufferResponse.

Visual c#

public class Service1:System.Web.Services.WebService

{

[WebMethod (BufferResponse=false)]

public int AddNumbers(int num1, int num2)

{

return (num1+num2);

}

}

Кэширование результатов Web-метода

Свойство CacheDuration атрибута WebMethod включает кэширование результатов Web-метода. ASP.NET кэширует результаты каждого вызова с уникальным набором параметров на период, заданный значением CacheDuration (по умолчанию это 0). Следующий фрагмент кода назначает свойству CacheDuration Web-метода AddNumbers значение 60 (секунд):

Visual C#

public class Service1:System.Web.Services.WebService

{

[WebMethod(CacheDuration=60)]

public int AddNumbers(int num1, int num2)

{

return (num1+num2);

}

}

Назначение описания Web-методу

При помощи свойства Description можно назначить текст, отображаемый справочной Web-страницей этого Web-метода. Свойство Description принимает строковое значение и используется следующим образом:

Visual C#

public class Service1:System.Web.Services.WebService

{

[WebMethod(Description="Takes two integer values and returns their sum.")]

public int AddNumbers(int num1, int num2)

{

return (num1+num2);

}

}

Включение сеансового состояния для Web-метода

При помощи свойства EnableSession можно настроить Web-метод так, чтобы он сохранял состояние объектов между сеансами. Если это свойство установлено в True, Web-сервис XML обращается к набору сеансового состояния непосредственно через объект HttpContext.CurrentSession или свойство WebService.Session (если оно унаследовано от базового класса WebService). Значение свойства EnableSession по умолчанию — False. Следующий фрагмент кода включает поддержку сеансового состояния Web-метода:

Visual C#

public class Service1:System.Web.Services.WebService

{

[WebMethod(EnableSession=true)]

public double ConvertPounds (double kgs)

{

Session["Conversions"] = (int) Session["Conversions"] + 1;

return (kgs * .45);

}

[WebMethod(EnableSession=true)]

public int GetNumberOfConversions()

{

return (int) Session["Conversions"];

}

}

Назначение псевдонимов перегруженным Web-методам

Свойство MessageName атрибута WebMethod позволяет назначать перегруженным Web-методам Web-сервиса XML уникальные псевдонимы. Если для метода определено свой­ство MessageName, его значение заменяет реальное имя метода в сообщениях SOAP. Ниже показано, как используется свойство MessageName.

Visual C#

public class Service1:System.Web.Services.WebService

{

[WebMethod(MessageName="AddIntegers")]

public int AddNumbers(int numl, int num2)

{

return (num1+num2);

}

[WebMethod(MessageName="AddLongs")]

public long AddNumbers(long numl, long num2)

{

return (num1+num2);

}

}

Лекция 16. Web Services Enhancements

Без эффективной защиты Web-сервисы практически бесполезны. Web-сервисам нужно так или иначе принимать удостоверения пользователей. Если сервис не является интерактивным, он должен либо получать маркер защиты (security token) от вызывающего приложения, либо предоставлять соответствующие методы для передачи удостоверений. Тем не менее, разработчики SOAP решили отложить определение стандартов обеспечения безопасности. Совместная разработка Microsoft и IBM привела к появлению серии спецификаций по обеспечению безопасности Web-сервисов.

Замечание: Простая установка Microsoft WSE 2.0 не сделает Web-сервисы безопаснее.

Соответствующее конфигурирование проекта Web-сервиса с помощью WSE SoapExtention позволяет использовать элементы безопасности, оформленные в виде SOAP-сообщений, которые затем передаются клиентом на сторону Web-сервиса. Использование элементов безопасности Web-сервисов осуществляются посредством кодирования или описания политик.

Рассмотрим простой пример метода, публикуемого Web-сервисом:

[WebMethod]

public string GetUserName()

{

return "Hello, Anonymous";

}

Очевидно, что данный Web-метод является уязвимым для различного рода атак:

  1. Web-метод может любой пользователь, обнаруживший сервис; нет возможности идентифицировать пользователя, вызвавшего данный метод;

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

  3. SOAP-сообщения могут быть перехвачены и прочитаны так как передаются по сети в открытом виде.

Необходимо решить проблемы по обеспечению безопасности по каждому из этих пунктов.

Соседние файлы в папке ПвИ