Возможно ли иметь прослушиватель / службу 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()
.Поэтому просто добавьте такой код в реализацию вашего сервиса.