Многоуровневая/многоуровневая система соответствует тесно связанной системе?

Я обнаружил, что всякий раз, когда я создаю слой/уровень, мне приходится переводить с одного слоя на другой. Означает ли это, что это тесно связанная система? Если бы мне пришлось изменить бизнес-логику, удалить поле в базе данных и т. д., мне пришлось бы изменить ВСЕ слои со слоя базы данных на клиентский интерфейс?

Например. Веб-служба, которая предоставляет объект «контракт данных» и преобразует его в некоторые «бизнес-объекты» на среднем уровне, а затем преобразует его в соответствующий «объект ORM» на уровне данных. И клиент, вызывающий веб-службу, преобразует контракт данных в некоторые объекты модели и т. д.

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

Спасибо


person Joshscorp    schedule 08.01.2010    source источник


Ответы (1)


Преобразование или отображение ортогональны, хотя и в чем-то связаны со слабой связью.

  • Если вы сопоставляете тип бетона с типом бетона, сопоставление тесно связано.
  • Если вы сопоставляете абстрактный тип с конкретным типом или наоборот, сопоставление слабо связано.

Другими словами, слабая связанность связана с концепцией программирования для интерфейсов, а не с отображением.

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

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

person Mark Seemann    schedule 08.01.2010
comment
Если вы сопоставляете абстрактный тип с конкретным типом или наоборот, сопоставление будет слабо связанным. Я согласен, что с точки зрения интерфейса это слабо связано, но может ли оно быть тесно связано с полями таблицы базы данных? например, если вы удалите столбец в таблице, что тогда произойдет? Вам нужно будет изменить интерфейс и сопоставления, иначе говоря, связь? Многослойность = многократные переводы и распространение на все уровни, обслуживание увеличивается, так что это все еще слабо связано? - person Joshscorp; 08.01.2010
comment
Добавление или удаление данных (будь то в базе данных или в качестве элементов в типах .NET) следует рассматривать как изменение контракта. Это может причинить больше вреда в слабосвязанной системе из-за множества мест, в которых вам нужно реализовать это изменение, но, с другой стороны, вы также можете изолировать себя от изменений на других уровнях. Это зависит от того, почему вы вводите изменение, но это не то, что мы обычно понимаем из концепции слабой связи. - person Mark Seemann; 08.01.2010