Как сделать ресурс (экран) доступен только одному пользователю в то время в распределенном приложении .Net?

голоса
1

У меня есть на основе клиент-сервер Windows Forms приложение, которому требуется администратор только на экране. Функциональность администратора должна быть реализована таким образом, что в любой момент времени только один администратор может получить доступ к этому экрану. Окна формируют переговоры приложений клиента к серверу с помощью .NET Remoting. И на стороне сервера распределяется на нескольких машинах.

Задан 09/12/2008 в 21:26
источник пользователем
На других языках...                            


2 ответов

голоса
3

Это может быть сделано наиболее простым путем использования таблицы БД. Обычно DB уже отказоустойчивые и безопасный ресурс для использования совместно блокировок сценария. Просто есть таблица блокировки, которая содержит некоторую информацию о заблокированном ресурсе, который имеет его, когда и т.д.

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

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

Ответил 09/12/2008 в 21:31
источник пользователем

голоса
0

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

Что касается стороны сервера , то, вы говорите , что он существует на нескольких ПК. Является ли это балансировка нагрузки рода topolgy , которые работают как один виртуальный сервер? В этом случае вы , возможно , придется сохранять это значение в базе данных. Подумайте об этом таким же образом , что ASP.Net сохраняется состояние сеанса . Я могу существовать на сервере, но если есть ферма серверов может быть перемещен в SQL Server для использования всех серверов.

Ответил 09/12/2008 в 21:33
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more