Вашему Silverlight приложению требуется доступ к данным? Тогда веб сервисы! Сегодня я расскажу о создании Silverlight-совместимого сервиса. Все действия будем выполнять в VS 2008.
Итак, приступим. File - > ASP.NET Web Service Application -> вводим имя проекта и открываем файл кода сервиса (что-то вроде Service1.asmx.cs):
using System;
using System.Data;
using System.Linq;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Xml.Linq;
namespace WebServices {
/// <summary>
/// Summary description for Test
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo =
WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 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 Test : System.Web.Services.WebService {
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
}
}
Заменяем пространство имен в [WebService(Namespace = http://tempuri.org/)] на свое, например так [WebService(Namespace = http://porubov.com)]. Расскоментируем строчку [System.Web.Script.Services.ScriptService] чтобы можно было вызывать сервис из нашего SL-приложения. Запускаем и радуемся - наша служба уже работает!

Теперь можно перейти к написанию кода.
Обычное возвращение строки уже представлено в функции HelloWorld, как видите, ничего сложного. Теперь опишем метод с входными параметрами:
[WebMethod(Description="Возвращает
форматированную строку в заданном количестве")]
public string FormatString(string mess, int count) {
mess += " - форматированная!";
for (int i = 0; i < count; i++) {
mess += " строка " + i.ToString() + "\n";
}
return mess;
}


Тоже очень просто. Вообще обьявление службы отличается от обычного метода только строчкой [WebMethod] и ограничениями на входные и возвращаемые типы данных. Итак, вот что может принимать и возвращать веб служба:
- Простые типы данных - строки, целые, числа с плавающей точкой, булевые значения, смешанные типы (например, тип даты-времени, байтовый и т.п.)
- Массивы
- Объекты - передаются все общедоступные свойства какого-либо объекта
- Перечисления - типы в C#, определяемые ключевым словом enum
- XmlNode - представляют собой часть Xml документа
- DataSet, DataTable - применяются в основном для возврата данных из БД для последующей привязки к элементам отображения данных в .NET. Не подходит для использования в SL.
Безусловно, в классе веб службы вы можете написать намного более сложный код, который, к примеру, будет получать и записывать данные в удаленную базу данных; Никаких ограничений на обычные методы (не обьявленые как веб методы) нет. Так что вперед!