Skip to Content
Nueva versión 12 disponible 🎉

Licencia flotante

Una licencia flotante es un grupo de licencias que comparten los usuarios o los equipos de una red. Con Babel Licensing, las licencias flotantes se crean en el Babel Licensing Service mediante Babel Desktop. Esta página muestra cómo crear una licencia flotante con Babel Desktop y cómo configurar una aplicación cliente .NET para que la use con la biblioteca de Babel Licensing.

Requisitos previos

Para habilitar las licencias flotantes en el Babel Licensing Service, siga estos pasos. En primer lugar, asegúrese de que el Babel Licensing Service está en funcionamiento en su servidor, según las instrucciones de la sección Primeros pasos. Después, cree un producto de prueba y la plantilla de licencia correspondiente siguiendo las instrucciones que se dan más abajo. Con ello tendrá la base para generar licencias flotantes.

A continuación, descargue de GitHub el código fuente del cliente de licencia flotante. Este código de cliente sirve para integrar las licencias flotantes en su aplicación .NET.

git clone https://github.com/babelfornet/floating-license-console-example.git

Para crear la licencia flotante de este ejemplo hay que crear antes la plantilla de licencia correspondiente.

Crear una licencia flotante

Babel Desktop se conecta al Babel Licensing Service y permite crear y configurar licencias flotantes. Usted define el tamaño del grupo de puestos flotantes, es decir, el número de usuarios o de equipos que pueden usar la licencia al mismo tiempo. Su aplicación obtiene una licencia del grupo cuando la necesita y la libera cuando termina. Cada puesto solicitado es un token que cuenta para el límite de tokens del servicio; consulte Tokens de licencia.

Para registrar una licencia flotante en Babel Desktop, siga estos pasos:

Conectarse al servicio

Abra Babel Desktop y haga clic en el icono del perfil de su Babel Licensing Service en la barra de actividad. Para generar licencias se necesita un perfil Prueba local con Gestión local, así que ejecute Babel Desktop en el equipo del servicio; para un servicio remoto, use la aplicación web o la Management API.

Generar una licencia

Abra la vista Licencias y elija Generar licencia en la barra de herramientas.

Seleccionar la plantilla y la clave de firma

En el grupo Plantilla, seleccione la Plantilla de licencia creada en el apartado anterior (consulte Plantillas de licencia) y la Clave de firma. Si no se selecciona ninguna clave de firma, se usa la de la plantilla o la de su producto.

Establecer el modo en Flotante

En el grupo Términos, establezca Modo en Flotante.

Definir el tamaño del grupo

En Sitios, introduzca el tamaño del grupo de puestos flotantes: el número de licencias que pueden estar en uso al mismo tiempo.

Generar la clave de usuario

En el grupo Información de la licencia, haga clic en el botón Generar situado en el extremo derecho del campo Clave de usuario. La aplicación cliente usará este código único para solicitar una licencia flotante.

Introducir el titular y los datos de la licencia

Introduzca los datos del titular de la licencia (es obligatorio el nombre del titular o la empresa) y los Campos, Funciones o Restricciones adicionales que quiera para esta licencia.

Seleccionar el formato

Seleccione el Formato de la licencia: XML, Firma XML, ASCII o Base32.

Guardar la licencia

Guarde el formulario. El servicio genera y firma la licencia.

La clave pública extraída del archivo Keys.snk, necesaria para validar la licencia, ya está configurada en el código fuente del ejemplo.

La licencia flotante recién registrada aparece ahora en la cuadrícula de licencias con una clave de licencia única y otros datos pertinentes. Con la edición Data Center también puede crear licencias flotantes en la página Licencias de la aplicación web.

El Babel Licensing Service limita el uso simultáneo de la licencia al número de sitios flotantes que haya introducido.

Configurar un cliente

Una vez creada la licencia flotante en el Babel Licensing Service, debe configurar su aplicación cliente .NET para que use la licencia. Para ello hay que integrar la biblioteca de Babel Licensing en la aplicación e implementar el código necesario para solicitar licencias al grupo de puestos flotantes y liberarlas. La biblioteca de Babel Licensing proporciona las API para validar las licencias y hacerlas cumplir.

Para abrir el proyecto de ejemplo de licencia flotante, siga estos pasos:

Abrir la solución

Vaya a la ubicación donde está guardado el proyecto de ejemplo de licencia flotante y haga doble clic en el archivo de solución ClientFloating.sln para abrirlo en el entorno de desarrollo integrado (IDE) que prefiera, por ejemplo Visual Studio.

Comprobar la referencia a la biblioteca cliente

Con el proyecto abierto, compruebe que la referencia a la biblioteca cliente de Babel Licensing es correcta. Si falta la referencia, consulte el apartado Componentes de cliente para configurar un repositorio NuGet local.

Compilar la solución

Una vez comprobadas las referencias, compile la solución con la opción «Build» (compilar) o «Rebuild» (recompilar) del menú del IDE.

Ejecutar la aplicación

Cuando la solución se haya compilado correctamente, puede ejecutar la aplicación en la configuración de depuración con el botón «Start Debugging» (iniciar depuración) o con el método abreviado de teclado de su IDE (por ejemplo, F5 en Visual Studio). Se inicia la aplicación de ejemplo de licencia flotante, con la que puede interactuar con las funciones de licencia y probar el flujo de trabajo de la licencia flotante.

Introducir la clave de la licencia flotante

Introduzca la clave de licencia flotante generada para la licencia y pulse ENTER.

Consola de licencia flotante

A continuación se muestra el código fuente completo del ejemplo de activación de licencia:

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; }

Se crea una instancia de la clase BabelLicensing para comunicarse con el servidor de licencias. La clave pública con la que se valida la licencia se asigna en la configuración del servicio, igual que la URL para comunicarse con él.

Se pide al usuario que introduzca la clave de licencia flotante. El cliente usa esa clave para solicitar una licencia flotante mediante una llamada al método RequestFloatingLicenseAsync. Se pasan como parámetros la clave de usuario y el tipo del programa. Si la llamada se realiza correctamente, el método devuelve un objeto de resultado con la información de la licencia solicitada.

El código simula una tarea de larga duración que necesita la licencia asignada. En un bucle, la licencia se valida con el método ValidateLicenseAsync. Se pasan como parámetros la clave de usuario y el tipo del programa. Si la licencia es válida, el método devuelve un objeto de resultado con la información de la licencia. El bucle incluye además una espera de un segundo para simular la duración de la tarea.

Una vez terminada la tarea, el cliente libera la licencia flotante con el método ReleaseFloatingLicenseAsync.

Las licencias flotantes permiten compartir un número limitado de licencias en una red de usuarios o de equipos, con menos trabajo administrativo que asignar una licencia a cada uno. Son adecuadas para una base de usuarios en crecimiento, o para licencias compartidas entre departamentos o grupos de trabajo.

Last updated on