2015-08-31 3 views
1

Я разрабатываю решение клиента/сервера WCF, которое мне необходимо для обеспечения канала связи 24/7, поскольку существует служба Windows, которая постоянно публикует данные - моя реализация WF - это Подписка/Опубликовать сервис. Я поставил некоторые вещи вместе, но, похоже, проблемы с потерями соединений и некоторые другие гнусные проблемы. Как я читал на веб-сайте Microsoft о проверке объекта связи Проверка значения свойства ICommunicationObject.State является условием гонки и не рекомендуется определять, следует ли повторно использовать или закрывать канал. Однако примеры, которые я видел, используют эту технику! Microsoft делает эту нотацию, но не дает никакой дополнительной информации или рекомендаций относительно того, как это сделать «PROPERLY».Правильный способ проверки состояния канала связи WCF

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

ответ

0

Так что я хотел бы знать, что это правильный способ сделать это

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

Однако мы знаем, что мы всегда должны иметь возможность повторно использовать канал, если он не находится в неисправном (или закрытом) состоянии. Таким образом, мы можем просто перевести наш вызов на канал в try ... catch, а затем обрабатывать исключения как appropriate.

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

Смежные вопросы