À propos du développement contractuel (API First) de Java Chassis 3

Cet article est partagé par la communauté Huawei Cloud « Décryptage de la technologie Java Chassis 3 : développement de contrat d'abord (API d'abord) , auteur : liubao68.

Le développement contractuel (API First) consiste à faire de la conception d'API la première tâche prioritaire dans le processus de développement d'applications. Le développement axé sur le contrat a continué de retenir l'attention avec le développement du concept de services Web, en particulier après l'émergence de l'architecture des microservices, la conception des API est devenue un facteur clé affectant des questions telles que l'ouverture de fonctions et l'optimisation des performances. Les cadres et modèles courants de développement axés sur le contrat sont les suivants :

  • La technologie des services Web permet aux concepteurs d'écrire d'abord du WSDL pour décrire le contenu du service WEB, puis de le combiner avec des outils pour générer du code. WSDL peut être distribué et différents langages peuvent être combinés avec WSDL pour générer des clients.
  • Avec la technologie gRPC, les concepteurs peuvent d'abord écrire des IDL pour décrire le contenu du service RPC, puis le combiner avec des outils pour générer du code. gRPC résout principalement les appels entre services.
  • Spring Boot permet aux développeurs d'utiliser l'outil swagger pour écrire d'abord l'interface Open API, puis de générer le code du serveur RESTFul via l'outil.

Ces technologies nécessitent toutes que les concepteurs maîtrisent un langage de description indépendant du langage (WSDL, IDL, Swagger, etc.) et génèrent du code spécifique au langage via des outils. Les scénarios d'application qu'ils prennent en charge sont également différents. Web Service convient aux services WEB externes et gRPC convient aux services RPC internes. Le développement contractuel de Java Chassis présente les améliorations suivantes :

  • Permet d'utiliser directement le langage Java pour définir les interfaces de services, sans obliger les concepteurs à maîtriser un nouveau langage de description.
  • Définissez simultanément l'interface du service Web et l'interface RPC interne.

Comme Spring Boot, le langage de description indépendant du langage de Java Chassis est toujours Open API. Grâce à Open API, il peut répondre aux exigences de distribution multilingue et de services.

Processus de développement des priorités contractuelles

Le développement sous contrat peut couvrir l'ensemble du processus de développement logiciel tel que la conception, le développement, les tests, le déploiement, l'exploitation et la maintenance. Grâce à des contrats, un travail parallèle dans différents liens peut être réalisé, améliorant ainsi l'efficacité du développement. Un processus simple d’élaboration de contrat est le suivant :

Le code suivant montre brièvement le processus de définition d'un contrat via la sémantique Java et d'implémentation des fournisseurs et des consommateurs.

  • Définir le contrat de service
@RequestMapping(chemin = "/provider")
Interface publique ProviderService {
  @GetMapping("/sayBonjour")
  String sayHello (@RequestParam("name") Nom de la chaîne);
}
  • Définir le fournisseur
@RestSchema(schemaId = "ProviderController", schemaInterface = ProviderService.class)
classe publique ProviderController implémente ProviderService {
  @Passer outre
  chaîne publique sayHello (nom de la chaîne) {
    renvoie "Bonjour" + nom ;
  }
}
  • Définir les consommateurs
@Configuration
classe publique ProviderServiceConfiguration {
  @Haricot
  public ProviderService fournisseurService() {
    return Invoker.createProxy("provider", "ProviderController", ProviderService.class);
  }
}

Utilisez RPC pour accéder au fournisseur.

@RestSchema(schemaId = "ConsumerController", schemaInterface = ConsumerService.class)
classe publique ConsumerController implémente ConsumerService {
  Fournisseur de services privéFournisseur de services ;

  @Autowired
  public void setProviderService (ProviderService fournisseurService) {
    this.providerService = fournisseurService;
  }

  @Passer outre
  chaîne publique sayHello (nom de la chaîne) {
    return supplierService.sayHello(nom);
  }
}
  • Distribution des services et accès aux services Web

