Стратегии реализации WCF Data Services - PullRequest
7 голосов
/ 24 марта 2010

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

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

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

(XML) Служба WCF -> (BO) Бизнес-логика -> (BO) Dao -> Entity Framework

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

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 31 марта 2010

Вот моя попытка изложить все, что я нашел по этому вопросу.

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

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

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

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

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

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

Случаи использования службы данных на стороне сервера:

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

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

Ресурсы

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

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

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

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

3 голосов
/ 24 марта 2010

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

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

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

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

0 голосов
/ 15 мая 2013

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

0 голосов
/ 30 марта 2010

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

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

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

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

...