Могут ли службы на уровне обслуживания взаимодействовать друг с другом?

#architecture #c#-4.0

#архитектура #c #-4.0

Вопрос:

У меня есть уровень обслуживания, в котором моему PredictionService необходимо знать, существует ли определенная гонка. У RaceService есть метод DoesRaceExist() , но я не уверен, могут ли службы взаимодействовать.

Это также приводит меня к некоторым другим проблемам. Допустим, у меня есть Predictions.aspx страница. Я реализую с помощью MVP, и поэтому при первом запросе страницы запускается Initialize() метод в presenter. Predictions.aspx требуется множество фрагментов информации, из прогнозов и из гонок, возможно, даже больше. Должен ли я запрашивать все эти части у соответствующих служб или мне следует запросить базу данных только один раз и получить всю необходимую мне информацию за один раз? Тогда проблема заключается в том, какой Сервис выбрать, а затем в том, что сервис, вероятно, делает больше, чем просто передает то, для чего он предназначен.

Каков наилучший способ для этого?

Ответ №1:

Если ServiceA необходимо получить данные или выполнить действие над ServiceB, можно вызвать ServiceB из ServiceA.

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

Комментарии:

1. Правильно. Я внимательно посмотрел на свой презентер прогнозирования и увидел, что я использую 2 других разных вида сервиса {Driver, Race} рядом с моим сервисом прогнозирования. Я подумал о том, что вы сказали, и подумал, что действительно было бы неплохо иметь службу фасада / макроса.