Как не надежен WCF с базовым связыванием по TCP? - PullRequest
0 голосов
/ 15 ноября 2018

Так как у меня было плохое введение, которое смутило людей, я редактирую вопрос и удаляю введение, которое я сделал ранее.

Теперь вот экономическое обоснование, в отношении которого у меня сейчас есть проблемы.Псевдокод C #:

 Array.ForEach(files, filename =>
                    {
                        try
                        {
                           WcfServiceClient wcfClient = new WcfServiceClient();
                           wcfClient.SomeMethodWhichPostsFile(filename);
                        }
                        catch (Exception ex)
                        {
                            LogException(ex)
                        }
                    }
                );

Я сбит с толку из-за существования надежного WSBinding, а базового HTBBinding нет.Я знаю, что WSBinding с надежными сеансами гарантирует доставку, порядок, контент в зашифрованном виде и т. Д. Но в случае, который я описал с помощью псевдокода, по моему мнению, все они поддерживаются даже с basicHttpBinding и HTTPS через TCP.TCP обеспечивает надежность, гарантирует порядок и шифрование HTTPS.

(удалено 1). Правильно ли я связан с предыдущим?Или перефразируя: есть ли пример, чтобы показать, что basicHttpBindind при определенных условиях не может обеспечить те же функции, что и привязка WS с надежными сеансами?

В моем бизнес-случае требуется принимать вызовы WCF отПорядок их выдачи.Если я отправляю их синхронно от клиента в цикле foreach (как показано в псевдокоде), я предполагаю, что порядок на сервере гарантирован, независимо от того, отправляются ли они в пределах одного соединения TCP или нет, так как я жду ответа, а затемЯ отправил еще один запрос.Даже loadbalancer не может разладить сообщения здесь, поскольку здесь нет распараллеливания, сообщения отправляются одно за другим синхронно.Я предполагаю, что беспорядок может произойти, только если я отправляю сообщения, не ожидая ответа в огне и забывая, и я использую различные соединения TCP.Так я здесь?:)

1 Ответ

0 голосов
/ 15 ноября 2018

Существуют разные значения термина надежность, и интерпретация также зависит от контекста. Ваша интерпретация надежности в вашем вопросе сообщение доставлено . Вместо этого, источник достоверности в источнике, который вы цитируете, вместо этого сообщение доставлено ровно один раз . Ваша путаница возникает из-за утверждения «HTTP ненадежен» , которое предназначалось для одной интерпретации надежности и использования его в вашей другой интерпретации надежности.

HTTP не может гарантировать, что сообщение будет доставлено только один раз, он может максимально гарантировать, что сообщение будет доставлено хотя бы один раз . Может случиться, что основное TCP-соединение разрывается при отправке запроса или получении ответа. В этом случае клиент может проигнорировать проблему или повторить попытку, что может привести к тому, что сообщение не будет доставлено (игнорирование ошибок при отправке запроса), а также будет доставлено одно и то же сообщение несколько раз (повторная попытка разрыва соединения во время ответа). Повторяя попытку до тех пор, пока ответ не будет получен успешно, можно гарантировать, что сообщение будет получено хотя бы один раз, что является вашей интерпретацией надежности, а не интерпретацией заявления, которое вы цитируете.

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