Стратегии внедрения WCF Data Services

Microsoft проделала хитроумную работу, не обозначив фактическое место для служб данных в чудесном мире SOA / Web-разработки.

Итак, мой вопрос: предназначены ли службы данных WCF для использования через внешних клиентов? Кто-нибудь когда-нибудь слышал о том, чтобы кто-то использовал их на стороне сервера (т. Е. Доступ к базе данных для веб-службы)?

Простой сценарий общей многоуровневой архитектуры с использованием бизнес-объектов BO (скобки указывают, что передается между уровнями)

(XML) WCF Service -> (BO) Business Logic -> (BO) Dao -> Entity Framework

или с использованием служб данных это будет место, где DS BO являются смоделированными бизнес-объектами, которые будут использоваться в службе данных.

(XML) Служба WCF -> (BO) Бизнес-логика -> (BO) Служба данных WCF -> (DS BO) Сервер

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

Думаю, любой справочный документ, который бы помог, был бы полезен.

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


person Nix    schedule 24.03.2010    source источник
comment
EF имеет низкую производительность, поэтому это плохое решение для высокопроизводительных сервисов.   -  person garik    schedule 24.03.2010
comment
EF будет использоваться в обоих сценариях, и производительность будет приемлемой для нашей пропускной способности.   -  person Nix    schedule 24.03.2010


Ответы (4)


Не делайте второго.

Интерфейс WCF Data Services основан на Atom Pub, основанном на REST, предназначенном для работы с клиентами.

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

Службы данных WCF предназначены для предоставления данных удаленному клиенту, а не как слой в архитектуре.

person Darrel Miller    schedule 24.03.2010
comment
Можете ли вы подробно рассказать об ограничении транзакции с двухэтапной фиксацией? Вы просто говорите о программном управлении двухфазной фиксацией или о внутренних проблемах? - person Nix; 24.03.2010
comment
Если вы выполните поиск здесь, в разделе «Транзакции REST», вы увидите множество обсуждений этого вопроса. Мой ответ по этому поводу здесь stackoverflow.com/questions/2346964/ - person Darrel Miller; 24.03.2010

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

Назначение служб данных - предоставить доступ к определенному типу ресурса через веб-URI. Доступ / изменение всех данных осуществляется стандартными HTTP-командами (GET, POST, PUT, DELETE).

Стандартный ответ для DS (полностью настраиваемый) - JSON / Atom.

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

Службы данных поддерживают добавление дополнительной бизнес-логики (через служебные операции / перехватчики), но обычно используются в случаях, когда бизнес-логика ограничена.

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

Я не нашел каких-либо ресурсов (блогов или статей), предлагающих использовать их в качестве уровня dao в серверных приложениях.

Случаи использования Data Service на стороне сервера:

1) Легче версии сервисов данных. Я могу выпускать различные версии модели сущностей, не затрагивая всех, кто ее использует (можно было бы возразить, что вы могли бы сделать то же самое, приложив немного больше усилий, просто используя модель сущностей ADO.NET)

2) Хотите иметь доступ к данным на более низком уровне. Вы разрешаете черный доступ к своей базе данных. На высоком уровне вы представляете бизнес-службу и службу доступа к данным через черный ход. Возможен случай, когда другой домен имеет только подмножество общих данных в своей модели данных и ему необходимо фильтровать что-то, что есть в вашей модели. Служба передачи данных позволит вам общаться через VIA универсально через uris.

Ресурсы

Информационный документ об использовании служб данных Microsoft ADO.NET

Обзор служб данных ADO.NET

Упрощение нашей многоуровневой платформы разработки: превращение трех вещей в одну вещь

Службы данных для Интернета

person Nix    schedule 31.03.2010

Настроить уровень доступа к данным на сервисах данных - самоубийство. Службы данных WCF предназначены для удаленных клиентов. Вот и все.

person Amit Kr    schedule 15.05.2013

Итак, мой вопрос прост: предназначены ли службы данных WCF для использования через клиентов? Или кто-нибудь когда-нибудь слышал о том, чтобы кто-то использовал их на стороне сервера?

Имейте в виду, что термин «клиент» имеет широкое значение и может включать в себя серверные системы, поэтому в этом смысле краткий ответ будет положительным. Я не слышал, чтобы кто-нибудь использовал их на стороне сервера, но почему бы и нет; RSS используется для объединения данных между системами, WCF Data Services - еще один способ сделать это.

Может быть, вы смотрите на это с технологической точки зрения, когда на самом деле вам нужно мыслить более целостным образом? WCF Data Services - это просто инструмент - используйте их там, где это необходимо.

Если посмотреть на некоторые из общих обзорных документов, похоже, WCF Data Services имеет довольно широкий спектр возможных приложений.

person Adrian K    schedule 29.03.2010
comment
Пожалуйста, внимательно относитесь к своим ответам (проверка орфографии), а также прочтите вопрос. Это ничего не отвечает. В своем вопросе я сказал, что не вижу применения в последнем, если только не будет много случаев, когда люди будут получать доступ к вашим данным через ваш уровень службы данных, если по какой-то причине вы открываете два интерфейса: бизнес-сервис И Служба данных, я мог видеть необходимость / использование этой архитектуры, но помимо этого, зачем кому-то проходить через все хлопоты, связанные с использованием служб данных для доступа к базе данных? Зачем вытаскивать гвоздь, когда забиваешь один гвоздь? - person Nix; 30.03.2010
comment
В этом случае не говорите, что ваш вопрос простой; Я поделился с вами своими мыслями об этом (первой части) конкретно - вы имеете полное право проголосовать против, если это не то, что вам нужно. Я признаю, что я нашел ваш второй вопрос / пример немного сложным для полного понимания - но тогда не всегда легко пытаться передать такие вещи только с помощью письменного текста. Прошу прощения за плохое правописание, но, честно говоря, я видел и похуже; Я предполагаю, что когда люди задают здесь вопросы, они в первую очередь ищут информацию, а не идеальное использование английского языка. - person Adrian K; 31.03.2010
comment
Я попытался перефразировать вопрос, чтобы было понятнее, что я ищу. Основная причина голосования "против" заключалась в том, что он не отвечает на мой вопрос, это, по-видимому, общий ответ. Я скажу, что прочитал ссылку, которую вы отправили, и она точно показывает, почему я запутался, MS действительно продает эту вещь как облако ... она может все ....; ( - person Nix; 31.03.2010