gopstop2007 писал(а):так пусть будет вход на сервер через одного серверного пользователя, кстати соединение может быть и не видно при входе в программу, а логин и пароль для пользователя вводят после коннекта перед открытием приложения, вот этих пользователей и проверять на количество записей (count) в таблице списка пользователей БД
Нет, не так, может быть, не совсем так. Если работаем на SQL (есть SQL сервер). Если посмотреть как раздают лицензии производители SQL серверов. Ориентируюсь на SQLAnywhere. Есть два типа лицензии - per user и per seat, т.е. на вход пользователя и на вход ip-адреса. Надо примерно сделать также. По мне предпочтителен второй вариант, потому что я видел в Sybase Central, что даже, если запущен один экземпляр программы, разные треды могут иметь разные коннекты (может, это глюк Клариона, но факт). Во всяком случае, сервак должен выдавать информацию по коннектам (В Вашем случае - однозначно надо ориентировать на ip, сервак не знает Ваших внутренних пользователей). Коннекты очень хорошо сбрасываются, имею ввиду нажёжно, пользователь вышел, завис, коннект сбросился. В общем можно на это ориентироваться. Почему сложно ориентироваться на внутренних пользователей? Допустим, программа при входе пишет в некую таблицу - "Такой-то пользователь зашёл", при выходе удаляет. Но если программа зависла, то всё, проблема. Это сто раз здесь обсуждалось. Поэтому народ и использует tps.
Developer писал(а):Kreator, огромная просьба, если не коммерческий секрет - выскажи, пожалуйста, твое видение продажи и сопровождения коммерческого программного продукта по "подписке" на сколько это возможно, как с технической так и юридической точки зрения
Весь мир перешёл на это. Тут дело в цене, сделайте цену адекватную и пользователь поймёт. Есть пример, программа Oasis (может была), передача данных в электронном виде в пенсионный фонд. Такого же типа ЭОН. Ценовая политика такая - 3000р первый год, 2000 второй и далее. Правда, потом почему-то они перестали делать скидку на второй год, монополистами, наверно, стали. Техническая реализация вообще простая, храниться дата регистрации и срок лицензии, при входе в программу это дело проверяется. Надо, правда, защититься от изменения системной даты. Но это сейчас маловероятный случай, Винда сама дату синхронизирует. Ещё момент. Неправильно, чтобы программа не работала по окончании срока лицензии. Нужно отрубить некий важный функционал, например добавление новых записей. А старые пускай смотрят.
Developer, идея для Вас. Когда у меня возникло недопонимание с "заказчиком", у которого крутиться SQLAnywhere (очень своеобразные коммерческие отношения у меня с ним), сделал такой вариант. Ну очень жёсткий. У SQLAnywhere есть такой запрос:
Останавливает сервак однозначно, несмотря на коннекты и т.д. В БД стал хранить нужную дату. Клиентская программа коннектится к серваку, проверяет дату, если просрочка, то останавливает сервак, дата сдвигается, допустим на две недели. Админ поднимает сервер, естественно ничего не понимает, типа случайно остановился. Через две недели снова, дата сдвигается на неделю, админ думает "Опа, однако тенденция". Руководству, как правило, на...ть. Доходим до ситуации, что при любом коннекте сервак останавливается (дата уже никуда не сдвигается). Зовём разработчиков, налаживаем отношения

.