Служба WCF с поддержкой Silverlight против веб-службы против службы данных ADO.NET

Хорошо, все эти способы получения данных в элементе управления Silverlight меня смущают.

Я посмотрел на службы данных ADO.Net, веб-службы и службы WCF с поддержкой Silverlight. Я просто не уверен, когда одно уместно использовать поверх другого. Какие плюсы / минусы есть у каждого предложения?

Я создал веб-приложение и элемент управления Silverlight. Я добавлю один из этих трех вариантов в мое веб-приложение и использую его из компонента Silverlight.

12.12.2008 00:08:28
3 ОТВЕТА
РЕШЕНИЕ

С точки зрения серебряного света, WCF в любом случае сильно ограничен, поэтому большинство обычных преимуществ WCF не применяются. Тем не менее, это все еще довольно хорошая, последовательная модель программирования.

WCF - это прежде всего стек SOAP, поэтому он очень хорошо представляет данные как жесткие операции. ADO.NET Data Services - это стек REST, позволяющий динамически выполнять очень выразительные запросы по проводам.

Я не знаю, как это в Silverlight, но обычный прокси-сервер ADO.NET Data Services (бит в вашем клиентском приложении) имеет очень богатую поддержку как запросов, так и изменений данных обратно на сервер. Обратите внимание, что для внесения изменений требуется либо: Entity Framework, либо b: много работы. Но вы должны получить запрос и обновить очень дешево с этим подходом.

С WCF вы получаете намного более контролируемый стек, поэтому вам нужно будет кодировать все отдельные операции, которые вы хотите выполнять. Но это также означает, что у вас есть известная поверхность атаки и т.д .; гораздо сложнее использовать заблокированный API, например, фиксированную конечную точку SOAP.

Обычные веб-сервисы (до WCF): идите по этому пути, только если вы хотите поддерживать очень специфических унаследованных абонентов.

9
12.12.2008 05:25:10
Итак, что касается полезной нагрузки, является ли она еще более тяжелой (с точки зрения пропускной способности или обработки)?
Jeremy 12.12.2008 17:45:26
REST (т.е. ADO.NET Data Services) проще и, как правило, более легкий. Но это зависит от конкретного сценария.
Marc Gravell♦ 12.12.2008 21:08:32
Для информации, я в настоящее время веду блог о реализации пользовательской (не Entity-Framework) службы ADO.NET Data Services; на всякий случай это полезно: marcgravell.blogspot.com
Marc Gravell♦ 12.12.2008 21:09:15

Если вам нужно выбрать между веб-службой и службой WCF, я советую пойти с WCF. Это более современная и мощная технология. Что касается ADO.Net Data Services - вы можете использовать это, если все, что вам нужно, это извлечь / зафиксировать некоторые данные из / в базу данных обратно на сервер.

4
12.12.2008 06:32:33
Службы данных ADO.NET также позволяют фиксировать изменения - это касается не только запросов.
Marc Gravell♦ 12.12.2008 05:25:38

Я знаю, что это старый, но я просто хотел добавить свои 2 цента.

Я очень рекомендую использовать WCF; и использовать проект библиотеки служб WCF через веб-службу с поддержкой Silverlight. Оба они по сути одинаковы, но веб-служба с поддержкой Silverlight изменяет привязку на базовую вместо ws *. Также добавлен атрибут режима совместимости asp.net.


  • WCF обычно быстрее: см. «Сравнение производительности Windows Communication Foundation (WCF) с существующими технологиями распределенной связи» @ http://msdn.microsoft.com/en-us/library/bb310550.aspx

  • WCF инкапсулирует asmx, wse, msmq, корпоративные сервисы и удаленное взаимодействие.

  • Службы WCF можно включать и запускать в iis, окнах и т. Д.

  • WCF не ограничивается использованием HTTP, но с минимальной конфигурацией может также использовать tcp, именованные каналы и т. Д.

  • сложные типы данных легче раскрыть и сериализовать.

  • WCF просто отлично масштабируется. Кроме того, они могут быть использованы для включения рабочих процессов из WF.


Вероятно, там не та технология, которую нужно использовать, но похоже, что Microsoft собирается двигаться вперед с WCF. Кроме того, гораздо проще написать одну кодовую базу, которая может быть представлена ​​многими разными способами, всего лишь с несколькими изменениями конфигурации службы WCF.

Я рекомендую не использовать веб-сервис с поддержкой Silverlight, просто потому что структура программирования настроена немного лучше с моделью WCF, но это, вероятно, вопрос мнения.

6
19.08.2009 17:50:35
-1: Скотт, я понижаю голос, потому что: 1) я не вижу, что этот ответ добавляет много к тому, что уже было, и 2) вы получаете его задом наперед, используя службу WCF с поддержкой Silverlight. Поскольку он использует Silverlight, ему не нужно использовать wsHttpBinding!
John Saunders 19.08.2009 22:06:58
Нет проблем. Я думал, что мой ответ добавил авторитет о том, где можно найти фактическую статистику по эффективности WCF, поскольку ни один из других комментариев не сделал. Служба wcf с поддержкой SL и служба wcf - это одно и то же. Единственное отличие состоит в том, что при создании службы с поддержкой SL она автоматически изменяет привязку на basichttpbinding и добавляет строку режима совместимости ASP. И то, и другое можно сделать в сервисе wcf. К сожалению, wcf-сервис с поддержкой silverlight не настраивается на использование интерфейса в качестве контракта, который я называю лучшей структурой программирования.
user82646 20.08.2009 16:47:36