wcf operationContext - PullRequest
       5

wcf operationContext

0 голосов
/ 05 июня 2009

привет, у меня есть настольное приложение, которое также взаимодействует с сервисом wcf, которое я создаю

я хочу иметь возможность управлять вошедшими в систему пользователями внутри сервера без БД (statefull server)

Я также хочу, чтобы сервер знал, как обрабатывать 2 клиента с одного компьютера. Какой самый простой способ это сделать?

У меня также есть более 1 службы, с которой работает клиент (служба входа в систему и служба приложений)

Есть ли свойство OperationContext, которое может мне помочь?

1 Ответ

1 голос
/ 07 июня 2009

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

  • создайте класс клиента внутри сервера WCF, который будет содержать всю необходимую информацию о клиенте.
  • создать в сервисе 2 метода: logIn, logOut. метод входа в систему должен иметь возможность собирать всю информацию о клиенте, которую вы хотите сохранить. Обязательно определите свойства, которые могут однозначно идентифицировать экземпляр клиента. Когда клиент подключается к серверу, он вызывает метод входа в систему, позволяя серверу собирать и сохранять информацию от клиента. При использовании обратных вызовов это место для сохранения объекта контекста CallBack в объекте клиента. Теперь вы можете сохранить объект Client в экземпляре сервера WCF (я использую словарь). Когда клиент выходит из системы, он вызывает метод выхода из системы, и сервер удаляет запись.
  • создайте на сервере метод KeepAlive, который регулярно проверяет подключенных клиентов, чтобы убедиться, что они все еще подключены (в случае сбоя сети или сбоя приложения клиент может не вызвать метод выхода из системы).

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

Что касается вашего последнего вопроса, наличие нескольких служб не должно быть проблемой. Фактически у вас есть один и тот же сервер WCF с разными контрактами (и конечными точками) для различных услуг, которые вы предлагаете. ALl контракты находятся в одном и том же экземпляре сервера WCF, поэтому все они могут получить доступ к списку подключенных клиентов.

Если у вас есть дополнительные вопросы, я был бы рад ответить на них.

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