Главная » Silverlight » Типы данных веб-служб

0

При создании веб-службы для Silverlight можно использовать лишь ограниченный набор типов данных .NET, например строки, булевы значения, байты, числовые типы, перечисления, объекты DateTime. Кроме того, можно использовать массивы и коллек­ции любых поддерживаемых типов, а также пользовательские классы, созданные на основе всех указанных выше типов.

Для создания пользовательского класса, работающего с веб-службой, нужно удовлет­ворить ряд требований.

•       Объявление класса должно содержать атрибут DataContract.

•       Класс должен состоять из открытых свойств, доступных для записи. В каждом свойстве должны использоваться только упомянутые выше сериализуемые типы и другие пользовательские классы.

•       Каждое свойство должно иметь атрибут DataMember, указывающий на возмож­ность сериализовать его.

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

• Класс может содержать код, но он не должен быть доступен для клиента. Клиент получает доступ к сокращенной версии класса без кода.

Ниже приведен пример пользовательского класса, удовлетворяющего всем этим условиям.

[DataContract]

public class Customer {

private string firstName;’ private string lastName;

[DataMember]

public string FirstName

(

get { return firstName; } set { firstName = value; }

}

[DataMember]

public string LastName {

get { return lastName; }

set { lastName = value; }

}

}

Теперь можно создать метод веб-службы, в которой используется этот класс.

[AspNetCompatibilityReguirements(ReguirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

public class TestService {

[OperationContract]

public Customer GetCustomer(int customerlD)

{

Customer newCustomer = new Customer(); // Здесь конфигурируется объект Customer return newCustomer;

}

}

Пользовательский класс можно применить в методе в качестве параметра или воз­вращаемого значения (как в приведенном выше примере). При добавлении ссылки на службу в проект Silverlight программа Visual Studio генерирует аналогичное определе­ние класса Customer в приложении Silverlight вместе с классом прокси. Приложение мо­жет взаимодействовать с объектами Customer, переданными сервером, или создавать объекты Customer и передавать их на сервер.

private void GetCustomerCompleted(object sender, GetCustomerCompletedEventArgs e)

{

try

{

Customer newCustomer = e.Result;

// Здесь можно вставить вывод информации класса

// Customer в пользовательский интерфейс

}

catch (Exception err) 1

lblTime.Text = "Ошибка при обращении к службе";

}

}

Далее в книге приведен более подробный пример веб-службы, в которой применяют­ся пользовательские классы. В главе 16 вы создадите веб-службу, применяющую поль­зовательские классы и коллекции для извлечения информации, хранящейся в базах данных. В главе 17 приведен пример на основе совместно используемых типов, позво­ляющих веб-службе и клиентскому приложению Silverlight обращаться к коду пользова­тельского класса. Это создает возможность разрабатывать пользовательские процедуры проверки вводимых данных и другие средства клиентских приложений.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии