Какой слой должен иметь мои DataContracts? - PullRequest
1 голос
/ 08 марта 2011

Должны ли они быть в клиентском приложении wcf?

Или я должен поместить их на бизнес-уровень или уровень данных?

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

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

1 Ответ

2 голосов
/ 08 марта 2011

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

Более того, если важна бизнес-логика, вы можете переместить контракты данных (DC) в отдельную сборку и разделить ее между клиентами и службами. Это дает вам несколько преимуществ:

  • Нет необходимости создавать прокси-класс на клиентах для DC
  • Вы можете легко поделиться внутренней логикой постоянного тока

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

...