Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Servicios web ASP.NET basados en SOAP (ASMX)
Al modernizar un servicio web de ASP.NET (ASMX) antiguo para convertirlo en una API REST AWS, es posible que los consumidores dependientes no puedan, y muy probablemente no deban hacerlo debido a los riesgos asociados, actualizarse al mismo tiempo. La siguiente ilustración muestra un servicio web de ASMX que tiene tres consumidores dependientes.
Como estos consumidores llaman al servicio ASMX mediante el protocolo SOAP, si sustituyen el servicio ASMX por una API REST, estos consumidores se quedarían sin servicio. Además, la refactorización del servicio ASMX a una API REST al convertir el sistema de una arquitectura monolítica a microservicios probablemente implique remodelar el comportamiento del sistema y el modelo de dominio. Es probable que esto genere cambios importantes adicionales para los consumidores.
Para mantener la compatibilidad con las versiones anteriores del servicio anterior y poder modernizar el sistema de forma gradual, puede implementar el enfoque que se sigue utilizando como guía. Con este enfoque, los riesgos asociados a la modernización de un importante sistema heredado se gestionan, en parte, sustituyendo gradualmente el sistema antiguo por uno nuevo.
Ramificar mediante abstracción es otro enfoque introducido por Martin Fowler y constituye una técnica eficaz para implementar el patrón del higo estrangulador. Al igual que ocurre con el método del higo estrangulador, la ramificación mediante abstracción ayuda a los ingenieros a realizar cambios graduales y graduales en los sistemas cuando es necesario sustituir o modernizar partes importantes de la funcionalidad. En este enfoque, se introduce una capa de abstracción entre el código que implementa una funcionalidad específica y el código que consume esa funcionalidad (es decir, el código del cliente). Esta capa de abstracción no tiene por qué ser de un tipo abstracto que puedan heredar clases concretas. En cambio, puede ser cualquier implementación que capture el contrato funcional entre el consumidor y el proveedor.
En el caso de los antiguos servicios web de ASP.NET basados en SOAP, se puede permitir la migración gradual de los consumidores de servicios de los antiguos a los nuevos manteniendo la compatibilidad, mediante un enfoque inspirado en la técnica de ramificación por abstracción. Sin embargo, el enfoque de los servicios web de ASP.NET basados en SOAP utiliza la delegación en lugar de la herencia. La compatibilidad con los consumidores de ASMX se logra mediante la refactorización del servicio ASMX anterior para delegar su implementación en la nueva API REST. La siguiente ilustración muestra el servicio ASMX heredado que delega su implementación a la nueva API REST. Esta delegación permite al consumidor de servicios 3 actualizar a la nueva API REST, mientras que los consumidores de servicios 1 y 2 se actualizan de forma independiente.
La naturaleza de la refactorización del servicio ASMX depende de los requisitos funcionales y no funcionales (multifuncionales) de ese servicio. En algunos casos, la refactorización puede implicar la traducción de los mecanismos de autenticación y autorización antiguos a los nuevos, la transformación de la carga útil ASMX del servicio de XML a JSON y, a continuación, la invocación de la API REST con la carga útil transformada. En escenarios más complejos, es posible que el servicio ASMX refactorizado tenga que organizar las llamadas a varios REST y mantener el estado. APIs
El proceso de migración de los consumidores de servicios del servicio ASMX heredado a la API REST modernizada continúa de forma gradual hasta que todos los consumidores de servicios se hayan actualizado para hacer referencia a la nueva API. La siguiente ilustración muestra un estado totalmente modernizado, en el que todos los consumidores de servicios consultan la API REST y el servicio ASMX se retira porque ya no es necesario.
Arquitectura de ejemplo
La arquitectura de estado final del servicio ASMX basado en SOAP muestra que todos los consumidores de servicios utilizan la API REST modernizada, lo que provoca el desmantelamiento del servicio web de ASMX anterior. Sin embargo, este patrón no se centra en la arquitectura de estado final, sino en la arquitectura de estado provisional necesaria durante la migración, mientras los consumidores se actualizan. Este estado provisional se ilustra en el siguiente diagrama. En esta arquitectura provisional, los consumidores de servicios 1 y 2 siguen utilizando el servicio ASMX heredado, que se ha rediseñado para delegar su implementación en la API REST modernizada. El servicio de Windows refactorizado se implementa como un contenedor de Windows en Amazon ECS, se configura en tres zonas de disponibilidad para una alta disponibilidad y se accede a él a través de un Application Load Balancer. Se ha actualizado Service Consumer 3 para usar la nueva API REST directamente a través de API Gateway.