Add to Technorati Favorites

Работа с WebService в SilverLight 2 beta 2

Опубликовано 24 Июнь | Автор LOB
Ключевые слова:,

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: 73% [?]

Add to zakladki:
12 комментария | Примеры | Вся статья

12 Комментария к статье “Работа с WebService в SilverLight 2 beta 2”

  1. Спасибо за то что ты делаешь ерально интересно читать

  2. Очень хочется увидеть пример использования WCF сервисов.

  3. Zip n' Drag Says:

    Блин вот отлично описал! Не то что некоторые… Всё доступно и понятно!

  4. [quote]Чтобы добавить ссылку на наш WebService, теперь уже необходимо у проекта SilverLight кликнуть по корневому каталогу в нашем случае SimpleService, и выбрать пункт меню «Add Service Reference …». После чего в открывшемся окне нажать «Descover», т.к. наш WebService локальный то нам он будет указан, в списке доступных, выбираем его и даем ему имя «MyService». И нажимаем «ок», все ссылка на наш сервис добавлена и мы можем его использовать в нашем проекте.[/quote]
    Почему єто может не работать? на вебпроекте находит сервис как локальный сервис, на сильверлайтовском только как внешний сервис, который нельзя добавить(порт у меня фиксиный). Зарание спасибо

  5. 2 Yorik - я не совсем понял, почему у тебя не дает добавить можно по подробней. У тебя вообще отображается в списке доступных твой Веб сервис, который создал или нет. Для того, чтобы отобразились все доступные локальные веб сервисы, тебе надо нажать кнопку “Descover”. И потому уже выбираешь свой.
    Если конечно ты не поднимаешь его на отдельный машине, в таком случае надо указать конкретный адрес удаленной машины, с указание твоего сервиса, например CheckService.asmx.

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

    2 All - Спасибо будем стараться писать полезные и интересные статьи

  6. [...] Работа с WebService в SilverLight 2 beta 2 [...]

  7. В жизни дело идет о жизни, а не о каком-то результате ее.(С)Иоганн Вольфганг Гете

  8. было бы неплохо увидеть пример с применением ASP.NET MVC

  9. Пример использования Web Service и Data Binding в Silverlight - Территория блога Says:

    [...] кто не знает, что это такое и как их создавать прочтите мою статью.Назовем его «UsersCatalog». Внутри создадим класс [...]

  10. Работа с WebService в SilverLight 2 beta 2 - Территория блога Says:

    [...] http://silverlightru.net/rabota-s-webservice-v-silverlight-2-beta-2 Published окт 28 2008, 09:18 by admin | [Edit Post] Помечено как: Блог, [...]

  11. Работа с WebService в SilverLight 2 beta 2 - Территория блога Says:

    [...] http://silverlightru.net/rabota-s-webservice-v-silverlight-2-beta-2 Published окт 14 2008, 01:33 by admin | [Edit Post] Помечено как: Блог, [...]

  12. Где я раньше искал?… Сам додумывался целый день, а тут понятно все, подробно. Спасибо за статью.
    P.S. очень много ошибок, орфографических и пунктуационных :( Мешает читать

Leave a Reply

Ваш Комментарий * [b][/b] - [i][/i] - [u][/u]- [quote][/quote]