Разница между хранилищем и сервисом? - PullRequest
75 голосов
/ 17 сентября 2009

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

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

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

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

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

Спасибо

Ответы [ 3 ]

109 голосов
/ 17 сентября 2009

В хранилище хранятся данные. Служба - это то, что манипулирует данными.

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

65 голосов
/ 17 сентября 2009

Репозиторий, по сути, является фасадом для persistence , который использует семантику стиля Collection (Add, Update, Remove) для предоставления доступа к данным / объектам. Это способ отделить способ хранения данных / объектов от остальной части приложения.

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

12 голосов
/ 17 сентября 2009

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

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