Aller au contenu
LICENTIVO / INTEGRATION

Gérez l'utilisation simultanée de logiciels avec des licences flottantes

Les places flottantes comptent le matériel disposant d’un bail valide. Les sessions du même matériel partagent une place ; sans identité matérielle, l’identifiant d’appareil est utilisé.

Flux de travail de session · les neuf SDKMis à jour

1. Fixez une limite de sièges simultanés

Les places flottantes comptent le matériel disposant d’un bail valide. Les sessions du même matériel partagent une place ; sans identité matérielle, l’identifiant d’appareil est utilisé.

Définissez ensemble l’intervalle de pulsation et le bail de session. Le bail doit dépasser l'intervalle de pulsation plus sa gigue maximale et une marge de 30 secondes. Un bail court permet de récupérer plus rapidement les sièges abandonnés mais tolère moins de perturbations du réseau.

La limite de places de la licence et le quota d’appareils de l’espace sont distincts. Les licences ordinaires et flottantes occupent le quota pour leurs activations actuellement valides.

Le quota compte les activations actuelles et est rendu à leur libération. Les licences ordinaires restent comptées hors ligne ; les licences flottantes rendent aussi le quota à l’expiration du bail.

Même après avoir utilisé 10 appareils, vous occupez au plus 3 unités en libérant d’abord chaque appareil remplacé et en conservant au plus 3 activations valides.

2. Acquérir un siège au démarrage

Copiez l’ID du produit dans Console > Produits. Ouvrez les clés publiques de signature du même produit et collez toutes les paires ID de clé/clé publique dans le code d’initialisation, en remplaçant YOUR_PRODUCT_ID, YOUR_KEY_ID et YOUR_PUBLIC_KEY. L’intégration rapide peut générer ce code. Aucun fichier de configuration n’est nécessaire ; le SDK utilise https://www.licentivo.com par défaut.

Le fragment Go suivant appartient à une fonction d’application renvoyant une erreur. Il nécessite des importations de contexte, d'os, d'os/signal et de journaux. exportReport est votre rappel professionnel existant ; customerKey provient du formulaire d'activation.

Go · application lifecycle
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
defer stop()

client, err := licentivo.OpenProduct(ctx, productID, trustedKeys, customerKey,
    func(err error) { log.Printf("License refresh: %v", err) })
if err != nil {
    return err // Show an activation error; do not start protected work.
}
defer client.Close() // Attempts to return a floating seat.

// Place this check inside each protected action, not only at startup.
if err := client.RunFeature("export", exportReport); err != nil {
    return err
}
<-ctx.Done()

3. Laissez le rythme cardiaque du programme SDK

N'écrivez pas votre propre minuterie et n'envoyez pas de requêtes de heartbeat HTTP parallèles. Le SDK utilise l'intervalle autorisé et renouvelle la session. Gardez le client en vie pendant que l'application est en cours d'exécution.

Placez RunFeature dans chaque gestionnaire protégé. Si une vérification est refusée, arrêtez cette action protégée et affichez un message de licence. Afficher les erreurs de connexion en arrière-plan utiles ; ne présumez pas qu’une vérification de démarrage autorise de manière permanente les opérations ultérieures.

Un bail expiré, une licence révoquée ou un refus de siège sont traités par les règles d'autorisation signées. La reconnexion nécessite une vérification réussie du serveur. Ne prolongez jamais une session en modifiant les données d'expiration locales.

4. Relâchez sur une sortie normale

Fermez le client lors d’un arrêt normal. Go utilise defer client.Close(); Java et C# libèrent les ressources à la fin d’une portée, C++ et Rust utilisent les destructeurs, Python utilise un gestionnaire de contexte et Ruby et JavaScript proposent close.

Si l'application plante ou ne parvient pas à contacter le serveur lors de l'arrêt, le serveur récupère le siège abandonné à l'expiration de son bail de session. Ce retard est attendu ; gardez un message clair afin qu'un autre utilisateur comprenne quand un siège peut devenir disponible.

Les licences flottantes comptent les baux valides. Une déconnexion ou un plantage ne libère pas immédiatement la capacité : la dernière session doit être libérée ou expirer.

5. Testez avec deux machines distinctes

  1. Définissez une licence de test sur un siège flottant. Démarrez l'application sur l'ordinateur A.
  2. Démarrer sur l'ordinateur B : la deuxième session protégée doit être refusée pendant que A occupe le siège.
  3. Sortez de A normalement, puis vérifiez que B peut acquérir un siège.
  4. Dans l'environnement de test isolé, arrêtez A sans nettoyage ; vérifier le retour du siège après l'expiration du bail configuré.

Dépannage des conflits de sièges

Les modes verrouillé par nœud et flottant ont un comportement de sortie différent : l'arrêt verrouillé par nœud conserve l'enregistrement, tandis que l'arrêt flottant tente de restituer un siège. N’appelez pas la suppression de la liaison du périphérique à chaque fois qu’une application verrouillée par un nœud se ferme.

Un message de siège en cours d'utilisation peut être provoqué par une autre instance en cours d'exécution ou par un processus récemment bloqué en attente d'expiration du bail. Passez en revue les sessions en cours dans la console avant d'augmenter le nombre de sièges achetés.

La première activation basée sur un fichier concerne les licences verrouillées par nœud. Les opérations mesurées nécessitent toujours une réservation en ligne et un règlement des appels même lorsque la session flottante elle-même est valide.