Licenza flottante
Una licenza flottante è un pool di licenze condiviso tra gli utenti o i computer di una rete. Con Babel Licensing crei le licenze flottanti nel Babel Licensing Service usando Babel Desktop. Questa pagina mostra come creare una licenza flottante con Babel Desktop e come configurare un’applicazione client .NET per usarla con la libreria Babel Licensing.
Prerequisiti
Per abilitare le licenze flottanti nel Babel Licensing Service, segui questi passi. Per prima cosa assicurati che il Babel Licensing Service sia attivo e in esecuzione sul tuo server, secondo le istruzioni della sezione Per iniziare. Poi crea un prodotto di test e il relativo modello di licenza seguendo le istruzioni riportate di seguito. Avrai così la base per generare le licenze flottanti.
Poi devi scaricare da GitHub il codice sorgente del client per le licenze flottanti. Questo codice client serve a integrare le licenze flottanti nella tua applicazione .NET.
git clone https://github.com/babelfornet/floating-license-console-example.gitLa creazione di una licenza flottante per questo esempio richiede la creazione del relativo modello di licenza.
Creare una licenza flottante
Babel Desktop si connette al Babel Licensing Service e ti permette di creare e configurare le licenze flottanti. Definisci la dimensione del pool di licenze, cioè il numero di utenti o computer che possono usare la licenza contemporaneamente. La tua applicazione acquisisce quindi una licenza dal pool quando le serve e la rilascia quando ha finito. Ogni postazione prelevata è un token che conta ai fini del limite di token del servizio; vedi Token di licenza.
Per registrare una licenza flottante in Babel Desktop, segui questi passi:
Connettiti al servizio
Apri Babel Desktop e fai clic sull’icona del profilo del tuo Babel Licensing Service nella barra attività . Per generare le licenze serve un profilo Test locale con Gestione locale, quindi esegui Babel Desktop sul computer del servizio; per un servizio remoto usa l’applicazione web o la Management API.
Genera una licenza
Apri la vista Licenze e scegli Genera licenza nella barra degli strumenti.
Seleziona il modello e la chiave di firma
Nel gruppo Modello, seleziona il Modello di licenza creato nel paragrafo precedente (vedi Modelli di licenza) e la Chiave di firma. Se non selezioni una chiave di firma, viene usata quella del modello o del suo prodotto.
Imposta la modalitĂ su Flottante
Nel gruppo Termini, imposta ModalitĂ su Flottante.
Imposta la dimensione del pool
In Sedi, inserisci la dimensione del pool flottante: il numero di licenze che possono essere in uso contemporaneamente.
Genera la chiave utente
Nel gruppo Informazioni licenza, premi il pulsante Genera all’estremità destra del campo Chiave utente. L’applicazione client userà questo codice univoco per richiedere una licenza flottante.
Inserisci l’intestatario e i dettagli della licenza
Inserisci i dati dell’intestatario (è obbligatorio il nome dell’intestatario o l’azienda) e gli eventuali Campi, Funzionalità o Restrizioni aggiuntivi che vuoi per questa licenza.
Seleziona il formato
Seleziona il Formato della licenza: XML, Firma XML, ASCII o Base32.
Salva la licenza
Salva il modulo. Il servizio genera e firma la licenza.
La chiave pubblica estratta dal file Keys.snk, necessaria per la convalida della licenza, è già configurata nel codice sorgente dell’esempio.
La licenza flottante appena registrata compare ora nella griglia delle licenze con una chiave di licenza univoca e altre informazioni pertinenti. Con l’edizione Data Center puoi creare le licenze flottanti anche nella pagina Licenze dell’applicazione web.
Il Babel Licensing Service limita l’uso simultaneo della licenza al numero di sedi flottanti che hai inserito.
Configurare un client
Una volta creata la licenza flottante nel Babel Licensing Service, devi configurare la tua applicazione client .NET perché usi la licenza. Per farlo, integra la libreria Babel Licensing nella tua applicazione e implementa il codice necessario per richiedere e rilasciare le licenze del pool flottante. La libreria Babel Licensing fornisce le API per convalidare la licenza e farla rispettare.
Per aprire il progetto di esempio della licenza flottante, segui questi passi:
Apri la soluzione
Vai nella posizione in cui è salvato il progetto di esempio della licenza flottante e fai doppio clic sul file di soluzione ClientFloating.sln per aprirlo nel tuo ambiente di sviluppo integrato (IDE) preferito, per esempio Visual Studio.
Controlla il riferimento alla libreria client
Una volta aperto il progetto, assicurati che il riferimento alla libreria client di Babel Licensing sia corretto. Se il riferimento manca, consulta il paragrafo Componenti client per configurare un repository NuGet locale.
Compila la soluzione
Dopo aver verificato i riferimenti, compila la soluzione selezionando l’opzione “Build” o “Rebuild” dal menu dell’IDE.
Esegui l’applicazione
Quando la soluzione è stata compilata correttamente, puoi eseguire l’applicazione in configurazione di debug premendo il pulsante “Start Debugging” o usando la scorciatoia da tastiera del tuo IDE (per esempio F5 in Visual Studio). L’applicazione di esempio della licenza flottante si avvia e ti permette di interagire con le funzioni di licenza e di provare il flusso di lavoro della licenza flottante.
Inserisci la chiave della licenza flottante
Inserisci la chiave della licenza flottante generata per la licenza e premi ENTER.

