¿Te refieres literalmente a distancia? ¿Como en correr en un ambiente diferente con diferentes características de disponibilidad? Con los gastos generales de red?
Asumiendo que "sí" mi primer paso sería adoptar un enfoque de servicio, deje de lado la tecnología de invocación por un momento. Solo considere el diseño y el significado de sus servicios. Usted sabe que son relativamente costosas de invocar, por lo tanto, las pequeñas interfaces ocupadas tienden a ser algo malo. Usted sabe que el sistema de servicio puede fallar entre invocaciones, por lo que puede favorecer los servicios apátridas. Es posible que deba volver a intentar las solicitudes después de la falla, por lo que puede favorecer los diseños de servicio idempotentes.
Luego, considere las relaciones de disponibilidad. ¿Puede su cliente trabajar sin el sistema remoto? En algunos casos, simplemente no puede avanzar si el sistema remoto no está disponible (por ejemplo, no puede habilitar al empleado si no puede acceder al sistema de recursos humanos) en otros casos, puede adoptar un "fuego-y-contar" -me-later "filosofía; poner en cola las solicitudes y procesar las respuestas más tarde.
Donde hay una dependencia de la disponibilidad, simplemente parece que exponer una interfaz sincrónica. Puede hacerlo con EJB de SLSB, si todo es Java EE, eso funciona. Tiendo a generalizar esperando que si mis servicios son útiles, los clientes que no sean Java EE también los quieran. Entonces SOAP (o REST) tiende a ser útil. En la actualidad, agregar una interfaz de servicio web a su SLSB es bastante trivial.
Pero mi teoría favorita es que cualquier sistema de TI suficientemente grande termina necesitando comunicaciones aynch: necesita desacoplar las restricciones de disponibilidad.Así que tendería a buscar una relación de estilo JMS. Una fachada de MDB frente a sus servicios, o SOAP/JMS no es demasiado difícil de hacer. Tal enfoque tiende a resaltar los problemas de diseño de caso de falla que probablemente estaban al acecho de todos modos, JMS tiende a hacerte pensar: "¿Supongo que no recibo una respuesta? Supongamos que mi respuesta llega tarde".
Usamos esto en un sistema con HTTP de cliente a servidor (requerido por razones de seguridad), y usando tanto JMS como EJB para servicio a llamadas de servicio. – Robin