Доменный управляемый дизайн: доменный сервис, прикладная служба

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

set.seed(1)

df1 <- data.frame(id = sample(LETTERS,50,replace=T), val = rnorm(50), val1 = rnorm(50), stringsAsFactors = F)
df2 <- data.frame(id = sample(LETTERS,30,replace=T), val = rnorm(30), val2 = rnorm(30), stringsAsFactors = F)


duplicates = names(df1) == names(df2) & names(df1) !="id"

df2 = df2[,!duplicates]
df12 = base::merge.data.frame(df1, df2, by = "id")
head(df12)
243
задан Harshdeep 19 October 2014 в 12:10
поделиться

2 ответа

Службы бывают трех видов: Службы домена , Службы приложений и Службы инфраструктуры ].

  • Доменные службы : инкапсулируют бизнес-логику , которая, естественно, не вписывается в объект домена и НЕ типичный CRUD операции - они будут принадлежать репозиторию .
  • Службы приложений : используются внешними потребителями для связи с вашей системой (например, Веб-службы ). Если потребителям нужен доступ к операциям CRUD, они будут представлены здесь.
  • Инфраструктурные службы : используются для абстракции технических проблем (например, MSMQ, поставщик электронной почты и т. Д.).

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

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

Надеюсь, это поможет!

325
ответ дан 23 November 2019 в 03:10
поделиться

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

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

примером этого мог быть следующий сценарий thinked только для объяснения цели: мы должны реализовать очень небольшое народное служебное приложение, которое выполняет простую операцию, которая является, "включают световые сигналы, когда кто-то открывает дверь комнаты дома, чтобы войти в и выключить свет когда завершения дверь, выходящая из комнаты".

Упрощение много мы рассматриваем только 2 доменных объекта: Door и Lamp , у каждого из них есть 2 состояния, соответственно open/closed и on/off, и определенные методы для работы изменениями состояния на них.

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

Мы можем назвать наш доменный сервис как [1 132] DomoticDomainService и реализовать 2 метода: OpenTheDoorAndTurnOnTheLight и CloseTheDoorAndTurnOffTheLight , эти 2 метода соответственно изменяют состояние обоих объектов Door и Lamp к [1 135] open/on и closed/off .

состояние входит или выходит из комнаты, оно не присутствует в доменном объекте службы и любом в объектах области, но будет реализовано как простое взаимодействие с пользователем прикладной службой, которую мы можем назвать HouseService , который реализует некоторые обработчики событий как [1 138] onOpenRoom1DoorToEnter и onCloseRoom1DoorToExit , и так далее для каждой комнаты (это - только пример для объяснения цели..) , который будет соответственно касаться о сервисных методах домена вызова для выполнения посещенного поведения (мы не рассмотрели объект Room, потому что это - только пример) .

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

0
ответ дан 23 November 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: