Web-службы WCF в Silverlight

Сегодня я расскажу, как создавать проект Silverlight, в паре с Web-службой Windows Communication Foundation и как-то взаимодействовать с этой службой.
Начнем с того, что запустим MSVS 2008:
image
Далее, появляется окно, тут тоже просто ОК:
image
Создается проект Silverlight. Silverlight просто как статичный сайт нам не интересен. Давайте сделаем динамику. Чтобы можно было отправлять какие-то данные, получать какие-то данные. Для этого нам понадобится WCF-сервис.

addfile
В меню выбираем Web-сервис WCF, как-нибудь его называем и жмем кнопку Add:
image
В файле IMyWCFService.cs объявляем интерфейс функции TellMeSomething:
public interface IMyWCFService
{ [OperationContract] string TellMeSomething(string name); }


Далее переходим в файл MyWCFService.svc.cs:

image

Пишем нашу функцию TellMeSomething:

public class MyWCFService : IMyWCFService 
{
#region IMyWCFService Members public string TellMeSomething(string name)
{
return string.Format("Hello, {0} ! How are you?", name);
} #endregion
}
Далее мы идем в файл Web.config, находим пункт
<endpoint address="" binding="wsHttpBinding" contract="WebServicesForBlog.Web.IMyWCFService">
и меняем wsHttpBinding на basicHttpBinding.

Настройки конфигурационного файла на этом закончены.


Теперь возвращаемся к Silverlight-проекту и проектируем страницу:
<Grid x:Name="LayoutRoot">
<StackPanel x:Name="OurStackPanel" Orientation="Vertical">
<TextBox x:Name="InputStr"></TextBox>
<Button x:Name="CallService" Content="Call WCF Service" Click="CallService_Click"></Button>
</StackPanel>
</Grid>



Далее нам нужно подключить WCF-службу, что мы создали:
image


После чего в появившемся окне нажимаем кнопку – Discover, и вводим поле Namespace референс, т.е. название экземпляра нашей WCF-службы:

image

И нажимаем ОК.

Все, теперь службу WCF мы подключили к проекту. Осталось ее использовать.
Допишем в разметку еще и TextBlock для вывода текста:

<TextBlock x:Name="OutField"></TextBlock>

А теперь перейдем к программированию кнопки:
private void CallService_Click(object sender, RoutedEventArgs e) {
MyWCFServiceReference.MyWCFServiceClient proxy = new WebServicesForBlog.MyWCFServiceReference.MyWCFServiceClient();
proxy.TellMeSomethingCompleted += new EventHandler<WebServicesForBlog.MyWCFServiceReference.TellMeSomethingCompletedEventArgs>(proxy_TellMeSomethingCompleted);
proxy.TellMeSomethingAsync(InputStr.Text);
}

И добавим EventHandler для события, когда служба WCF уже отработала:

void proxy_TellMeSomethingCompleted(object sender, WebServicesForBlog.MyWCFServiceReference.TellMeSomethingCompletedEventArgs e)
{
OutField.Text = e.Result;
}

Теперь запускаем проект! Вводим имя в Textbox и нажимаем кнопку "Call WCF Service"

image

Служба обрабатывает значение из TextBox-а и возвращает значение в TextBlock. Таким образом службы WCF – это обширная платформа для разработки многофункциональных динамических Silverlight-приложений. WCF нужен там, где используется обмен и обработка данных сервером.

0 коммент.:

Отправить комментарий