Где стоят сервисы WCF и ADO.Net Data? - PullRequest
5 голосов
/ 08 сентября 2008

Я немного запутался в ADO.Net Data Services.

Это просто предназначено для создания веб-сервисов RESTful? Я знаю, что WCF появился в мире SOAP, но теперь я слышал, что он хорошо поддерживает REST. То же самое относится и к службам данных ADO.Net, где вы можете заставить их работать в модели RPC, если вы не можете смотреть на все с точки зрения ресурсов.

По крайней мере из демонстраций, которые я видел недавно, похоже, что ADO.Net Data Services построен на стеке WCF на сервере. Пожалуйста, поправьте меня, если я ошибаюсь.

Я не собираюсь начинать дебаты REST vs SOAP, но, полагаю, все уже не так ясно.

Любые предложения или рекомендации о том, что и где использовать?

Ответы [ 3 ]

2 голосов
/ 08 сентября 2008

На мой взгляд, службы данных ADO.Net предназначены для создания спокойных служб, тесно связанных с вашей моделью предметной области, то есть сами модели публикуются, а не говорят о какой-либо форме DTO и т. Д.

Использование его для сервисов в стиле RPC кажется плохим решением, хотя, к сожалению, даже некоторые базовые функции, такие как возможность выполнения отфильтрованных подсчетов и т. Д., Недоступны, что часто означает, что вы в конечном итоге будете использовать какой-то RPC только для удовлетворения требования ваших клиентов, т.е. вы можете отображать постраничную сетку и т. д.

WCF 3.5 pre-SP1 была довольно слабой платформой RESTful, с пакетом обновления 1 (SP1) улучшилось как в шаблонах Uri, так и благодаря доступности поддержки ATOMPub, так что она стала более функциональной, но на самом деле они не предоставляют какого-либо элегантного решения для поддержка, скажем, JSON, XML, ATOM или даже чего-то более эзотерического, такого как полезная нагрузка, например CSV, за исключением необходимости использовать перезапись URL-адресов и другое расширение, изменение имен методов и т. д., а не просто выбор сериализатора / десериализатора на основе заголовков запрос.

С WCF по-прежнему сложно создавать сервисы, которые работают в более естественном состоянии отдыха, то есть там, где ресурсы включают в себя URL-адреса, и вы можете переходить из одного состояния в другое, перемещаясь по ним - это немного неуклюже - службы данных ADO.Net делают это довольно хорошо с поддержкой AtomPub.

Моя рекомендация будет заключаться в том, чтобы использовать веб-службы, если они естественным образом являются службами, и для них применяются строгие границы служб, а также использовать службы данных ADO.Net для богатых клиентов в веб-стиле (веб-сайты, ajax, silverlight), где сочетаемость URL-запросов может сэкономить много сантехники, а модель вашего домена довольно проста ... и развернуть свой собственный слой REST (возможно, с использованием инфраструктуры MVC в качестве отправной точки), если вам нужен полный контроль над информацией, например, если вы публикуете API для другие разработчики для использования на социальной платформе и т. д.

Мой 2ø стоит!

1 голос
/ 17 сентября 2008

Использование привязки покоя WCF очень полезно при работе с кодом, который вообще не взаимодействует с базой данных. Глаголы HTTP не всегда должны идти против поставщика данных.

0 голосов
/ 24 сентября 2008

На самом деле, есть опции для фильтрации и пропуска, чтобы получить подобную функцию среди других.

Смотрите здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...