Este artículo es compartido por Huawei Cloud Community " Descifrado de tecnología Java Chassis 3: desarrollo de contrato primero (primero API) ", autor: liubao68.
El desarrollo por contrato (API First) se refiere a hacer del diseño de API la tarea de primera prioridad en el proceso de desarrollo de aplicaciones. El desarrollo basado en contratos ha seguido recibiendo atención con el desarrollo del concepto de servicios web, especialmente después del surgimiento de la arquitectura de microservicios, el diseño de API se ha convertido en un factor clave que afecta cuestiones como la apertura de funciones y la optimización del rendimiento. Los marcos y patrones comunes de desarrollo de contratos primero incluyen los siguientes:
- La tecnología de servicios web permite a los diseñadores escribir primero WSDL para describir el contenido del servicio WEB y luego combinarlo con herramientas para generar código. WSDL se puede distribuir y se pueden combinar diferentes idiomas con WSDL para generar clientes.
- Con la tecnología gRPC, los diseñadores pueden escribir primero IDL para describir el contenido del servicio RPC y luego combinarlo con herramientas para generar código. gRPC resuelve principalmente llamadas entre servicios.
- Spring Boot permite a los desarrolladores usar la herramienta swagger para escribir primero la interfaz Open API y luego generar el código del servidor RESTFul a través de la herramienta.
Todas estas tecnologías requieren que los diseñadores dominen un lenguaje de descripción independiente del idioma (WSDL, IDL, Swagger, etc.) y generen código específico del idioma a través de herramientas. Los escenarios de aplicación que admiten también son diferentes. El servicio web es adecuado para servicios WEB externos y gRPC es adecuado para servicios RPC internos. El desarrollo por contrato de Java Chassis presenta las siguientes mejoras:
- Permite utilizar el lenguaje Java directamente para definir interfaces de servicio, sin necesidad de que los diseñadores dominen un nuevo lenguaje de descripción.
- Defina la interfaz del servicio web y la interfaz RPC interna al mismo tiempo.
Al igual que Spring Boot, el lenguaje de descripción independiente del idioma de Java Chassis sigue siendo Open API. A través de Open API, puede cumplir con los requisitos de distribución de servicios y entre idiomas.
Proceso de desarrollo de prioridad de contrato
El desarrollo por contrato puede cubrir todo el proceso de desarrollo de software, como diseño, desarrollo, prueba, implementación, operación y mantenimiento. A través de contratos, se puede lograr el trabajo paralelo en diferentes enlaces, mejorando así la eficiencia del desarrollo. Un proceso simple de desarrollo de contrato es el siguiente:
El siguiente código demuestra brevemente el proceso de definición de un contrato a través de la semántica de Java y la implementación de proveedores y consumidores.
- Definir contrato de servicio
@RequestMapping(ruta = "/proveedor") interfaz pública ProviderService { @GetMapping("/decirHola") String decirHola(@RequestParam("nombre") Nombre de cadena); }
- Definir proveedor
@RestSchema(schemaId = "ProviderController", esquemaInterface = ProviderService.class) la clase pública ProviderController implementa ProviderService { @Anular Cadena pública decir Hola (nombre de cadena) { devolver "Hola " + nombre; } }
- Definir consumidores
@Configuración configuración de servicio de proveedor de clase pública { @Frijol servicio de proveedor público servicio de proveedor () { return Invoker.createProxy("proveedor", "ProviderController", ProviderService.class); } }
Utilice RPC para acceder al proveedor.
@RestSchema(schemaId = "ConsumerController", esquemaInterface = ConsumerService.class) clase pública ConsumerController implementa ConsumerService { proveedor de servicios de proveedor privado; @autocableado setProviderService público vacío (ProviderService proveedorService) { this.providerService = proveedorService; } @Anular Cadena pública decir Hola (nombre de cadena) { devolver proveedorService.sayHello(nombre); } }
- Distribución de servicios y acceso a servicios web.
La definición de servicio del proveedor generará la siguiente información de Open API
fuego abierto: 3.0.1 información: título: definición de arrogancia para org.apache.servicecomb.samples.api.ProviderService versión: 1.0.0 servidores: - URL: /proveedor caminos: /di hola: conseguir: ID de operación: decir hola parámetros: - nombre nombre en: consulta requerido: verdadero esquema: tipo: cadena respuestas: "200": descripción: respuesta de 200 contenido: aplicación/json: esquema: tipo: cadena aplicación/protobuf: esquema: tipo: cadena Texto sin formato: esquema: tipo: cadena componentes: {}
Esta información se puede utilizar para el acceso al servicio WEB. Por ejemplo, se puede utilizar la información anterior.
OBTENER /providers/sayHello?name=Mundo
Solicitud HTTP para acceder. Para otros marcos o lenguajes, también puede utilizar Open API para generar el código correspondiente para el acceso.
Gobernanza de servicios
La gobernanza del servicio está diseñada para ser independiente del proceso de desarrollo. Al combinar la API abierta y el lenguaje de descripción de reglas de gobernanza del servicio, es posible configurar la gobernanza del servicio para las API.
peine de servicio: grupo de partidos: holaOperación: | partidos: - ruta de API: prefijo: "/proveedor/decirHola" limitación de velocidad: ## El limitador actual permite 100 solicitudes cada 10 milisegundos. Si no se recibe una solicitud durante más de 1000 milisegundos, ## Se denegará el permiso holaOperación: | tarifa: 100 límiteRefreshPeriod: 10 tiempo de esperaDuración: 1000
Las reglas anteriores limitan el flujo de interfaces API.
Otros aspectos del desarrollo centrado en el pacto
En términos de pruebas, se puede generar código de prueba automatizado a través de contratos para cubrir las pruebas de API. En términos de implementación e implementación, la información de Open API se puede importar a la puerta de enlace para realizar la exposición, autenticación y contabilidad de la capacidad de API. Además, los contratos también se pueden utilizar en diversos aspectos, como la generación de documentos y las estadísticas de seguimiento de aplicaciones.
Resumir
Java Chassis se basa en la definición de interfaz del lenguaje JAVA, que puede satisfacer la distribución SDK tanto del lenguaje nativo como del lenguaje de descripción independiente de la plataforma, y no requiere el uso de herramientas para generar código de ejecución adicional, lo que proporciona un enfoque unificado y consistente. para el desarrollo de servicios externos y la experiencia de desarrollo de servicios internos. El desarrollo primero por contrato es un método de proceso muy eficiente para los orientados a servicios/microservicios. Java Chassis proporciona un buen soporte de herramientas para respaldar el desarrollo primero por contrato.
Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud lo antes posible ~
Los estudiantes de secundaria crean su propio lenguaje de programación de código abierto como una ceremonia de mayoría de edad: comentarios agudos de los internautas: confiando en la defensa, Apple lanzó el chip M4 RustDesk Los servicios nacionales fueron suspendidos debido al fraude desenfrenado Yunfeng renunció a Alibaba. En el futuro, planea producir un juego independiente en la plataforma Windows Taobao (taobao.com). Reiniciar el trabajo de optimización de la versión web, destino de los programadores, Visual Studio Code 1.89 lanza Java 17, la versión Java LTS más utilizada, Windows 10 tiene un cuota de mercado del 70%, Windows 11 continúa disminuyendo Open Source Daily | Google apoya a Hongmeng para que se haga cargo; Rabbit R1 de código abierto respalda los teléfonos Android; Haier Electric ha cerrado la plataforma abierta;