Взаимодействие между уровнями WCF, DAO и DTO в приложении ASP.NET - PullRequest
1 голос
/ 25 февраля 2011

Может кто-нибудь подсказать мне, как слои WCF, DAO и DTO общаются друг с другом?Я был бы признателен, если бы кто-то мог указать, какой слой появляется первым, а затем, как он взаимодействует со следующим слоем и т. Д.

1 Ответ

4 голосов
/ 25 февраля 2011

Похоже, вы понятия не имеете, что означают эти термины. Прежде всего, это не «слой».

  • WCF - Windows Communication Foundation - технология MS для создания сервис-ориентированных приложений
  • DAO - объект доступа к данным - объект, представляющий операции для взаимодействия с базой данных (загрузка объекта, сохранения объекта и т. Д.), Но скрывающий внутреннюю информацию о базе данных.
  • DTO - Объект передачи данных - специальный тип объекта, используемый для переноса данных с одного уровня / уровня на другой уровень / уровень.

Таким образом, пример использования этих терминов в реальной архитектуре может быть:

Уровень данных (сервер БД)

  • Запуск базы данных

Бизнес-уровень (сервер приложений)

  • Уровень доступа к данным, использующий DAO для доступа к БД и скрытия деталей БД от более высокого уровня.
  • Бизнес-уровень, использующий уровень доступа к данным для доступа и сохранения данных. Запуск всей доменной логики, рабочих процессов, бизнес-правил и т. Д.
  • В WCF реализован сервисный уровень, позволяющий разобраться в бизнес-операциях бизнес-уровня Сервисный уровень предоставляет веб-сервисы, которые используют DTO для передачи данных. Доменные / бизнес-объекты преобразуются в DTO и из них.

Уровень представления (веб-сервер)

  • Уровень представления - приложение ASP.NET, использующее уровень обслуживания для связи с бизнес-уровнем. Уровень обслуживания и уровень представления обмениваются только DTO.

Эта архитектура только для больших проектов. Обычно вам не нужно разделять уровни представления и бизнес-уровня, поэтому вам не нужен уровень сервиса WCF. В таком случае ваш уровень представления может получить доступ к бизнес-уровню напрямую, без использования DTO.

Edit:

На основании ваших комментариев я добавляю эту информацию.

  • Session в NHibernate можно назвать DAO, поскольку он предоставляет операции для взаимодействия с БД, но также скрывает детали БД.
  • При использовании NHibernate у вас есть набор классов, которые можно сохранить в БД на основе определенного отображения. NHibernate хранит и загружает эти объекты. Вы можете добавить некоторую логику (методы) к этим классам и назвать их Домен / Бизнес-объекты.
  • DTO - это особый тип объекта, который не имеет никакой логики. Это ящик для данных. Обычно он предназначен для передачи только тех данных, которые действительно необходимы для операции (например, вы не будете передавать целые объекты клиентов, если вам нужны только имена и электронные письма). DTO также должен быть спроектирован для передачи данных из нескольких бизнес-объектов, чтобы уменьшить количество обращений между клиентом и службой.
...