I am looking for advice how to architect licensing for a .NET library. I am not asking for tool/service recommendations or something like that.
My library can be used in a regular desktop application, in an ASP.NET solution. And now Azure services come into play.
Currently, for desktop applications the library checks if the application and company names from the version history are the same as the names the key was generated for. In other cases the library compares hardware IDs.
Now there are problems:
- an Azure-enabled web-application can be run on different hardware each time (AFAIK)
- sometimes the hardware ID for the same hardware changes unexpectedly
- checking the hardware ID or version info might not be allowed in some circumstances (shared hosting for example)
So, I am thinking about what approach I can take to architect a licensing scheme that:
- is friendly to customers (I do not try to fight piracy, but I do want to warn the customer if he uses the library on more servers than he paid for)
- can be used when there is no internet connection
- can be used on shared hosting
What would you recommend?