C #, WCF, хотите создать приложение для чата, какую привязку я должен использовать?может быть несколько примеров? - PullRequest
1 голос
/ 09 марта 2011

Я с нетерпением жду создания своего рода чат-приложения с использованием C # и WCF, но перед тем, как начать, я хотел кое-что прояснить, чтобы меня не унесли в неправильном направлении.:)

  • приложение должно иметь возможность как создавать события (отправлять сообщения), так и прослушивать события (получать сообщения), поэтому, если я правильно понимаю, приложение должно быть и клиентоми сервер сразу?

  • какую привязку я должен использовать?Если я правильно понимаю, связывание basicHttp сложно настроить и используется, когда приложению WCF необходимо подключиться к приложению, отличному от WCF?В то время как для соединения двух приложений WCF лучше использовать NetTcpBinding?

  • как эти приложения находят друг друга, учитывая, что они работают на разных машинах?должен ли быть центральный сервер, к которому приложение должно было бы подключиться первым, говоря: «Я user123, мой IP - это то и то, я свободен для чата» и искать там другие IP-адреса пользователя?Или есть какие-то другие способы для приложений найти друг друга без центрального сервера?

  • Может быть, вы могли бы направить меня к некоторым примерам или учебникам по этой теме?(попробовал гуглить, не повезло).

Спасибо!:)

Ответы [ 3 ]

3 голосов
/ 09 марта 2011

Если ваши коллеги (машина, которая может работать как клиент и сервер) будут находиться за NAT / межсетевыми экранами, то вам будет очень и очень сложно создать приложение для чата с использованием WCF.Если одноранговые узлы будут все в одной сети, WCF будет работоспособен.

Чтобы написать приложение чата с нуля с использованием WCF, вы будете заново изобретать колесо.Почему бы не использовать существующий протокол, разработанный специально для таких целей, как XMPP.Есть библиотеки XMPP для .Net.Вам понадобится центральный сервер, но если вы используете XMPP, вы могли бы использовать его на одном из многих существующих бесплатных серверов.

0 голосов
/ 09 марта 2011

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

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

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

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

Если вы решите пройти через центральный сервер, то ваше приложение будет функционировать как клиент и, следовательно, будет проходитьчерез брандмауэры без проблем.Однако если вы подключаетесь напрямую к другому пользователю, обе копии приложения будут действовать как клиент и сервер (топология P2P), и, следовательно, могут возникнуть проблемы с брандмауэрами.Сказав это, вы можете назначить одно из приложений сервером, а другое - клиентом, и в этом случае только брандмауэр должен беспокоиться о брандмауэре.

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

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