2009-08-07 5 views
4

Недавно я обсуждал лучший способ обработки связи по цепочке в n-уровневой архитектуре.Как следует осуществлять связь между уровнями n-уровня между слоями?

В настоящее время методы, которые я делаю, это бросать и обрабатывать исключения между уровнями для ошибок и использовать события/делегаты для другой связи (для обновления индикаторов выполнения и т. Д.). Являются ли они лучшим способом или есть другой метод, который я упустил из виду, который будет считаться лучшей практикой?

+1

Уточните, что вы подразумеваете под n-уровневым. По моему определению, исключения не могут пройти вверх или вниз по уровням, так как они (потенциально) запускаются на разных компьютерах, и вам нужна некоторая форма сетевого уровня для работы с таким сообщением. В этом случае я ожидал бы таких ответов, как RPC для этого, очереди сообщений для этого и UDP для таких-то. И т.п. – jmucchiello

ответ

1

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

На мой взгляд, делегаты наиболее полезны, когда один объект, которому принадлежит другой объект, должен настроить этот объект. Это может иметь смысл, если ваши уровни логически «владеют» объектами на более низких уровнях, иначе я бы, вероятно, уклонился от шаблона делегата и использовал события.

1

Я бы сказал, что вы на правильном пути, поскольку обработка исключений - это реализация схемы цепочки ответственности. Всегда хорошо бросать исключение в цепочку. Что касается другого (события/делегаты), я не совсем понял ваше заявление, поэтому не мог прокомментировать это.

1

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

В дополнение к составным объектам существуют объекты контроллера, которые могут извлекать данные из логических объектов и создавать новые объекты (т. Е. Список строк).