Запуск прослушивателя WCF в приложении WPF - PullRequest
1 голос
/ 30 мая 2011

Мы хотели бы иметь возможность общаться с приложением WPF с сервера.

Возможно ли иметь прослушиватель / службу WCF в приложении WPF? А потом вызвать эту службу, чтобы открыть экран в приложении WPF?

Ответы [ 2 ]

3 голосов
/ 30 мая 2011

Возможно ли иметь прослушиватель / службу WCF в приложении WPF

Довольно просто создать прослушиватель / сервер службы WCF где угодно.

var servicehost = new ServiceHost(typeof(SomeService))
servicehost.Open();

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

Эта ссылка, по-видимому, охватывает настройку сети для примеров MSDN WCF и применяется как кХостинг IIS, как и ваш случай, WCF не-IIS:

http://msdn.microsoft.com/en-us/library/ms751527(v=vs.90).aspx

Кроме того, вы можете столкнуться с многопоточными сложностями, хотя вы столкнетесь с ними в любом случае, когдаВы пытаетесь обновить пользовательский интерфейс из фонового потока.Если у вас есть проблемы с этим, посмотрите на Dispatcher:

http://msdn.microsoft.com/en-us/magazine/cc163328.aspx

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

А затем вызвать эту службу, чтобы открыть экран в приложении WPF

WPF создает код, который можно вызывать более или менее таким же образомвы бы в WinForms.Например, вы все еще можете сделать звонок new MainWindow().Show().Поэтому просто добавьте такой код в реализацию вашего сервиса.

1 голос
/ 30 мая 2011

Да, вы можете разместить службу WCF в приложениях WinForms и WFP - MSDN содержит образец .В зависимости от того, как вы размещаете сервис, вам придется по-разному взаимодействовать с пользовательским интерфейсом - между хостингом в пользовательском интерфейсе и другим потоком есть разница, поскольку другие потоки не могут получить прямой доступ к элементам управления пользовательского интерфейса.

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