дизайн клиент-серверного приложения - PullRequest
2 голосов
/ 15 июня 2010

Я хочу создать клиент-серверное приложение с использованием сокетов на платформе .net и быть новичком в сетевом программировании, и у меня возникла дилемма. Клиент будет часто отправлять данные на сервер, а также сервер будет часто уведомлять клиентов. Каков наилучший способ его дизайна? должен ли сервер поддерживать поток для связи с каждым клиентом до тех пор, пока он не завершит работу, или клиенты просто отправят данные на сервер и регулярно обновляют клиентов (несколько секунд) или ничего из этого? Некоторая помощь будет отличной. Спасибо, парни. PS: количество клиентов достигнет тысяч.

Ответы [ 3 ]

3 голосов
/ 15 июня 2010

.net-решение для типа дизайна, который вы описываете, называется Windows Communication Foundation , или кратко WCF.

WCF допускает асинхронные обратные вызовы, которые могут быть одностороннимиреализации типа архитектуры, которую вы описываете.Я сделал большую часть своего изучения WCF с книгой Микеле Бустаманте Learning WCF .WCF очень обширный, и я бы рекомендовал не снимать с бедра без хорошей справки.

0 голосов
/ 15 июня 2010

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

Асинхронные сокеты имеют свои преимущества, но не для всех типов приложений.

Блокирующие сокеты также имеют свои достоинства, их проще концептуализировать и реализовать, и они могут использоваться многими приложениями.

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

0 голосов
/ 15 июня 2010

Когда я писал веб-сервер для проекта, я сделал это в том случае, если у вас есть основной поток на сервере, который прослушивает новые запросы.Как только запрос приходит, порождает новый поток и отвечает клиенту с другого порта.Вы поддерживаете этот второй поток до тех пор, пока ваш клиент / сервер взаимодействует.Как долго это зависит от многих вещей.Будут ли у вас сотни или тысячи клиентов?Если это так, вы должны часто закрывать потоки / порты.Но если у вас есть только пара клиентов, дольше оставляйте их открытыми.

Я предполагаю, что данные, отправляемые клиентам, различны для каждого клиента.Если данные идентичны, то вы должны использовать UDP для широковещательной передачи всем клиентам одновременно.

...