Несколько DataContract Callbackcontract - PullRequest
       14

Несколько DataContract Callbackcontract

0 голосов
/ 04 февраля 2010

Привет, В нашей компании мы развиваем сервис wcf. Это используется как сервер, и это работает довольно хорошо. Однако от клиента требуется, чтобы после входа в приложение он хотел бы видеть, какие пользователи также вошли в систему. Я читал о CallbackContract (на основе некоторых приложений чата wcf). Как мы можем достичь этой цели?

1 Ответ

1 голос
/ 04 февраля 2010

Подобный вопрос задан здесь

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

  • создайте класс клиента внутри сервера WCF, который будет содержать всю необходимую информацию о клиенте.

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

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

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

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

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

Здесь вы можете найти код, необходимый для создания необходимой вам службы WCF здесь

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