2009-09-17 3 views
45

В чем разница между репозиторием и сервисом? Кажется, я не понимаю.Разница между хранилищем и сервисом?

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

Очень часто я вижу репозитории с простыми методами CRUD и услугами с более специфичными для бизнеса методами.

В качестве примера можно привести сообщение this. Если вы посмотрите на интерфейсы внизу (изображения), у него есть два репозитория и две службы. Как узнать, что положить туда?

Как я уже говорил, хранилища, похоже, больше подходят для операций с CRUD-подобными операциями и услугами, ориентированных на бизнес.

Благодаря

+0

Можете ли вы уточнить? В каком контексте? Как и большинство слов, контекст, используемый этими словами, помогает определить смысл. – David

+2

Примечание: Я не говорю о веб-сервисах или что-то в этом роде. Я говорю о доступе к данным через слой данных. – alexn

ответ

45

репозитория по существу фасад для настойчивости, который использует семантику стиля коллекции (Добавить, Обновить, Удалить) для обеспечения доступа к данным/объектам. Это способ развязки способа хранения данных/объектов из остальной части приложения.

Служба обеспечения поставок или другие «услуги», необходимые для работы вашего приложения. Они отличаются друг от друга тем, что Сервисы обычно не знают, как обращаться к данным с сохранением, а в репозиториях обычно доступ к данным/объектам для любых служб, которые у вас могут быть.

+5

Я бы сказал, что репозиторий - это тип службы, который используется для доступа к данным. –

+1

Это прекрасное определение в том смысле, что почти все, что мы пишем, это «сервис» на каком-то уровне, но он теряет основное намерение, что репозиторий должен быть * коллекцией * объектов. – jlembke

+2

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

9

Я бы сказал, как первой попытки, в общем смысле (пока вы не дать больше контекста, если у вас есть):

  • хранилище где вы размещаете некоторые глобальные объекты , который будет использоваться позже.
  • сервис это код бизнеса-логика, сделал явный (и в идеале, отделенный от уровня представления и баз данных слоя?)
70

Репозиторий хранит данные. Служба - это то, что манипулирует данными.

В сравнении с ситуацией в реальном мире, если ваши деньги хранятся в хранилище в банке, хранилище является хранилищем. Кассир, который откладывает, снимает и т. Д., Является услугой.

+2

Спасибо за этот ответ! Простой и лаконичный. – alexn

+0

согласен с вышеуказанным комментарием! Любите объяснение реального мира! – Kleigh

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