Часто задаваемые вопросы по SilverLight - часть 2 - Различные шаги процесса использования сервиса WCF в Silverlight

ОГЛАВЛЕНИЕ

Различные шаги процесса использования сервиса WCF в Silverlight

Использование сервиса WCF – это процедура из 4 шагов.

Шаг 1: Создание вашего сервиса WCF

Первый шаг – это создание вашего сервиса WCF. При создании сервиса WCF он создает по умолчанию функцию ‘GetData’, которая принимает целочисленное значение и возвращает строку, содержащую сообщение “Вы ввели 10” , в случае если вы передали функции ‘10’ в качестве значения. Мы попробуем использовать этот сервис в silverlight в следующих шагах.

public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
}

Шаг 2: Включение функции междоменной работы для вашего сервиса WCF

Например, сервис WCF и веб-приложение silver light будут размещены на разных веб-сайтах IIS (информационный интернет-сервер). Иными словами, они будут размещены в разных доменах. Когда идет речь о разных вебсайтах, это означает, что они размещены в разных доменах. Например, возможно, что ваше веб-приложение silver light размещено в одном домене типа http://www.xyz.com/, а ваш сервис WCF размещен в другом домене, т.е. http://www.pqr.com/ .

Нужно включить функцию междоменной работы для сервиса WCF, чтобы другие домены могли использовать сервис WCF.

Рисунок: Междоменная работа

Нужно создать два файла XML (clientaccesspolicy.xml и crossdomain.xml) в корневом каталоге сервиса WCF, чтобы включить возможность междоменной работы.

Ниже приведен фрагмент кода XML для clientaccesspolicy.xml.

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource include-subpaths="true" path="/"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>

Ниже приведен фрагмент кода XML для crossdomain.xml

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

Шаг 3: Добавление ссылки на сервис WCF и вызов сервиса

Создайте простое приложение silverlight и добавьте ссылку на сервис в ваш проект silverlight. Чтобы вызывать сервис WCF, нужно задать обработчики событий. Использование сервиса WCF – это процедура из трех шагов. На первом шаге ссылайтесь на пространство имен. На втором шаге создайте объект вашего сервиса WCF. На последнем шаге нужно создать обработчик события, который будет получать результаты, отправленные сервисом WCF.

Важно помнить, что функция ‘GetData’ вызывается асинхронно.

Шаг 4: Добавление ссылки на сервис WCF и вызов сервиса

В конце концов, компилируйте программу и наслаждайтесь результатом работы.

Почему нельзя использовать ADO.NET напрямую в SilverLight?

Silverlight не имеет ADO.NET

Ниже перечислены различные компоненты, образующие подключаемый модуль SilverLight. Важно учитывать то, что в его состав не входит ADO.NET. Иными словами, нельзя напрямую вызывать код ADO.NET из приложения SilverLight. Нужно помнить, что в него входит компонент WCF. То есть можно вызывать сервис WCF.

Можно создать сервис WCF, выполняющий работу с базой данных, и приложение silverlight будет вызывать его же. Также нельзя возвращать объекты ADO.NET в виде набора данных и т.д., так как  SilverLight не сможет их понять.

Ниже описаны 7 важных шагов, которые необходимо выполнить, чтобы использовать сервис базы данных WCF в silverlight.