Механизм лицензирования разработки/времени выполнения для библиотеки классов С#?

Я разрабатываю библиотеку классов .Net(поставщик данных), и я начинаю думать о том, как я буду обрабатывать лицензирование библиотеки потенциальным покупателям. По лицензированию я имею в виду механику попыток предотвратить использование моей библиотеки теми, кто ее не купил, а не лицензию на программное обеспечение (то есть Apache, Gnu и т.д.).

Я никогда не занимался лицензированием, и в прошлом я всегда разрабатывал приложения, а не библиотеки. Я не хочу затруднять работу своих клиентов; Знайте, что невозможно сделать это железным. Просто какой-то механизм, который дает мне приличную защиту, не заставляя клиента прыгать через обручи или скрежещет их зубами.

Я думаю, что механизм будет проверять действительную лицензию, когда класс используется в режиме разработки, а не в режиме исполнения (когда клиентское программное обеспечение выпущено для своих клиентов). Я думаю, что библиотеки, как правило, продаются за разработчика, но я не уверен, как это можно было бы сделать, не сделав механизм одиозным для моих клиентов; возможно, это останется в системе чести.

Я исследовал это и нашел много подходов. В идеале, я бы хотел сделать что-то общепринятое и обычное, библиотеки классов "правильного" класса лицензируются, если это существует, вместо того, чтобы заставить моих клиентов иметь дело с еще одним лицензионным механизмом. Будем очень благодарны за твердый толчок в правильном направлении!

Ответ 2

Когда ваш клиент создает экземпляр вашей библиотеки классов, вы должны проверить код своего конструктора на предмет лицензирования. Если у поставщика нет действительной/отсутствующей лицензии, вы можете бросить исключение для лицензирования. Это помешает кому-либо использовать ваш класс/библиотеку. Вы должны сделать это только один раз, чтобы, если лицензирование действительно в одном классе, все ваши другие классы пропустили бы проверку лицензии.