Главная » Silverlight » Веб-службы ASRNET

0

Наиболее интересные приложения Silverlight имеют "скрытый скелет" на сторо­не сервера, благодаря которому приложение может обращаться к серверу для аутентификации пользователя, получения информации, хранящейся в базах данных, сохранения данных в центральном хранилище, выполнения ресурсоемких задач, т.е. для решения любых проблем, непосильных для клиентского кода. Во всех упомянутых случаях решение может быть основано на обращении к службам — библиотекам сер­верного кода, доступным для любого клиентского приложения.

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

Новые средства. В Silverlight 3 модель веб-служб немного изменена. Например, для коммуникации с веб-службами теперь используются более компактные двоичные сообщения. Добавлен механизм извлечения из веб-службы информации об ошибках. Дуплексные (двухсторонние) службы теперь намного легче создавать. Наиболее впечатляющая новинка — средства мониторинга сети, позволяющие контролировать наличие прерывистого сетевого соединения.

Создание веб-служб для Silverlight

Наиболее эффективный способ доступа приложения Silverlight к серверному коду — посредством веб-служб. Базовая идея простая: нужно добавить веб-службу на сайт ASP. NET и запрограммировать в приложении Silverlight вызов ее методов. Код веб-службы может предоставлять содержимое, сгенерированное на сервере, и выполнять запросы на выборку и обновление, обращаясь к серверным базам данных (см. главу 16). Он мо­жет даже использовать специализированные службы ASP.NET, такие как аутентифика­ция пользователя, кеширование и управление сеансами. Лучше всего то, что при этом не происходит обратной передачи страницы, и приложение Silverlight продолжает вы­полняться, не прерываясь.

Приложение Silverlight может вызывать традиционные веб-службы ASP.NET (.asmx) и службы WCF (новейший стандарт). В следующих разделах рассматривается создание, вызов и редактирование служб WCF. Кроме того, в главе 20 рассматривается вызов при­ложением Silverlight веб-служб, работающих не на платформе .NET, таких как простей­шая служба REST.

2.    В текстовом поле Address (Адрес) введите URL, указывающий на веб-службу, и щелкните на кнопке Go (Добавить). Однако вы, скорее всего, не знаете точного адреса URL службы, потому что она применяет случайно выбранный порт, задан­ный тестовым сервером Visual Studio (например, http://localgost:5473/Sil- verlightApplication .Web/TestService. svc). Можете запустить веб-приложение, чтобы выяснить адрес и ввести его вручную. Можно также щелкнуть на кноп­ке Discover (Искать), чтобы автоматически найти все веб-службы, определенные в текущем решении.

3.    В текстовом поле Namespace (Пространство имен) введите имя пространства имен С#, которое программа Visual Studio будет использовать для автоматиче­ской генерации классов. Это пространство имен создается в пространстве имен проекта. Например, если проект называется MyClient, а пространство имен веб- службы имеет имя WebServiceSite, то полное имя пространства имен имеет вид MyClient.WebServiceSite.

4.    Щелкните на кнопке ОК. Программа Visual Studio создаст класс прокси с кодом вызова веб-службы. Чтобы увидеть файл, содержащий этот код, откройте окно решений, выделите проект Silverlight и щелкните на кнопке Show All Files (Пока­зать все файлы). Разверните узел Service References, а в нем — узел Reference. svcmap. Откройте файл Reference. cs.

В результате выполнения этих операций программа Visual Studio создает класс прокси, с которым можно взаимодействовать для вызова веб-службы. Имя класса прокси основано на имени класса исходной веб-службы. Например, для рассмотрен­ной выше службы TestService программа Visual Studio создает класс прокси с именем TestServiceClient. Класс прокси содержит методы, позволяющие запускать вызовы со­ответствующих служб. Кроме того, в классе прокси выполняются многие низкоуровне­вые задачи, такие как создание запросов, передача запросов по каналу HTTP, получение ответа, извещение кода о получении ответа и т.д.

Ссылку на службу можно обновить в любой момент, например, чтобы учесть изме­нения в службе (такие, как добавление методов, изменение типов и параметров методов и т.д.). Для этого перекомпилируйте веб-приложение, щелкните правой кнопкой мыши на ссылке на службу в окне Solution Explorer (Проводник решений) и выберите команду Update Service Reference (Обновить ссылку на службу).

Генерация кода прокси в командной строке

В Silverlight 3 есть утилита командной строки, выполняющая те же операции, что и встроенные в Visual Studio сред­ства обработки ссылок на службу. Эта утилита называется slsvcutil.exe. Запустить ее легче всего с помощью командной строки Visual Studio. Например, приведенная ниже команда создает код прокси дЛя рассмотренной выше службы TestService. Естественно, номер порта должен совпадать с номером, используемым службой.

slsvcutil http://localhost: 4198/ASPWebSite/1^ TestService.svc?WSDL

Параметр ?WSDL, добавленный в команду, обозначает тип соединения службы и приказывает сайту ASP.NET предо­ставить документ WSDL (Web Service Description Language — язык описания веб-служб), в котором описана служба. В документе WSDL находится подробная информация об открытом интерфейсе службы (о доступных методах и пара­метрах), однако в нем нет конфиденциальной информации о коде и внутренней структуре службы. В документе WSDL есть все, что необходимо программе Visual Studio или утилите slsvcutil. ехе для генерации кода прокси. Утилиту slsvcutil .ехе чаще всего используют по той причине, что для службы нужно сгенерировать код класса прокси, применяемый при автоматизации создания службы. Чтобы увидеть список и описание всех доступных пара­метров утилиты slsvcutil. ехе, введите ее имя без параметров.

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

По теме:

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