2014-01-17 5 views
0

Простой вопрос, несколько возможностей:Что должно вернуть службу WCF, когда клиент запрашивает список?

  • ICollection<T>
  • IEnumerable<T>
  • List<T>
  • IList<T>
  • Array

Каковы преимущества и недостатки по сравнению друг с другом? Существуют ли проблемы с производительностью/безопасностью?

+0

Список будет возвращен как массив в любом случае –

+1

@Taumantis: это верно для JSON, но не для SOAP. –

+0

@John Saunders хорошо знать –

ответ

-2

Тип широкого вопроса, но это действительно зависит от того, как вы потребляете объект на стороне клиента. Если вы просто сбрасываете это в массив JSON, Array будет работать нормально, но если вам нужны дополнительные методы, которые имеют другие реализации, выполните сериализацию тех конкретных объектов, которые вам нужны.

+1

-1: с SOAP не имеет значения, вернется ли сервис. Клиент решает, как его получить. Служба просто возвращает XML, который соответствует XSD «последовательность». Клиент решит, что это значит. Спросите себя: что сделал бы клиент Java с возвращаемым значением из службы? –

+0

@JohnSaunders WCF может возвращать JSON, завернутый в ответ SOAP. – ohmusama

+1

@ohmusama: Я знаю об этом - я только что проработал над набором таких сервисов. Даже в случае с JSON это не имеет значения. У меня есть службы, возвращающие 'IEnumerable ' и другие возвращающие 'List ' и они делают идеальные массивы JSON. –

5

Это действительно не имеет значения, что служба возвращает, поскольку она будет сериализована в любом случае. Но если вы разделяете интерфейсы между сервером и клиентом, то IEnumerable<T> типичен, так как он охватывает все другие предложения. Если у вас есть конечный набор, вы также можете использовать IList<T>, но я бы избегал Array.

+0

Забавно, что я часто вижу Array в спецификациях WCF/SOAP. Да, я предположил, что IEnumerable - это «правильный» способ. – Acrotygma

Смежные вопросы