Este artigo foi compartilhado pela Huawei Cloud Community " Java Chassis 3 Technology Decryption: Contract First (API First) Development ", autor: liubao68.
O desenvolvimento do contrato primeiro (API First) refere-se a tornar o design da API a tarefa de primeira prioridade no processo de desenvolvimento de aplicativos. O desenvolvimento do contrato continuou a receber atenção com o desenvolvimento do conceito de serviços Web. Especialmente após o surgimento da arquitetura de microsserviços, o design da API tornou-se um fator-chave que afeta questões como abertura de funções e otimização de desempenho. As estruturas e padrões comuns de desenvolvimento que priorizam o contrato incluem o seguinte:
- A tecnologia de serviços Web permite que os designers primeiro escrevam WSDL para descrever o conteúdo do serviço WEB e depois combinem-no com ferramentas para gerar código. O WSDL pode ser distribuído e diferentes linguagens podem ser combinadas com o WSDL para gerar clientes.
- Com a tecnologia gRPC, os designers podem primeiro escrever IDL para descrever o conteúdo do serviço RPC e depois combiná-lo com ferramentas para gerar código. O gRPC resolve principalmente chamadas entre serviços.
- Spring Boot permite que os desenvolvedores usem a ferramenta swagger para primeiro escrever a interface Open API e, em seguida, gerar o código do servidor RESTFul por meio da ferramenta.
Todas essas tecnologias exigem que os designers dominem uma linguagem de descrição independente de linguagem (WSDL, IDL, Swagger, etc.) e gerem código específico da linguagem por meio de ferramentas. Os cenários de aplicativos que eles suportam também são diferentes. O serviço Web é adequado para serviços WEB externos e o gRPC é adequado para serviços RPC internos. O desenvolvimento do contrato do Java Chassis apresenta as seguintes melhorias:
- Permite que a linguagem Java seja usada diretamente para definir interfaces de serviço, sem exigir que os designers dominem uma nova linguagem de descrição.
- Defina a interface do serviço Web e a interface RPC interna ao mesmo tempo.
Como o Spring Boot, a linguagem de descrição independente de linguagem do Java Chassis ainda é uma API aberta. Por meio da API aberta, ela pode atender aos requisitos de distribuição de serviços e linguagens cruzadas.
Processo de Desenvolvimento de Prioridade de Contrato
O desenvolvimento por contrato pode cobrir todo o processo de desenvolvimento de software, como design, desenvolvimento, teste, implantação, operação e manutenção. Por meio de contratos, o trabalho paralelo em diferentes links pode ser alcançado, melhorando assim a eficiência do desenvolvimento. Um processo simples de desenvolvimento de contrato é o seguinte:
O código a seguir demonstra brevemente o processo de definição de um contrato por meio da semântica Java e da implementação de provedores e consumidores.
- Definir contrato de serviço
@RequestMapping(caminho = "/provedor") interface pública ProviderService { @GetMapping("/digaOlá") String sayHello(@RequestParam("nome") String nome); }
- Definir provedor
@RestSchema(schemaId = "ProviderController", esquemaInterface = ProviderService.class) classe pública ProviderController implementa ProviderService { @Sobrepor public String dizerOlá(String nome) { return "Olá" + nome; } }
- Definir consumidores
@Configuração classe pública ProviderServiceConfiguration { @Feijão public ProviderService provedorService() { return Invoker.createProxy("provider", "ProviderController", ProviderService.class); } }
Use RPC para acessar o provedor.
@RestSchema(schemaId = "ConsumerController", esquemaInterface = ConsumerService.class) classe pública ConsumerController implementa ConsumerService { Provedor privadoProvedor de serviçosServiço; @Autowired public void setProviderService(ProviderService ProviderService) { this.providerService = provedorService; } @Sobrepor public String dizerOlá(String nome) { retornar provedorService.sayHello(nome); } }
- Distribuição de serviços e acesso a serviços da web
A definição de serviço do provedor gerará as seguintes informações da Open API
fogo aberto: 3.0.1 informações: título: definição de swagger para org.apache.servicecomb.samples.api.ProviderService versão: 1.0.0 servidores: - url: /provedor caminhos: /diga olá: pegar: operaçãoId: digaOlá parâmetros: - nome nome em: consulta obrigatório: verdadeiro esquema: tipo: string respostas: "200": descrição: resposta de 200 contente: aplicativo/json: esquema: tipo: string aplicação/protobuf: esquema: tipo: string texto/simples: esquema: tipo: string componentes: {}
Estas informações podem ser utilizadas para acesso ao serviço WEB. Por exemplo, as informações acima podem ser utilizadas.
GET /providers/sayHello?name=Mundo
Solicitação HTTP para acessar. Para outras estruturas ou linguagens, você também pode usar Open API para gerar o código correspondente para acesso.
Governança de serviço
A governança de serviços foi projetada para ser independente do processo de desenvolvimento. Combinando a API aberta e a linguagem de descrição de regras de governança de serviços, é possível configurar a governança de serviços para APIs.
pente de serviço: grupo de correspondência: oláOperação: | partidas: - apiPath: prefixo: "/provedor/digaOlá" limite de taxa: ## O limitador atual permite 100 solicitações a cada 10 milissegundos. Se uma solicitação não for recebida por mais de 1000 milissegundos, ## A permissão será negada oláOperação: | taxa: 100 limiteRefreshPeriod: 10 tempo limiteDuração: 1000
As regras acima limitam o fluxo de interfaces API.
Outros aspectos do desenvolvimento que prioriza o pacto
Em termos de testes, o código de teste automatizado pode ser gerado por meio de contratos para cobrir testes de API. Em termos de implantação e implementação, as informações da Open API podem ser importadas para o gateway para realizar a exposição, autenticação e contabilidade da capacidade da API. Além disso, os contratos também podem ser utilizados em diversos aspectos, como geração de documentos e estatísticas de monitoramento de aplicações.
Resumir
Java Chassis é baseado na definição de interface da linguagem JAVA, que pode satisfazer a distribuição SDK tanto da linguagem nativa quanto da linguagem de descrição independente de plataforma, e não requer o uso de ferramentas para gerar código de execução adicional, fornecendo uma abordagem unificada e consistente para desenvolvimento de serviços externos e experiência de desenvolvimento de serviços internos. O desenvolvimento com base em contrato é um método de processo muito eficiente para orientado a serviços/orientado a microsserviços. O Java Chassis fornece um bom suporte de ferramenta para dar suporte ao desenvolvimento com base em contrato.
Clique para seguir e conhecer as novas tecnologias da Huawei Cloud o mais rápido possível~
Estudantes do ensino médio criam sua própria linguagem de programação de código aberto como uma cerimônia de maioridade - comentários contundentes de internautas: Contando com a defesa, a Apple lançou o chip M4 RustDesk Os serviços domésticos foram suspensos devido a fraude desenfreada. No futuro, ele planeja produzir um jogo independente na plataforma Windows Taobao (taobao.com) Reiniciar o trabalho de otimização da versão web, destino dos programadores, Visual Studio Code 1.89 lança Java 17, a versão Java LTS mais comumente usada, Windows 10 tem um participação de mercado de 70%, o Windows 11 continua diminuindo Open Source Daily | Google apoia Hongmeng para assumir o controle do Rabbit R1 de código aberto; a ansiedade e as ambições da Microsoft encerraram a plataforma aberta;