Понимание разницы между контрактами на передачу данных и бизнес-объектами - PullRequest
0 голосов
/ 31 августа 2018

Я надеялся, что кто-нибудь сможет помочь мне избежать путаницы вокруг WCF. У меня есть сервис WCF. Первое, что я делаю, это создание контракта на данные. Скажем, мой контракт на данные - это «Клиент». Кажется, я понимаю данные контракты.

Теперь я не хочу использовать договор на передачу сообщений, поэтому я перехожу к созданию контракта на обслуживание ... ICustomerService ... с помощью операции под названием GetCustomer. Но каким должен быть тип возвращаемого значения? Должен ли это быть тип возвращаемого значения DataContracts.Customer? Здесь я запутываюсь в разнице между бизнес-объектами и контрактами на данные. Три вопроса:

  1. Является ли договор на передачу данных субъектом хозяйствования?

  2. Допустим, у меня есть бизнес-объект Customer под названием «CustomerInformation» в проекте BusinessLogic. Что касается проекта ServiceContract, он не имеет никаких знаний о проекте BusinessLogic, что позволяет мне полагать, что было бы неправильной архитектурой добавлять ссылку на проект бизнес-логики, чтобы он мог видеть бизнес-сущность. , Я вижу, что проект ServiceImplementation, однако, имеет ссылку на бизнес-логику.

  3. Если бы у меня была бизнес-сущность CustomerInformation, разве она не выглядела бы точно так же, как мой контракт данных DataContracts.Customer?

1 Ответ

0 голосов
/ 31 августа 2018
  1. Нет, см .: https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-data Ваш контракт на передачу данных представлен интерфейсом, который определяет, как внешний мир может передавать данные вашему сервису. Ваш бизнес-объект - это класс, который содержит данные, которые передаются и обрабатываются внутри вашего уровня BL.
  2. Во многих случаях реализация сервиса содержит BL. Если ваша реализация службы находится на отдельном уровне службы, она, вероятно, все еще делится объектами с вашим уровнем BL. Вы правы в том, что не ссылаетесь на BL из проекта контракта на обслуживание (и вправе иметь отдельный проект для контракта).
  3. Возможно, да, они могут иметь те же атрибуты, но они не обязаны. Ваш бизнес-объект может иметь дополнительные свойства, которые используются только для внутренней обработки.
...