Console della licenza flottante
Segue il codice sorgente completo dell’esempio di attivazione della licenza:
using Babel.Licensing;
// Create a new configuration object
BabelLicensingConfiguration config = new BabelLicensingConfiguration() {
// Set the service URL
ServiceUrl = "http://localhost:5005",
// Set the public key used to verify the license signature
SignatureProvider = RSASignature.FromKeys("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDE1VRiIdr6fiVZKve7NVgjIvGdRiRx0Mjjm+Yzf6tLbzFnxLs0fat5EoRcubxx0QQQDfydsJBE/fc7cwRWSrE2xK6X4Eb4W8O47pCMjqvTQZfDqQywEZJrLlxpp9hlKz6FDYX4SagrjmP1gdw8olo+n+IBz8ubkNxRhvycikxuDQIDAQAB"),
// Set a unique client ID in case multiple instances of the application are running on the same machine
ClientId = Guid.NewGuid().ToString()
};
// Create the client object used to communicate with the server
BabelLicensing client = new BabelLicensing(config);
// Ask the user to enter the floating license key
Console.WriteLine("Please enter your floating license key: ");
string? userKey = Console.ReadLine();
try
{
var result = await client.RequestFloatingLicenseAsync(userKey, typeof(Program));
Console.WriteLine($"License {result.License.Id} requested.");
}
catch (Exception ex)
{
Console.WriteLine($"Could not request floating license: {ex.Message}");
return;
}
try
{
// Simulate a long task which requires the allocation of a license
for (int i = 0; i < 10; i++)
{
// Validate the license
// This will contact the server to validate the license
var result = await client.ValidateLicenseAsync(userKey, typeof(Program));
Console.WriteLine($"{i}) License {result.License.Id} valid.");
// Wait 1 second
await Task.Delay(1000);
}
try
{
// Release the license to allow other clients to use it
await client.ReleaseFloatingLicenseAsync(userKey);
Console.WriteLine("License released.");
}
catch (Exception ex)
{
Console.WriteLine($"Could not release license: {ex.Message}");
}
}
catch (Exception ex)
{
Console.WriteLine($"License not valid: {ex.Message}");
return;
}
La classe BabelLicensing viene istanziata per comunicare con il server delle licenze. Nella configurazione del servizio vengono assegnati la chiave pubblica per convalidare la licenza e l’URL per comunicare con il servizio.
All’utente viene chiesto di inserire la chiave della licenza flottante. Il client usa la chiave di licenza per richiedere una licenza flottante chiamando il metodo RequestFloatingLicenseAsync. Come parametri vengono passati la chiave utente e il tipo del programma. In caso di successo, il metodo restituisce un oggetto risultato con le informazioni della licenza richiesta.
Il codice simula un’attività di lunga durata che richiede la licenza assegnata. In un ciclo, la licenza viene convalidata con il metodo ValidateLicenseAsync. Come parametri vengono passati la chiave utente e il tipo del programma. Se la licenza è valida, il metodo restituisce un oggetto risultato con le informazioni della licenza. Il ciclo include anche un ritardo di un secondo per simulare la durata dell’attività .
Al termine dell’attività , il client rilascia la licenza flottante con il metodo ReleaseFloatingLicenseAsync.
Le licenze flottanti ti permettono di condividere un numero limitato di licenze in una rete di utenti o computer, con meno lavoro amministrativo rispetto all’assegnazione di una licenza a ciascuno. Sono adatte a una base di utenti in crescita o a licenze condivise tra reparti o team.