Двухсторонняя коммуникация сервер / клиент? - PullRequest
4 голосов
/ 20 мая 2011

Я пытаюсь выяснить, какую технологию клиент-сервер (т.е. какую часть .NET Framework) использовать для нашего нового приложения.Мы будем писать приложение на C # с использованием .NET 3.5 SP1.

Оно будет состоять из центральной службы, которая будет работать как «сервер», и нескольких клиентских приложений, размещенных на нескольких машинах.Клиентское приложение представляет собой приложение trayapp, которое будет получать уведомления от сервера, а также будет отправлять некоторую информацию обратно на сервер.Поэтому общение будет двусторонним, и оно должно быть быстрым.Сервер должен знать, на какой клиент отправлять уведомления.

Я думал, что смогу использовать сокеты.Я также сталкивался с классами TcpListener и TcpClient.Другая альтернатива - сделать что-то с WCF, но я не уверен, как быстро с ним связаться.

Ответы [ 3 ]

4 голосов
/ 20 мая 2011

WCF с привязкой NetTcp.

Вы должны написать дуплексный сервис.

3 голосов
/ 20 мая 2011

Не зная, сколько данных вы планируете обменивать, сложно дать точную рекомендацию. Я использую сокеты WCF и TCP для обмена данными между моим пользовательским интерфейсом и службой Windows. Вот соображения, которые я сделал.

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

Когда пользователь говорит моей службе Windows выполнить какое-либо действие, большая часть данных отправляется из службы Windows в пользовательский интерфейс. Для этого я использую сокеты TCP. Я знаю, что WCF обладает возможностью потоковой передачи, и я настоятельно рекомендовал использовать ее. У меня просто не было времени, чтобы освоиться с этим, прежде чем мне пришлось принимать решение, поэтому я пошел с тем, что знал.

Хотя я хотел бы использовать WCF по всем направлениям для симметрии, т. Е. Для апериодических и потоковых данных, этот гибридный подход хорошо мне помог.

Надеюсь, это поможет.

1 голос
/ 20 мая 2011

Я бы избегал розеток, если бы я был тобой, так как о них можно многое узнать. Просто посмотрите на все вопросы о сокетах здесь, на SO. Это может быть кошмар, если вы не знаете, как правильно их использовать.

WCF позаботится обо всех нижних уровнях для вас.

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