2011-04-23 8 views
6

Tengo una capa de servicio, en la cual mi PredictionService necesita saber si existe una cierta raza. El RaceService tiene un método DoesRaceExist(), pero no estoy seguro de si los servicios se pueden comunicar.¿Pueden los servicios en la capa de servicio comunicarse entre sí?

Eso también me lleva a algunos otros problemas. Digamos que tengo una página de Predictions.aspx. Implemento con MVP, por lo que cuando se solicita la página por primera vez, se ejecuta el método Initialize() en el presentador. El Predictions.aspx necesita múltiples piezas de información, de predicciones y de carreras, tal vez incluso más. ¿Debo pedir todas estas piezas de sus servicios apropiados, o debo consultar la base de datos una sola vez y obtener toda la información que necesito de una vez? El problema es, entonces, qué Servicio elegir, y luego que el servicio probablemente haga más que simplemente transmitir para qué está destinado.

¿Cuál es la mejor manera de proceder?

Respuesta

8

Si serviceA necesita obtener datos o ejecutar una acción en serviceB, está bien llamar a serviceB desde serviceA.

Sin embargo, puede encontrarse en una situación donde los servicios se llamen entre sí, si eso ocurre, considere usar un facade que orquesta los diferentes servicios (para que no se llamen entre sí directamente).

+0

Derecha. Eché un vistazo a mi presentador de Predicción y vi que estaba usando otros 2 tipos diferentes de servicio {Driver, Race} al lado de mi servicio de Predicción. Pensé en lo que dijiste y pensé que de hecho sería una buena idea tener un servicio fachada/macro. –

Cuestiones relacionadas