Нужна концепция приложения для чата на базе Windows

предположим, что если я хочу разработать приложение для чата Windows, то необходимо разработать сервер чата и клиент. после разработки приложений чат-сервера мы можем запускать эти приложения на компьютере, а клиент чата будет работать на другом компьютере. если эти компьютеры не находятся в одной сети, предположим, что сервер чата работает на компьютере в США, а один клиент чата работает на компьютере в Германии, а другой работает на компьютере в Великобритании. в этой ситуации, как общение будет происходить с использованием Интернета. все люди имеют доступ к Интернету, так как один клиент чата будет входить на сервер чата и как два клиента чата будут общаться друг с другом. я просто хочу, как данные будут передаваться от одного клиента к другому клиенту через сервер чата. пожалуйста, дайте мне концепцию, или было бы лучше, если бы кто-нибудь дал мне ссылку на любое хорошее приложение для чата на основе .net, где будут сервер чата и клиент чата ......... спасибо.


person Thomas    schedule 17.01.2011    source источник
comment
Здесь нет особого вопроса... Вы понимаете, что такое клиент-серверная архитектура? Вы хотите знать, как общаться через Интернет в целом?   -  person James Gaunt    schedule 17.01.2011
comment
да, я хочу знать, как два приложения win взаимодействуют друг с другом через Интернет .... пожалуйста, объясните подробно. спасибо   -  person Thomas    schedule 17.01.2011
comment
может быть трудно получить ответ с таким плохим рейтингом принятия   -  person Spooks    schedule 17.01.2011


Ответы (2)


  1. Веб-служба WCF с клиентом, опрашивающим службу (простой базовый сценарий — простой в реализации, не очень эффективный)

  2. Дуплексная веб-служба WCF с сервером, обновляющим клиентов при необходимости (немного сложнее)

  3. Решение, основанное на сокетах TCP, сложнее всего реализовать, но оно обеспечивает гораздо лучший контроль. В книге Мэтью Макдональда «Pro Silverlight 3» есть очень хороший пример.

person Maciek    schedule 17.01.2011
comment
я просто хочу использовать сокет в приложениях win, которые общаются друг с другом через Интернет, потому что два приложения, такие как один сервер чата, будут работать на компьютере в Великобритании, а другой клиент чата будет работать на компьютере в США. Итак, как приложения сокетов могут взаимодействовать с другими через Интернет. Пожалуйста, объясните подробно, если это возможно .... или вы можете дать мне URL-адрес, откуда я могу получить знания .... спасибо. - person Thomas; 17.01.2011
comment
По сути, у вас должен быть сервер, который прослушивает входящие соединения, после того как входящее соединение будет принято, клиент соединения на стороне сервера может быть создан и использован для прямой связи с конкретным удаленным клиентом. Я рекомендую поискать книгу, о которой я упоминал, в ней есть полный рабочий образец. - person Maciek; 17.01.2011

В общем? Я не понимаю, как это связано с C#, но архитектура клиент-сервер выглядит так:

Client <-----> Server

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

Client A <----
              |
               ----> Server
              |
Client B <----

Если клиент A хочет отправить сообщение клиенту B, то клиент A отправляет сообщение на сервер с некоторой информацией, указывающей, что оно предназначено для клиента B. Затем сервер проверяет сообщение, определяет, что оно предназначено для клиента B, затем ретранслирует это сообщение через соединение с клиентом B.

Это фундаментальное определение клиент-серверной архитектуры. Существуют более продвинутые архитектуры, в которых клиент-сервер сочетается с одноранговой сетью, например, Skype. В гибридной системе соединение клиента с сервером обычно передает только управляющие сообщения (аутентификация и т. д.) и запросы информации о том, как напрямую связаться с другим клиентом. Преимущество такого подхода заключается в том, что он не требует, чтобы весь обмен данными между A и B проходил через сервер; И A, и B подключаются к серверу, но затем спрашивают сервер, как подключиться друг к другу напрямую, а затем используют это прямое соединение для связи с интенсивным использованием полосы пропускания.

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

person Adam Robinson    schedule 17.01.2011
comment
спасибо за ваш ответ ..... я просто хочу знать, как писать код на С#, потому что два приложения, работающие на двух разных машинах, могут взаимодействовать друг с другом через Интернет. я буду счастлив, если вы поможете мне в этом .... большое спасибо за ваше время ..;) - person Thomas; 17.01.2011