#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} рядом с моим сервисом прогнозирования. Я подумал о том, что вы сказали, и подумал, что действительно было бы неплохо иметь службу фасада / макроса.