Архитектурное решение для протокола связи клиент-сервер - PullRequest
4 голосов
/ 10 мая 2010

Этот вопрос на самом деле довольно общий, но мне действительно трудно найти хороший ответ или пример того, как это следует сделать.

Мы пишем простое многопользовательское приложение для совместного просмотра веб-страниц, и у нас возникают некоторые проблемы, решающие, что использовать для протокола связи. Мы разрабатываем в C # под Mono, надеясь в конечном итоге сделать его кроссплатформенным.

Связь, вероятно, будет состоять из сообщений, таких как: регистрация пользователя в сеансе (клиент-сервер), уведомление клиентов о новом подключенном пользователе (сервер-клиент), запрос загрузки страницы (клиент-сервер), и т.п. У нас есть следующие идеи:

  • XmlСериализация расширений базового класса сообщений

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

  • Двоичная сериализация в том же случае

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

  • Буферы протокола Google

  • WCF

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

и, возможно, другие, которые я пропустил.

Каким был бы хороший чистый способ сделать это?

1 Ответ

2 голосов
/ 10 мая 2010

WCF - дает вам платформу.

Затем используйте JSON и REST для реального API (опции, которые вы можете использовать в WCF). Таким образом, вы можете в основном «работать» в javascript.

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

...