Вчера я написал про рекомендации по использованию коллекций в .Net. Сегодня я хочу описать особенности работы со списками (list collections) в WCF. Для словарей (dictionary collections) есть свои нюансы, поэтому про них в следующий раз.
Итак, коллекция передаваемая в WCF через границы сервиса, перед отправкой будет сериализована в XML формат, и затем, на другой стороне десериализована. Это означает, что типы используемые клиентом являются независимыми от типов используемых сервисом.
Кроме того, коллекции с одинаковым типом элементов сериализуются в XML одинакового формата. Т.е. при десериализации абсолютно все равно в какой конкретно тип коллекции разворачивать полученный XML. Не имеет значения возвращает метод сервиса int[] или List<int>, на клиенте по умолчанию будет
В Visual Studio клиентские прокси-классы для WCF создаются утилитой svcutil.exe. Ее конфигурация позволяет изменять дефолтный тип для коллекций. Список доступных типов приведен на скриншоте.
Такая взаимозаменяемость коллекций может быть полезна. Например, можно использовать оптимизированный по производительности List<T> на сервере, а на клиенте ObservableCollection<T>, который удобно привязывать к пользовательским элементам управления.
Ссылки:
No comments:
Post a Comment