Нет, WCF не повторно проверяет сообщение.
Что происходит, это (упрощенно): во время сеанса каждое сообщение, отправляемое от клиента, буферизируется на клиенте. По умолчанию имеется место для 32 сообщений (это можно настроить; также имеется буфер на стороне службы).
Затем сообщение отправляется на сервер, и, если оно все в порядке и отправляется, сервер отправляет подтверждение, а клиент удаляет сообщение из буфера.
Однако, если клиент отправил сообщения № 15 и № 16, а затем получил подтверждение для № 16 (но не для № 15), сообщение № 15 повторно отправляется из буфера.
Существует довольно много параметров, которые вы можете настроить, например, хотите ли вы заказать доставку, сколько раз клиент должен повторить отправку сообщения и так далее.
Проверьте эти статьи и сообщение в блоге для получения дополнительной информации:
Надеюсь, это поможет немного прояснить ситуацию
ОБНОВЛЕНИЕ ответов: взято из первой статьи (на MSDN), на которую я ссылался:
Если мы предполагаем наличие запроса / ответа
шаблон общения, ответ
должен быть доставлен так же надежно
как запрос и, следовательно,
отвечающая сторона должна внедрить
механизм инициатора, который очень
похоже на то, что запрашивающая сторона
реализует для оригинальных запросов.
Запрашивающая сторона, в свою очередь,
играя роль акцептора для
ответы. Если ответы теряются, они
должен быть повторно отправлен отвечающей стороной
и поэтому они также должны быть кэшированы
(и признал). Оба конца
поэтому надежный сеанс обмена сообщениями
поддерживать отдельные кэши для исходящих
и входящие сообщения.
Так что да, то же самое относится и к ответам - что прекрасно работает, если у нас двусторонняя связь, например, через NetTCP или HTTP - как упоминалось в статье, в случае односторонняя операция - подробности см. в статье.
Марк