- •Федеральное агентство по образованию
- •Таганрогский государственный радиотехнический университет
- •Программирование в Интернет
- •Лекция 1. Введение в Web-программирование
- •Принцип работы Web-приложений
- •Обзор известных средств программирования для Internet
- •Первое решение: cgi
- •Преимущества cgi
- •Недостатки cgi
- •Второе решение: isapi-интерфейс
- •Преимущества isapi
- •Недостатки isapi
- •Третье решение: asp
- •Преимущества asp
- •Недостатки asp
- •Лекция 2. Введение в php
- •Что такое рнр?
- •Архитектура рнр
- •Первая программа на php
- •Взаимодействие html и php
- •Лекция 3. Типы данных php
- •Комментарии
- •Логические переменные
- •Синтаксис логических переменных
- •Приведение значений к логическому типу
- •Целые числа
- •Синтаксис целочисленных переменных
- •Целочисленное переполнение
- •Приведение к целочисленному типу
- •Вещественные числа
- •Константы
- •Преобразование строк
- •Лекция 4. Переменные
- •Изменение типа переменной
- •Преобразование типа переменной
- •Операторы и выражения
- •Оператор присваивания
- •Арифметические операторы
- •Оператор конкатенации
- •Дополнительные операторы присваивания
- •Операторы сравнения
- •Логические операторы
- •Увеличение или уменьшение целой переменной
- •Порядок вычисления операторов
- •Динамические переменные
- •Ссылки на переменные
- •Лекция 5. Инструкция if
- •Блок else инструкции if
- •Блок elseif инструкции if
- •Инструкция switch
- •Оператор ?
- •Цикл while
- •Цикл do... While
- •Цикл for
- •Прерывание циклов инструкцией break
- •Пропуск итераций с помощью инструкции continue
- •Лекция 6. Функции
- •Аргументы функции
- •Аргументы по умолчанию
- •Область видимости переменных
- •Лекция 7. Краткий обзор .Net Framework
- •Промежуточный язык Microsoft Intermediate Language
- •Компиляция “Just In Time”
- •Управляемый код и данные
- •Лекция 8. Создание приложений Web Forms Файлы проекта Web Forms
- •Файлы Web-приложения
- •Обработка событий События жизненного цикла Web-приложения
- •Сохранение данных Web-формы
- •Visual Basic .Net
- •Visual c#
- •События Application и Session
- •Visual Basic .Net
- •Visual c#
- •События Web-формы
- •Visual Basic .Net
- •Visual c#
- •События серверных элементов управления
- •Visual Baste .Net
- •Visual c#
- •Лекция 9. Работа с Web-объектами Введение в пространство имен
- •Пространства имен в Web-приложениях Обзор пространства имен Web
- •Visual Basic .Net
- •Visual c#
- •Использование объекта Application
- •Visual Baste .Net
- •Visual c#
- •Использование объекта Page
- •Visual Basic
- •Visual с#
- •Использование объекта Request
- •Visual Baste .Net
- •Visual c#
- •Использование объекта Response
- •Visual Baste .Net
- •Visual c#
- •Лекция 10. Сохранение сведений о состоянии Способы сохранения сведений о состоянии
- •Использование строк запросов
- •Visual Basic .Net
- •Visual c#
- •Использование переменных состояния Application и Session
- •Упорядочение доступа к переменным состояния
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Отключение переменных состояния Session
- •Лекция 11. Web-элементы управления. Использование элементов управления.
- •Простые элементы управления
- •Элементы управления Label
- •Элементы управления HyperLink
- •Элементы управления Image
- •Элементы управления CheckBox
- •Элементы управления RadioButton
- •Элементы управления Table
- •Элементы управления DropDownList
- •Элементы управления ListBox
- •Элементы управления CheckBoxList
- •Элементы управления RadioButtonList
- •Лекция 12. Проверяющие элементы управления
- •Использование проверяющих элементов управления
- •RequiredFieldValidator
- •RangeValidator
- •CompareValidator
- •RegularExpression Validator
- •CustomValidator
- •ValidationSummary
- •Отмена проверки вводимых данных
- •Лекция 13. Введение в Web-сервисы Обзор Web-сервисов xml
- •Инфраструктура Web-сервисов xml
- •Взаимодействие клиентов и Web-сервисов xml
- •Лекция 14. Механизм обнаружения Web-сервисов xml
- •Использование Web-сервисов xml
- •Добавление Web-ссылки
- •Генерация класса прокси
- •Создание объекта класса прокси
- •Доступ к Web-сервису xml через объект прокси
- •Сериализация
- •Лекция 15. Управление Web-методами при помощи атрибутов Атрибуты Web-метода
- •Буферизация откликов Web-метода
- •Visual c#
- •Пользовательские маркеры
- •Подписи
- •Шифрование
- •Лекция 17. Модель безопасности asp.Net
- •Лекция 18. Введение в инфраструктуру Microsoft .Net Remoting
- •Объекты .Net Remoting
- •Передача объектов по механизму .Net Remoting
- •Пример кода для простого серверного объекта .Net Remoting
- •Срок жизни, определяемый арендой
- •Channel Services (System.Runtime.Remoting.Channels)
- •Пример кода, загружающего Channel Services
- •Форматирующие объекты сериализации (System.Runtime.Serialization.Formatters)
Лекция 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-метод является уязвимым для различного рода атак:
Web-метод может любой пользователь, обнаруживший сервис; нет возможности идентифицировать пользователя, вызвавшего данный метод;
"подлинность" принимаемых SOAP-сообщений не возможно проверить; атакующий может перехватить сообщение, подменить его и переправить на принимающую сторону, оставаясь незамеченным;
SOAP-сообщения могут быть перехвачены и прочитаны так как передаются по сети в открытом виде.
Необходимо решить проблемы по обеспечению безопасности по каждому из этих пунктов.