La définition de service du fournisseur générera les informations Open API suivantes

feu ouvert : 3.0.1
Info:
  titre : définition swagger pour org.apache.servicecomb.samples.api.ProviderService
  version : 1.0.0
les serveurs:
- URL : /fournisseur
chemins :
  /dis bonjour:
    obtenir:
      ID opération : ditesBonjour
      paramètres:
      - nom nom
        dans : requête
        obligatoire : vrai
        schéma:
          tapez : chaîne
      réponses :
        "200":
          description : réponse de 200
          contenu:
            application/json :
              schéma:
                tapez : chaîne
            application/protobuf :
              schéma:
                tapez : chaîne
            texte simple:
              schéma:
                tapez : chaîne
Composants: {}

Ces informations peuvent être utilisées pour l'accès au service WEB. Par exemple, les informations ci-dessus peuvent être utilisées.

GET /providers/sayHello?name=Monde

Requête HTTP d'accès. Pour d'autres frameworks ou langages, vous pouvez également utiliser Open API pour générer le code d'accès correspondant.

Gouvernance des services

La gouvernance des services est conçue pour être indépendante du processus de développement. En combinant l'API ouverte et le langage de description des règles de gouvernance des services, il est possible de configurer la gouvernance des services pour les API.

peigne de service :
  groupe de correspondance :
    bonjourOpération : |
      allumettes:
        - apiPath :
            préfixe : "/provider/sayHello"
  tauxLimitant :
    ## Le limiteur actuel autorise 100 requêtes toutes les 10 millisecondes. Si une requête n'est pas reçue pendant plus de 1000 millisecondes,
    ## L'autorisation sera refusée
    bonjourOpération : |
      tarif : 100
      limitRefreshPeriod : 10
      timeoutDurée : 1000

Les règles ci-dessus limitent le flux des interfaces API.

Autres aspects du développement axé sur l’alliance

En termes de tests, du code de test automatisé peut être généré via des contrats pour couvrir les tests d'API. En termes de déploiement et de mise en œuvre, les informations de l'Open API peuvent être importées dans la passerelle pour réaliser l'exposition, l'authentification et la comptabilité des fonctionnalités de l'API. De plus, les contrats peuvent également être utilisés dans divers aspects tels que la génération de documents et les statistiques de suivi des applications.

Résumer

Le châssis Java est basé sur la définition d'interface du langage JAVA, qui peut satisfaire la distribution du SDK du langage natif et du langage de description indépendant de la plate-forme, et ne nécessite pas l'utilisation d'outils pour générer du code d'exécution supplémentaire, offrant une approche unifiée et cohérente. pour le développement de services externes et l’expérience en développement de services internes. Le développement axé sur le contrat est une méthode de processus très efficace pour les systèmes orientés services/microservices. Le châssis Java fournit un bon support d'outils pour prendre en charge le développement axé sur le contrat.

 

Cliquez pour suivre et découvrir les nouvelles technologies de Huawei Cloud dès que possible~

Les lycéens créent leur propre langage de programmation open source en guise de cérémonie de passage à l'âge adulte - commentaires acerbes des internautes : S'appuyant sur la défense, Apple a publié la puce M4 RustDesk. Les services nationaux ont été suspendus en raison d'une fraude généralisée. À l'avenir, il envisage de produire un jeu indépendant sur la plateforme Windows Taobao (taobao.com) Redémarrer le travail d'optimisation de la version Web, destination des programmeurs, Visual Studio Code 1.89 publie Java 17, la version Java LTS la plus couramment utilisée, Windows 10 a un part de marché de 70 %, Windows 11 continue de décliner Open Source Daily | Google soutient Hongmeng pour prendre le relais ; l'anxiété et les ambitions de Microsoft ont fermé la plate-forme ouverte ;
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/u/4526289/blog/11105461
conseillé
Classement