WebService – это особая технология, используемая в распределенных системах для взаимодействия между удаленными серверами. Развертывается на основе веб сервера IIS. Использует протокол http, основанный на http протокол SOAP (XML). На ее основе работают создаются приложения SilverLight, работающие с удаленными системами.

Технология очень удобна тем, что легко подключается через Visual Studio, и в последствии легко используется, как готовый класс, со всеми его методами и полями, доступные для удаленного использования.

И так приступим, создадим проект SilverLight, назовем его «SimpleService».

http://silverlightru.net/

Укажем, чтобы Visual Studio создало для нас веб проект, с тестовой страничкой.

http://silverlightru.net/

Так как я хочу продемонстрировать работу, SilverLight и WebService, мне понадобится кнопка и поле ввода для того, чтобы  запросить информацию у WebService, и TextBlock для того, чтобы вывести информацию.

Код XAML:


<UserControl x:Class="SimpleService.Page"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Width="400" Height="300">
  <StackPanel x:Name="LayoutRoot" Background="White">
  	<TextBox x:Name="FirstNumber"  Width="100" Height="50" Text="First Number ..."  />
  	<TextBox x:Name="SecondNumber"  Width="100" Height="50" Text="Second Number ..."  />
  	<TextBlock x:Name="OutPutText"  Width="100" Height="50" Text="Input Text ..."  />
  	<Button x:Name="Call"  Width="100" Height="50" Content="Call Service"  Click="Call_Click" />
  </StackPanel></UserControl>

http://silverlightru.net/

Теперь необходимо создать на WebService. Мы его будем создавать в веб проекте. Для этого Правой клавишей нажимаем по корневому каталогу веб проекта (Название его будет таким [Название вашего Solution]Web, в моем случае SimpleService) и выбираем – «Add New Item». Откроется окно шаблонов, предлагаемых Visual Studio. Выбираем WebService. Укажем имя, например «MyService». И так веб сервис создан, он состоит из двух файлов MyService.asmx и MyService.cs.

Содержимое файла MyService.asmx:

  <%@ WebService Language="C#"  CodeBehind="~/App_Code/MyService.cs" Class="MyService" %>

Как видите код нашего сервиса расположен в специальном каталого App_Code.

Откроем его:

Код C#:

using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;

/// 
/// Summary description for MyService
/// 
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class MyService : System.Web.Services.WebService
{
    public MyService()
    {
        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }
}

Visual Studio позаботилась о нас и сгенерировала нужный нам код, и даже сгенерировала тестовый метод Hello World, с помощью, которого можно проверить работоспособность нашего WebService.
Давайте проверим, работаем ли наш WebService. Для этого правой клавишей нажимаем по файлу MyService.asmx и выбираем «View in Browser».

http://silverlightru.net/

Здесь показывается стандратная страница WebService со всеми доступными методами, в нашем случае Hello World. Кликнув, на него мы увидим описание запросов, которые будут отправлены и обработаны. Нажав, на кнопку «Invoke» мы увидим реальные данные, возвращаемые нашим методом.

http://silverlightru.net/

http://silverlightru.net/

Все это конечно хорошо скажете вы, а где собственно SilverLight. Не торопитесь, это была вводная часть, чтобы люди, кто не имел дело с WebService, могли ознакомиться и пощупать, что вообще это такое.

Чтобы добавить ссылку на наш WebService, теперь уже необходимо у проекта SilverLight кликнуть по корневому каталогу в нашем случае SimpleService, и выбрать пункт меню «Add Service Reference …». После чего в открывшемся окне нажать «Descover», т.к. наш WebService локальный то нам он будет указан, в списке доступных, выбираем его и даем ему имя «MyService». И нажимаем «ок», все ссылка на наш сервис добавлена и мы можем его использовать в нашем проекте. В случае если вы внесли изменения в ваш сервис, ссылку необходимо обновить. Для этого в папке «Service Reference» Находим нашу ссылку, нажимаем по ней правой клавишей и выбираем «Update»

http://silverlightru.net/

Приступим к написанию нашего собственно метода. И так задача у нас очень простая, получаем два числа от пользователя, складываем, отдаем результат обратно.

Код C#:

[WebMethod]
    //Получаем строки, чтобы не заботиться об это в SilverLight
    public int Summa(string firstNumber, string secondNumber)
    {
        int number1;
        int number2;

        //Пытаемся с конвертить в int
        int.TryParse(firstNumber, out number1);
        int.TryParse(secondNumber, out number2);

        return (number1 + number2);
    }

Методы WebService должны быть помечены специальным атрибутом WebMethod, который позволяет специальным образом вызывать наш метод из вне. Ну а потом все просто думаю, здесь вопросов не должно возникнуть, если кому, то захочется может добавить свои дополнительные проверки. И так метод наш создан.
Вернемся к нашему SilverLight приложению, у кнопки создадим обработчик события Click.

private void Call_Click(object sender, RoutedEventArgs e)
{
	//Создаем SOAPClient который будем использовать для вызова методов
	MyService.MyServiceSoapClient WS = new SimpleService.MyService.MyServiceSoapClient();
	//Создаем обработчик события, который вернет результаты работы нашего WebService
	WS.SummaCompleted += new EventHandler(WS_SummaCompleted);
	//Вызываем наш метод и передаем параметры
	WS.SummaAsync(FirstNumber.Text, SecondNumber.Text);
	}

	void WS_SummaCompleted(object sender, SimpleService.MyService.SummaCompletedEventArgs e)
	{
	//Присваем нашему TextBlock результаты работы методы
	OutPutText.Text = e.Result.ToString();
}

http://silverlightru.net/

Проверяем, как видите метод возвращает нам, сумму введеных нами чисел.
Вот так вот не сложно можно создать приложение, которое будет использовать методы удаленного WebService. И может возвращать нам, например отчеты по продажам, или последние новости. А мы в красивой форме можем оформить это все в SilverLight.

В следующей своей статье, я покажу более реальный и более интересный пример работы с WebService.

Popularity: 65%

Похожие статьи по SilverLight:

  1. Работа с видео (Часть 1)
  2. Работа с видео (Часть 2)
  3. Microsoft SilverLight 2 beta 2
  4. Пример использования Web Service и Data Binding в Silver Light
  5. Silverlight 4: работа c веб-камерой