Выгонять пользователей из приложения - PullRequest
3 голосов
/ 29 июня 2011

Я написал приложение, которое используется в компании.Многие пользователи имеют тенденцию оставлять приложение открытым 24-7.Это приложение постоянно разрабатывается, так как потребности отдела маркетинга меняются.Большинство изменений незначительны, но часто их нужно внедрять быстро.Продавцы часто находятся за пределами своих рабочих мест или по телефону, поэтому объявление по интеркому не всегда помогает.Приложение размещено на общем сетевом ресурсе и имеет ярлык для.

Я предполагаю, что это что-то вроде сообщения, которое выдает что-то вроде: «Программа выйдет из-за обновления через пять минут, сохраните ваши изменения сейчас».Есть ли способ отобразить это сообщение и удаленно выгнать их из exe?Я подумал, может быть, просто имея значение базы данных, которое периодически проверяется, чтобы увидеть, ожидает ли обновление, но мне это кажется дешевым хаком.

Ответы [ 6 ]

4 голосов
/ 29 июня 2011

Ваша проверка базы данных так же хороша, как и любая другая;Лично я бы порекомендовал опросить какой-то сервис, на который он подписан, и сделать то же самое.Однако если ваше приложение подключается напрямую к базе данных, вам, вероятно, лучше выполнить проверку в базе данных.

Однако лучше всего использовать метод развертывания ClickOnce .Это потребовало бы серьезных архитектурных изменений, но было бы лучше всего в долгосрочной перспективе, ИМО.

1 голос
/ 30 июня 2011

Жаль, что это не веб-приложение.Развертывание было бы несложно!

В любом случае, я бы сделал следующее.Заставьте приложение выйти из системы после нескольких минут бездействия.

Два подхода к несохраненной работе.Ничего не предпринимайте, и поэтому они теряют его, если они не сохранены, когда они неактивны, и он выводит их из системы.

Во время работы локальный журнал изменений сохраняется.Когда они выходят из системы из-за неактивности, при повторном входе в систему будет использоваться журнал, чтобы открыть резервные копии в том виде, в каком они были.Напишите поле базы данных с номером версии или сборки.Если работает версия <версия в поле базы данных, то откажитесь войти в систему и / или перезапустите программу для загрузки нового образа. </p>

0 голосов
/ 30 июня 2011

Скорее тангенциальный ответ, но если проблема в том, что люди покидают рабочие станции и входят в систему, то посмотрите на что-то вроде nightwatchman с www.1e.com, которое отключает компьютер после x периода бездействия.Продайте его своей компании, чтобы «внести свой вклад в защиту окружающей среды» и сэкономить затраты на электроэнергию.

0 голосов
/ 29 июня 2011

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

0 голосов
/ 29 июня 2011

Вы можете использовать систему обмена сообщениями, такую ​​как RabbitMQ или любую другую, и заставить приложения прослушивать канал в системе. Затем административное приложение может отправить сообщение пользовательским приложениям, заставляя их завершить работу.

Если изменения не нарушают изменения, вы можете захотеть взглянуть на что-то вроде ClickOnce, которое позволяет публиковать обновления приложений, пока пользователи их запускают, хотя пользователи будут запускать старые версии приложения до его перезапуска.

0 голосов
/ 29 июня 2011

Вы можете настроить центральный сервер, на который .exe отправляет запросы, чтобы узнать, когда будут доступны обновления.

Я бы порекомендовал вам рассмотреть WCF как основу для вашего решения;Есть много отличных ссылок для фреймворка, а также посты на таких сайтах, как этот.Возможно, вы можете запустить отдельную ветку в вашем приложении, которая проверяет наличие обновлений каждые X минут.

Что касается вашего конкретного вопроса: «Есть ли способ отобразить это сообщение и удалить его из exe удаленно?»это возможно, но более целесообразно заставить программу автоматически запрашивать обновление.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...