Programmation côté serveur dans Azure Confidential Ledger

Azure Confidential Ledger fournit des fonctionnalités de programmation côté serveur pour exécuter une logique personnalisée à l’intérieur du registre. En utilisant ces fonctionnalités, vous pouvez étendre les fonctionnalités du registre en écrivant du code personnalisé qui s’exécute dans un environnement confidentiel et interagit avec les données du registre.

Vous pouvez créer des fonctions définies par l’utilisateur (UDF) et des points de terminaison définis par l’utilisateur (UDE) pour effectuer différentes opérations avec différents niveaux de personnalisation. Les UDF et les UDE étaient précédemment appelées fonctions définies par utilisateur simple et fonctions définies par utilisateur avancé, respectivement. Après avoir défini des fonctions définies par l’utilisateur et des UDE, vous pouvez les invoquer depuis les clients Azure Confidential Ledger pour qu’elles s’exécutent directement à l’intérieur du moteur de registre.

UDFs et UDEs

Azure Confidential Ledger offre deux fonctionnalités de programmation côté serveur :

  • Fonctions définies par l’utilisateur (UDF) : les fonctions définies par l’utilisateur sont des fonctions personnalisées simples que vous définissez et exécutez dans le grand livre. Ils vous permettent d’effectuer des opérations simples à l’aide du API JavaScript et peuvent être intégrés à l’API d’écriture de registre existante. Pour plus d’informations, consultez Fonctions définies par l’utilisateur dans Azure Confidential Ledger.

  • Points de terminaison définis par l’utilisateur (UDEs) : les UDEs sont des points de terminaison personnalisés que vous définissez et exposez sur une application de registre. Utilisez ces points de terminaison pour exposer des API plus sophistiquées avec des paramètres personnalisables, des formats de données et des mécanismes d’authentification. Pour plus d’informations, consultez Points de terminaison définis par l’utilisateur dans Azure Confidential Ledger.

Voici une comparaison des principales fonctionnalités et capacités des UDF (fonctions définies par l’utilisateur) et des UDE :

Capacité UDFs UDEs
Exécuter une logique métier personnalisée Oui Oui
Personnalisation des arguments/paramètres d’exécution Oui Oui
Exposer de nouvelles API/ points de terminaison Non Oui
Exécuter des fonctions individuelles Oui Non
Exécuter des hooks avant / après une opération d’écriture d’entrée de registre Oui Non
Création et mise à jour du code personnalisé Oui (mise à jour/suppression granulaire de chaque fonction) Oui (mise à jour de bundle d’application unique pour tous les points de terminaison)
Options de runtime JavaScript personnalisées Oui (par chaque exécution) Oui (globalement)
Exécution sur les nœuds de sauvegarde Non Oui
Prise en charge de plusieurs formats de données pour l’entrée et la sortie Non Oui
Authentification et autorisation personnalisées Non Oui
Scénarios cibles Exécution d’une logique personnalisée et d’intégration simples avec l’API de registre Cas d’usage avancés nécessitant des API personnalisées et un contrôle sur les paramètres JavaScript avancés

Basculement entre UDF et UDE

Les fonctions définies par l’utilisateur et les UDE sont des fonctionnalités mutuellement exclusives. Vous ne pouvez pas créer ou exécuter des UDF si des UDE sont définies, et vice versa. Procédez comme suit pour basculer entre les deux fonctionnalités.

Important

Le basculement entre les fonctions définies par l’utilisateur et les UDE est une opération destructrice. Toutes les fonctions définies par l’utilisateur ou les événements définis par l’utilisateur sont supprimés lors du passage à l’autre fonctionnalité. Sauvegardez les données importantes avant de continuer.

Des UDF aux UDE

Pour passer des UDF aux UDE, supprimez toutes les UDF existantes :

  1. Répertoriez toutes les UDF stockées dans le registre à l’aide de l’API GET /app/userDefinedFunctions.

  2. Supprimez chaque fonction UDF, une par une, à l’aide de l’API DELETE /app/userDefinedFunctions/{functionId} .

Des UDE aux UDF

Pour passer des UDE aux UDF, définissez des UDE avec des modules et des définitions de points de terminaison vides.

  1. Créez un bundle d’applications avec la structure suivante :

    {
        "metadata": {
            "endpoints": {}
        }, 
       "modules": []
    }
    
  2. Déployez le bundle d’applications avec le corps de la requête défini à l’étape 1 à l’aide de l’API PUT /app/userDefinedEndpoints .

Étapes suivantes

Pour commencer à utiliser la programmation côté serveur dans Azure Confidential Ledger, consultez les articles suivants :