Friday, March 02, 2012 12:44 AM
Hello all, I know this issue is heavily covered but I'm soliciting advice because I'm agonizing over it. Here's what I have:
I've spent 1.5 years writing a very specialized (and most probably expensive) class library for technical/scientific image processing and analysis meant to be used with WPF clients. This is a "pure" .NET class library, not a component that is dropped onto a grid at design time. I need advice regarding a licensing solution. I've spent most of this week looking for something online but all I'm seeing are negative reviews and complaints about lousy buggy products. I feel very leary about the offerings that are out there...some of the stories I'm reading regarding many of these products made my hair stand on end. I'm looking for something affordable (<$500) and preferrably 100% .NET as well. The target market for my product is pretty small and the low volume means I can do the licensing manually i.e. there is no need to set up an automated authentication system. Those using the library (developers) will require a license but I intend for applications built using my library to be royalty-free, at least from the standpoint of my dll. Can someone make a recommendation based on their personal experience? I'd also like to hear people's opinions regarding locking via USB dongles as an alternative to software licensing. Thank you all in advance, I'm looking forward to reading the opinions.
- Changed Type LKeene Friday, March 02, 2012 2:40 PM
Friday, March 02, 2012 2:59 AM
I seriously don't think this is a C# issue.
Can you explain what is your code porblem here?
Friday, March 02, 2012 6:22 AMModeratorHi LKeene,
Your requirement is so general that we could not figure out any point which relates to any specific C# development problem. It seems that you intend to seek suggestions here.
So could you change your thread type to "Discussion"? Or post a specific C# development issue/problem here for us to help you resolve it.
Thanks for your understanding.
Have a nice day,
Leo Liu [MSFT]
MSDN Community Support | Feedback to us
Friday, March 02, 2012 2:50 PM
chanmm there is no specific code problem per se. I believe the intent of the post is very clearly explained: I am soliciting advice regarding licensing solutions for distributing a managed class library. I'm following Leo Liu's recommendation and changing the type to "Discussion" (I was unaware that I could flag posts as discussion or question). I look forward to hearing people's recommendations on this.
Friday, March 02, 2012 5:39 PM
Licensing schemes can be broken down in a few ways. I think each has their advantages and disadvantages.
1.) Serial Key - User buys a serial key which you use a special algorithm to decode. If the serial key is good, the program works. The disadvantage to this (especially with .NET applications) is it can be reverse engineered and false code generators can be made. If you aren't marketing to regular users (like John Doe Basement), this can be the cheapest and easiest method. Unfortunately, its hard to detect when a key is used in multiple places, so people could share the serial keys.
2.) Activation - Sort of like what Windows uses. (This is conjecture, it may not be exactly what happens, but its an idea nonetheless) It combines the Serial Key idea with a sort of certificate process. When you activate windows, there is a handshake between a Microsoft server and your local machine, in which some unique data about your computer (and your unique serial key) is sent to them and then you get back a specially signed file. This file is encrypted and signed with a private key certificate Microsoft's activation servers only possess. The client's OS has a public key copy of this certificate, which it verifies the encrypted file each time the OS starts. If they match, windows is 'activated'. Users cannot copy the file from one machine to another because it is linked to device identifiers (like MAC addresses). If you try to move it, the second computer can't verify it.
The problem with this scheme is the need to have an accessible authentication server (and internet access) at the time of activation. Luckily, you can generate your own private key/public key certificate pair for free.
3.) Username/password login. Adobe uses a scheme like this for their software, you 'register' an account with Adobe's servers, you send them information about yourself, and then they tell your application whether it is licensed or not. This is a great scheme for 'per-seat' licensing, for example, if a user buys 10 concurrent licenses, they can run 10 instances of the application at a time, no more. The account server manages the distribution and activity of a user. This also lends itself to handling payment processing and all of that on your website, and there's no clunky serial keys to type in or anything.
The downside to this scheme is the need for a website and remote authentication system. This authentication system needs to be available any time a user is going to start up and run their application, and requires the internet.