SLP Distributor floating / concurrent license module

Background

SLP Distributor allows ISVs to securely and quickly implement floating/concurrent licensing of their applications installed on their customers’ premises.  Typical on-premise/hosted scenarios:

  • Large installed base of a licensed application where is not practical to install licenses on each installed instance (Enterprise Licensing)
  • Multiple installed instances of a licensed application where the number of installed instances exceed the number of available licenses for the application
  • Web farm scenarios where the number of instances of the software can vary over time with performance and load factors (Dynamic Licensing)
  • Virtualised environments where secure license storage is not achievable e.g. ability to clone and/or rollback VMs etc (Virtual Licensing).

In these scenarios:

 
  • It may be impractical to activate/install licenses locally on each machine on which software is installed
  • There is a need to dynamically control the allocation of licenses across multiple application instances
  • It is important to reduce the customers’ license administration overhead, from initial installation through upgrades.
 

With SLP Distributor installed on-premise a customer can support any or all of the above scenarios with the additional benefit of central license administration.

 

SLP Distributor Licensing Role

SLP Distributor provides seamless management of licenses across multiple execution contexts such as machines, sessions etc.
SLP Distributor comprises:

 
  • Distributor Client DLL which is used by the SLP Runtime to connect to the Distributor Service
  • Distributor Service which is hosted as a Windows Service (Slps.Distributor.Host) on a network accessible machine.
  • An associated web front end that is served from within the same host process which allows one to administer the Distributor service and its associated licenses.
  •  
 

Single Machine Licensing Model

 

Without Distributor, licensing of an applications protected by SLPS requires licenses to be stored locally, in a suitable license store on the target machine.

In the above diagram, an application includes some protected code which requires licensing to execute. During code execution the protected code interacts with the SLP Runtime which uses a local license store to persist licenses. When a valid license is retrieved for your application, the protected code is permitted to execute.

In the above model, licenses must be activated/installed on the local machine using either an on-line or manual activation process.  Installed licenses may be “machine locked” which means they are bound to the particular machine and cannot be migrated between machines.
Distributor Licensing Model.

When Distributor is used with multiple instances of a licensed application, licenses are stored in a central and allocated across the multiple software instances.  At execution time the protected code in the application will call into the local SLP Runtime which has been configured to use the Distributor Service, which can hosted locally or typically on a different machine accessible on the network.

When executing protected code which requires a license, the local SLM runtime will call to the Distributor host to request a license for the product feature being executed.  The service will return a lease on a license from its available local licenses.

Distributor Installation and Configuration

 

Code Protection/Distribution Phase

 

The Distributor components are downloaded by the ISV as part of the ISV Permutation package.  During the code protection step, using the Target Runtime Variant selector in Code Protector the ISV Developer must select a Runtime variant that contains the Distributor components.

Once this option is selected the appropriate Distributor client DLLs are automatically included along with the standard Runtime DLLs as part of the application distribution. The same SLP Runtime is used whether Distributor client components are included or not.

Distributor Installation

While both a Powershell install script and a batch file are provided to ISV to ensure the Distributor server is installed correctly, the ISV is free to package and brand the Distributor Server appropriately for distribution and installation.

The Distributor product will need to be installed a network accessible machine on the customer’s premises, either on a dedicated server or on a nominated PC in the case of smaller workgroups (where the cost of a dedicated server would not be justified). The nominated Distributor machine will need to be visible on the network to all client machines.

Runtime Configuration

Each Distributor enabled SLP Runtime can be quickly and easily configured via a simple XML configuration file with the necessary Distributor connection details i.e. its IP address and port number. 

The Runtime will always look for a valid license in the local license store first, and if no license is available there it will then attempt to request a license from Distributor.

License Management

With Distributor all license management is via the web administration pages.  The customer’s license administrator can:

  • Activate/Renew licenses

  • View installed licenses
  • View lease details.