C # байтовые потоки через TCP - PullRequest
3 голосов
/ 14 сентября 2010

Я младший инженер и надеюсь получить совет от всех опытных людей здесь, чтобы узнать, как к этому подойти.

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

Пользователь / Клиент -> местоположение микрофона -> сервер -> базовая станция -> сигнал OTA -> радио и обратно

Я смотрю на Windows Communication Foundation, но как еще я могу подойти к этому?

Я буду в основном использовать C # / .NET / Visual Studio 2008

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

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

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

0 голосов
/ 14 сентября 2010

Если вам нужен только необработанный поток байтов, то Socket или чуть более инкапсулированный TcpClient может быть более легким решением.

Но если вы хотите отправить полные структуры данных и «функции вызова», то WCF кажется хорошим выбором.

С WCF у вас есть опыт программирования, близкий к вызову обычных методов с реальными объектами в качестве параметров, но сSocket вы просто отправляете байтовые массивы, и вам нужно интерпретировать результат самостоятельно.

...