Количество звонков с Фасада в Фасадном паттерне - PullRequest
1 голос
/ 15 августа 2011

Мы проводим «дискуссию» о том, что следует размещать в слое фасада и сколько вызовов должен выполнять слой фасада к нижележащим слоям.

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

Наш фасадный уровень имеет проверку безопасности, ведение журнала и обработку ошибок.

Теперь вопрос: должен ли фасад иметь только один вызовуровень оркестровки или это нормально с несколькими вызовами.Если это только один вызов, эти слои должны быть объединены в один слой.

Это службы WCF, написанные на C #.

Ответы [ 3 ]

4 голосов
/ 15 августа 2011

Количество вызовов внутри фасада не должно иметь значения, если вызов выполняет одну-единственную операцию (в глазах звонящего) и делает это полностью.

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

1 голос
/ 16 августа 2011

Если это только один вызов, эти слои должны быть объединены в один слой.

Слои фасадов и оркестровки слабо связаны? Если так, то мой ответ будет «нет», не сливайтесь. С точки зрения принципов, я думаю, что в слабой связи есть ценность, и ее следует сохранить.

Если фасад имеет только один вызов для уровня оркестровки или это нормально для нескольких вызовов.

В тот момент, когда он делает более одного звонка - какая разница между тем, что он делает, и тем, что делает слой оркестровки. Подумайте об их причине жизни.

Однако я бы позволил провести различие между чисто «деловыми» вызовами и «сквозными» вызовами. Установив соглашение о том, что только один «деловой» вызов может быть «пропущен» через Фасад, вы сохраняете чистую структуру для бизнес-сервисов (никогда не бывает путаницы); но, с другой стороны, технически вы не обязаны делать другие сквозные вызовы, которые улучшают поведение и возможности системы.

1 голос
/ 15 августа 2011

Я поддерживаю ответ Джастина, к которому добавляю только одно соображение. Если ваш уровень оркестровки также обрабатывает бизнес-уровень и если ваш фасад в конечном итоге представляет собой карту 1-к-1 с задачами оркестровки, то вы можете рассмотреть возможность использования оркестрации в качестве фасада. Но в этом случае вы не будете спрашивать, поэтому либо ваш фасад упрощает протокол использования оркестровки, либо уровень оркестровки и бизнес-уровня являются равноправными. В любом случае вам нужен фасад, отличный от модуля оркестровки

...