Откройте для себя локально работающий WCF из WP7

У меня есть служба WCF, работающая внутри службы Windows, и она находится в моей локальной сети. Я хочу иметь возможность обнаруживать WCF из моего приложения Silverlight на моем WP7 (в той же сети).

Я знаю, что в WCF есть функция обнаружения, однако для этого требуется UDP, который не поддерживается в WP7. Итак, есть ли другие способы обнаружить локальный WCF?

Я также не знаю до запуска WCF IP-адрес службы WCF.


person Vitalij    schedule 31.01.2012    source источник


Ответы (3)


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

  • Служба рабочего стола — служба Windows, на которой размещается WCF и небольшое приложение Socket, которое прослушивает определенный порт.
  • Клиент WP7 - перед подключением к WCF будет отправлена ​​широковещательная рассылка с использованием сокетов, чтобы узнать IP-адрес машины, на которой работает WCF, при получении ответа на подключение к WCF.
person Vitalij    schedule 01.02.2012

Для ссылки на службу WCF в проекте WP7 служба WCF ДОЛЖНА быть базовой конечной точкой.

person MyKuLLSKI    schedule 31.01.2012
comment
Да, я знаю об этом, поэтому я ищу другой способ открыть для себя WCF. - person Vitalij; 01.02.2012
comment
Другого пути нет. Базовая конечная точка для WCF, и если это не сработает, вам необходимо реализовать push-уведомления. - person MyKuLLSKI; 01.02.2012

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

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

person Emond Erno    schedule 01.02.2012
comment
Я думал об этом, но, к сожалению, нет возможности установить такой сервис. - person Vitalij; 01.02.2012
comment
Служба не обязательно должна быть службой WCF. Это может быть файл, расположенный в известном месте (файлообменник, ftp) - person Emond Erno; 01.02.2012
comment
Это хороший момент. Однако сеть будет домашней, поэтому пользователь будет тем, кто устанавливает программное обеспечение, и до этого я не буду знать, какой у него локальный IP-адрес. - person Vitalij; 01.02.2012
comment
Во время установки вы (программа установки) будете знать имя машины/IP-адрес. Нет ничего странного в том, что пользователь записывает имя/адрес и должен вводить адрес на других машинах. Это цена отказа от запуска службы, которая транслирует информацию. - person Emond Erno; 01.02.2012