Отправка данных между приложениями .net через Интернет - PullRequest
3 голосов
/ 18 апреля 2011

Я отправляю небольшие сообщения, состоящие из XML (около 1-2 КБ каждое), через Интернет из приложения Windows в веб-службу asp.net.

99% времени это работает нормально, но иногдасообщение займет неоправданное количество времени, 25-30 секунд вместо обычных 4-5 секунд.Эта задержка также приводит к тому, что сообщение выходит из последовательности.

В любом случае я могу решить эту проблему, чтобы все сообщения поступали быстро и последовательно, или это невозможно гарантировать при использовании веб-службы в этомманера?

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

Спасибо.

Ответы [ 4 ]

1 голос
/ 18 апреля 2011

Могу ли я в любом случае решить эту проблему, чтобы все сообщения поступали быстро и последовательно или это невозможно гарантировать при использовании веб-службы таким образом?

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

Я бы также рекомендовал использовать XMPP для чего-то подобного.Посмотрите xmpp.org для получения информации о стандарте и jabber-net для набора клиентских библиотек для .Net.

0 голосов
/ 18 апреля 2011

Если вы отправляете сообщения в определенной последовательности через Интернет, вы никогда не узнаете, сколько времени займет сообщение, чтобы добраться из одной точки в другую. Одно из возможных решений - включить в каждое сообщение свою позицию в последовательности и в каждой конечной точке реализовать логику для упорядочения сообщений перед их обработкой. Если вы получили сообщение не по порядку, вы можете подождать пропущенного сообщения или запросить другую конечную точку повторно отправить его.

0 голосов
/ 18 апреля 2011

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

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

Независимо от скорости среды обмена сообщениями, вы не можете гарантировать предотвращение состояния гонки, которое может отправлять сообщения не по порядку, если только вы не отправите одно сообщение с вашими данными в правильном порядке.

0 голосов
/ 18 апреля 2011

Ну, это немного не так, но вы изучаете протокол XMPP (Jabber). Это система обмена сообщениями, которую использует GTalk. Довольно прост в использовании. Единственным недостатком является то, что вам потребуется служба с отслеживанием состояния для получения и обработки сообщений.

Я также согласен с комментарием @ Mat. Это было первое решение, которое пришло мне на ум, затем я вспомнил, что использовал XMPP в прошлом для создания быстрых / небольших и надежных сообщений между серверами.

http://xmpp.org/about-xmpp/

если вы будете искать в Google, вы легко найдете библиотеки .net, которые поддерживают этот протокол. и есть множество бесплатных серверов Jabber.

...