Estoy considerando una arquitectura SOA para un conjunto de servicios para apoyar un negocio que estoy consultando, anteriormente utilizamos la integración de bases de datos donde cada aplicación seleccionaba lo que necesitaba de una base de datos MS SQL compartida y funcionaba con él, etc. Tuvimos varias aplicaciones que se integraban con la base de datos de monstruos, incluidos java, .net y Microsoft Access, existía integridad referencial, ya que todo estaba estrechamente vinculado.SOA Style - Compartir datos
Estoy un poco confundido acerca de cómo admitir el intercambio de datos entre servicios.
Permite tomar el servicio de productos que se encuentra sobre la base de datos de productos proporcionada por el mayorista cada mes. Construimos un modelo de dominio y lo sentamos en la base de datos con Hibernate o lo que sea, el producto de implementación es un gran gráfico de objetos dada la información proporcionada por el mayorista sobre el producto.
Ahora digamos que el servicio de revisión, servicio de precios, servicio de envío y Stock Service se suscribirán a ProductUpdated, ProductAdded, ProductDeleted. El problema es que cada servicio solo necesita una parte o parte de la información sobre el Producto. El envío puede necesitar solo las dimensiones y el peso. Los precios solo pueden necesitar la identificación del producto, el costo mayorista, el descuento por volumen y el precio vigente hasta la fecha. La revisión puede necesitar identificación del producto, nombre del producto, productor. Es una práctica estándar publicar todo el producto (contratos adecuados no específicos del suscriptor, por ejemplo, ProductUpdated, y un esquema adecuado que representa todos los gráficos del objeto del producto) y permite a los suscriptores asignar lo que necesitan a sus modelos de dominio (o diablos hacer lo que quieran con, ni siquiera podría tener un modelo de dominio) ...
O mientras escribo esto estoy pensando que tal vez:
Servicio Producto Publica ProductAdded mensaje (no incluidos los detalles del producto sólo una ID del producto y tal vez una marca de tiempo)
Servicio de precios su bscribes a ProductAdded y publica RequestPricingForProduct mensaje
Servicio Producto publica mensaje ResultForPricingForProduct
Hmm .. parece un poco mejor ... pero se siente como que estoy construyendo el contrato para el servicio del producto en base a qué otros servicios que puedo identificar y lo que van a necesitar, tal vez en el futuro el servicio XYZ requiera algo diferente. Voy a detenerme allí porque creo que se está aclarando dónde estoy confundido ... quizás lo anterior funcionará porque debería exponer una forma de devolver lo que sea que sea público.
Cualquier comentario o dirección muy apreciada. Lo siento si esto parece medio cocido.