Низкоскоростная сеть с высоким риском отключения - PullRequest
5 голосов
/ 30 ноября 2010

У меня есть несколько компьютеров в сети, сеть как-то последовательная, я имею в виду, что компьютеры подключены друг к другу через радиопередатчики и по линии, если радиопередатчик выключается или сталкивается с некоторыми проблемами, другие компьютеры не доступны.архитектура будет выглядеть примерно так:
RT = радиопередатчики
Computer#1<-RT#1->Computer#2<-RT#2->Computer#3<-RT#3->....<-RT#(N-1)->Computer#N

Расстояния между компьютерами составляют от 20 до 30 километров, а скорость сети варьируется от 0 до 10 Кбит / с.на компьютерах установлена ​​операционная система Windows XP, и на них всегда работает очень загруженная программа (2 ГБ ОЗУ, загрузка ЦП 90%), IP-адреса всех компьютеров известны и статичны.

Я собираюсь написать программукоторый будет запускаться на каждом компьютере и получать команды или пакеты для запуска или установки и обновления на этом компьютере.из-за низкой скорости сети и высокого риска разрыва соединения передача данных между компьютерами должна иметь возможность возобновления.вопрос в том, как мне это реализовать?используя .NET Remoting или использовать простые сетевые сокеты и TCP?какой из них лучше?не стесняйтесь объяснить свое предложение или подходы, которые, по вашему мнению, подходят к этому решению.

Ответы [ 4 ]

5 голосов
/ 30 ноября 2010

Прочтите UUCP , исторически решение этой проблемы и конфигурации.

1 голос
/ 11 декабря 2010

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

Для больших передач вы можете сжать и разделить пакеты и отправить их отдельно. В случае сбоя передача будет возобновлена ​​с прерванного пакета. С отдельным сервером можно легко поддерживать всю эту статистику и соответствующим образом контролировать трафик.

Клиенты могут даже пропинговать сервер для ожидающих команд / обновлений в случае низкой загрузки ЦП.

С WCF можно выполнять двунаправленную / дуплексную передачу.

Что нужно знать об односторонних вызовах, обратных вызовах и событиях

Дуплексные сообщения WCF

1 голос
/ 30 ноября 2010

Раньше я развивал ужасную связь.

У меня были пакеты, возвращаемые буквально через несколько часов (3-6 часов IIRC).

Слава Богу, что контракт окончен:)

Веселись! Я чувствую твою боль.

0 голосов
/ 14 декабря 2010

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

Система может разрешить обмен сообщениями «повторять до успеха» с буфером где-то вдоль линии, и вам не нужно беспокоиться о слишком большом количестве вещей низкого уровня.

http://www.nservicebus.com/

Я не уверен, разрешает ли это передачу больших объемов данных, но проверьте это для команд

...