Sobre o desenvolvimento do contrato primeiro (API First) do Java Chassis 3

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;
{{o.nome}}
{{m.nome}}

Acho que você gosta

Origin my.oschina.net/u/4526289/blog/11105461
Recomendado
Clasificación