Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 691
Эндрю Троелсен
…
void Session_Start(Object sender, EventArgs e) {
// Чтобы сделать доступными сеансовые данные Web-сервиса,
// присвойте каждому пользователю случайное число.
Random r = new Random ();
Session["SessionRandomNumber"] = r.Next(1000);
}
…
‹/script›
С целью проверки в рамках класса Service создайте новый Web-метод, возвращающий присвоенное пользователю случайное значение.
public class Service: System.Web.Services.WebService {
…
[WebMethod(EnableSession = true,
Description = "Получите ваше случайное значение!")]
public int GetMyRandomNumber() { return (int)Session["SessionRandomNumber"]; }
}
Заметим, что здесь атрибут [WebMethod] явно устанавливает для свойства EnableSession значение true (истина). Этот шаг необходим, поскольку по умолчанию для любого Web-метода контроль его данных сеансового состояния
‹?xml version="1.0" encoding="utf-8"?›
‹int xmlns="http://www.IntertechTraining.com/WebServers"›931‹/int›
в то время как второй может получить значение 472.
‹?xml verslon="l.0" encoding="utf-8"?›
‹int xmlns="http://www.IntertechTraining.com/WebServers"›472‹/int›
Настройка данных сеансового состояния с помощью Web.config
Наконец, напомним, что файл Web.config можно изменить с тем, чтобы в нем указывалось место, где должны запоминаться данные состояния для Web-сервиса XML. Для этого используют элемент ‹sessionState› (описанный в предыдущей главе).
‹sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" /›
Исходный код. Файлы примера CalculatorService размещены в подкаталоге, соответствующем главе 25.
Язык описания Web-сервисов (WSDL)
В последних нескольких примерах вы могли видеть отдельные фрагменты WSDL-кода. Напомним, что WSDL – это основанная на XML грамматика, предназначенная для описания возможностей взаимодействия внешних клиентов с Web-методами, доступными по данному адресу URL в рамках каждого из поддерживаемых протоколов связи. Во многих отношениях WSDL-документ может рассматриваться, как "контракт" между клиентом Web-сервиса и самим Web-сервисом. Это еще один метаязык. В частности, WSDL используется для описания следующих характеристик любого доступного Web-метода:
• имя Web-метода XML;
• число, тип и порядок следования параметров (если таковые имеются);
• тип возвращаемого значения (если таковое предусмотрено);
• условия вызова HTTP GET, HTTP POST и SOAP.
В большинстве случаев WSDL-документы генерируются автоматически соответствующим Web-сервером. Напомним, что при добавлении суффикса?wsdl к адресу URL, указывающему на файл *.asmx, Web-сервер генерирует WSDL-документ для указанного Web-сервиса XML.
http://locаlhost/SomeWS/theWS.asmx?wsdl
Но если IIS автоматически генерирует WSDL-документ для данного Web-сервиса XML, зачем тогда нужно глубокое понимание синтаксиса генерируемых WSDL-данных? Ответ обычно зависит от того, как ваш сервис будет использоваться внешними приложениями. В случае Web-сервисов XML, предназначенных для "внутреннего" использования, сгенерированного Web-сервером WSDL-кода будет, как правило, достаточно.