Как сохранить постоянное сетевое соединение между двумя приложениями по сети? - PullRequest
1 голос
/ 24 апреля 2010

Недавно к моему руководству обратилась интересная проблема: я уверен, что говорю боссам правильную информацию, но очень хочу убедиться, что говорю им правильные вещи.

Меня просят разработать программное обеспечение, которое имеет эту функцию:

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

Из того, что я понимаю, я предполагаю, что мне нужно почитать что-то вроде TCP / IP на уровне сокетов. Таким образом, если соединение разорвано, удаленное местоположение будет знать, что полученные данные могут устареть.

Однако руководство, похоже, очень убеждено, что этого можно достичь с помощью SOAP. У меня сложилось впечатление, что SOAP - более или менее способ для клиента инициировать процедуру с сервера и получить некоторые результаты по протоколу HTTP. Я ошибаюсь, предполагая это? Я не смог найти много информации о том, как SOAP может решить такую ​​проблему.

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

Буду признателен за любые мысли о том, как выполнить эту задачу!

Ответы [ 2 ]

3 голосов
/ 24 апреля 2010

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

Для решения проблемы вам понадобится отправитель и получатель. Отправитель отправляет данные, когда получает их, получатель ждет данных и передает их, когда они поступают. Получите это работает первым. Затем добавьте сердцебиение; сообщение, которое говорит «Я жив», отправляется периодически. Получите, что работает дальше. Вам нужно будет определить, какое именно поведение вы хотите - должны ли обе стороны послать сердцебиение на другой конец, максимальное время, которое вы готовы ждать сердцебиения, и какое действие вы предпримете, если сердцебиения прекратят поступать. Сетевое соединение может разорваться, другой конец может дать сбой, другой конец может зависнуть, и, возможно, есть другие условия, о которых вы должны подумать (например, что, если данные в реальном времени бессмысленны?). Выясните, как обрабатывать каждое условие, и запишите код обработки ошибок. Протестируйте его и предоставьте вместе с документацией.

2 голосов
/ 24 апреля 2010

SOAP определенно не скажет вам, когда источник данных выйдет из строя, хотя вы могли бы использовать «пульс», чтобы добавить это.

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

...