Использование WCF для самостоятельного размещения службы без IIS через общедоступный Интернет - PullRequest
0 голосов
/ 23 октября 2009

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

Проще говоря, я хотел бы написать два приложения, одно из которых работает как мастер (служба), а другое - как клиент. Суть в том, что главное сервисное приложение должно запускаться на любом базовом ПК - в основном людьми на своих домашних ПК без какого-либо хостинга или веб-сервисов. Например, он должен работать на Vista Home Basic в жилом доме по стандартному широкополосному кабельному модемному соединению кем-то с нулевыми знаниями в области ИТ. Второй момент заключается в том, что каждое приложение-служба должно быть отделено от любых других приложений-служб, которые также могут быть одновременно подключены к Интернету. Думайте об этом как о приложении чата, где один человек может начать сеанс чата на своем домашнем ПК. Затем другие могут подключиться к этому сеансу из Интернета (используя информацию для входа в систему, предоставленную другими средствами - например, электронной почтой, телефоном, текстом и т. Д.), И все могут обмениваться сообщениями. Кто-то, работающий только с клиентом, не может создать сеанс чата и может запустить клиент, только если у него есть правильный идентификатор сеанса. Как уже упоминалось, если какой-либо другой человек запускает такое же приложение-службу на своем домашнем ПК с другим идентификатором сеанса, то только те, кто ищет этот сеанс, смогут подключаться и видеть сообщения для этого сеанса. Существует бесконечное множество возможностей того, как ПК с запущенным сервисным приложением могут быть настроены для брандмауэров и доступных портов в Интернет, поэтому я полагаю, что необходимо использовать базовую привязку HTTP?

Итак, вопрос в том, как лучше всего реализовать это ... или, может быть, эта идея может быть реализована? Мне просто кажется, что у приложения-службы не было бы общедоступного адреса, который клиенты могли бы найти без какой-либо конфигурации в стиле сервера. Я внимательно изучил новую .NET Services Service Bus, которая позволяет открывать конечную точку службы в облаке (и я заставил ее работать в основном режиме), но это действительно кажется излишним для того, что должно быть очень простой набор приложений. Я посмотрел на конфигурации хостинга и классы PeerChannel, но я не уверен, что они могут выполнить то, что мне нужно.

Конечно, реализация на стороне клиента должна быть очень простой, если есть способ предоставить сервис Интернету.

Снова извините за недостаток знаний. Может быть (надеюсь?) Это легко сделать.

Спасибо

Стив Э.


Спасибо за быстрый ответ ...

Я предполагал, что будут некоторые пользовательские запросы на ПК из-за программных брандмауэров. Пока что я согласен с тем, что большинство обычных пользователей привыкли видеть, что Windows запрашивает их одобрение, когда приложения пытаются получить доступ к Интернету. Я надеялся, что смогу использовать одну конечную точку, и предположил, что это означало один порт для открытого канала. Было ли это неверное предположение? Подключается ли каждый клиент ко всем другим клиентам в комнате чата, используя другой порт, хотя это все тот же канал?

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

Сейчас я более пристально смотрю на технологии PNRP и PeerChannel. Это также выглядит многообещающе, но я все еще изучаю это. Знаете ли вы что-нибудь о PNRP и прямых связях с WCF?

1 Ответ

1 голос
/ 23 октября 2009

Это достаточно просто сделать в WCF. Ваши «клиентские» приложения (те, которые находятся на компьютере пользователя) смогут подключаться к чат-комнате или размещать ее. WCF может сделать это без каких-либо серьезных хлопот ... за исключением того, что приложения должны иметь возможность подключаться к Интернету. Обычно это означает, что пользователю придется разрешить приложению изменять конфигурацию брандмауэра.

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

10 000 футов:

  1. Пользователь устанавливает чат-клиент.
  2. Клиент чата запрашивает повышение прав, пользователь соглашается, клиент настраивает брандмауэр.
  3. Клиент чата проверяет наличие номеров на центральном сервере.
  4. Пользователь присоединяется к чату.
  5. Пользователь создает комнату, клиент чата уведомляет центральный сервер о новой комнате.
  6. Другие клиенты находят место на сервере и подключаются напрямую к пользователю.
  7. Пользователь закрывает комнату чата, клиент чата уведомляет центральный сервер о том, что комната больше не доступна.

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

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