На каком уровне должны быть мои DataContracts?

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

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

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

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


person Diskdrive    schedule 08.03.2011    source источник


Ответы (1)


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

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

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

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

person Johann Blais    schedule 08.03.2011