Контракт сообщений и данных WCF, DTO, модель предметной области и общие сборки

У меня есть веб-клиент, который вызывает мой уровень бизнес-службы WCF, который, в свою очередь, вызывает внешние службы WCF для получения фактических данных. Первоначально я думал, что буду использовать DTO и иметь отдельные бизнес-объекты на разных уровнях... но я обнаружил, что тривиальные примеры, пропагандирующие DTO, ну, ну, тривиальные. Я вижу слишком много повторяющегося кода и мало пользы.

Рассмотрим мой домен:

Пример домена У меня есть один экран пользовательского интерфейса (Asp.net MVC View ), который показывает список лекарств пациента, побочные реакции (между лекарствами )и любые клинические состояния (, такие как депрессия или гипертония ). ] пациент может иметь. Моя доменная модель начинается на верхнем уровне с:

   MedicationRecord
      List MedicationProfiles
      List Reactions
      List ClinicalConditions

   MedicationProfile is itself a complex object
      string Name
      decimal Dosage
      Practitioner prescriber 

   Practioner is itself a complex object
      string FirstName
      string LastName
      PractionerType PractionerType
      PractionerId Id
      Address Address    

      etc.

Кроме того, при выполнении запросов WCF у нас есть объект запроса/ответа, например.

   MedicationRecordResponse
      MedicationRecord MedicationRecord
      List Messages
      QueryStatus Status

   and again, these other objects are complex objects
   (and further, complicates matter is that they exist in a different, common shared namespace)

На данный момент я склоняюсь к тому, что MedicationRecordResponse является моим DTO. Но в чистых DataContracts и DTO и разделении дизайна,я должен это сделать?

   MedicationRecordResponseDto
      MedicationRecordDto
      List 
      QueryStatusDto

   and that would mean I then need to do
      MedicationProfileDto
      PractitionerDto
      PractitionerTypeDto
      AddressDto
   etc.

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

Мой вопрос: --что бы вы сделали? Не могли бы вы пойти дальше и создать все эти DTO? Или вы просто поделитесь своей моделью предметной области в отдельной сборке?

Вот кое-что из других вопросов, которые кажутся актуальными:

  1. Контракт WCF знает домен
  2. Альтернативы уровню трансляции в SOA :WCF
  3. Вопрос SOA :Разоблачение сущностей

5
задан Community 23 May 2017 в 11:48
поделиться