WCF и клиентское общение на собственной службе WCF
Я новичок в услугах WCF. Я работаю с WCF уже более двух месяцев и люблю его возможности. Я использую самостоятельно размещенный WCF в службе Windows. Привязка является netTCP, потому что клиент и служба находятся на одной машине. Мое общение дуплексное, и я использую сеанс WCF. Благодаря этим функциям одна из потребностей разработки для моего приложения заключается в том, что пользовательский интерфейс всегда должен быть подключен к службе. Я использую отдельный поток в своем пользовательском интерфейсе, чтобы всегда опрашивать состояние подключения, а также заново создавать и открывать канал в случае его появления. к ошибочному состоянию. Поскольку у меня есть асинхронные обратные вызовы от службы, клиент всегда должен быть подключен. Вот пара вопросов:
Можно ли использовать технику собственного хоста, зная, что клиент и сервис находятся на одной машине? Я использовал WCF для простоты взаимодействия между процессами.
Имеет ли смысл сохранять эту ветку активности от клиента или я должен использовать какую-то другую технику?
Я хочу стать лучше в использовании и настройке WCF. Есть ли хорошая книга или онлайн-материал для чтения о собственных услугах WCF?
Пожалуйста посоветуй.
Спасибо,
Subbu
1 ответ
Я думаю, что это абсолютно нормально, чтобы использовать хостинг с WCF. Например, я реализовал много сервисов, которые размещены в Windows Service. Я предполагаю, что вы говорите о том, что клиент и сервер размещены в разных процессах на одном компьютере? Если это так, то в идеале вы должны использовать двоичные над именованными каналами в ваших привязках.
Если клиент и сервер физически находятся в одном и том же процессе, вы можете использовать что-то вроде Null Transport Романа Кисса, чтобы уменьшить издержки сериализации. Его статью CodeProject можно найти здесь: http://www.codeproject.com/KB/WCF/NullTransportForWCF.aspx
Чтобы ответить на пункт 2, я предложил альтернативный подход в своем ответе на другой вопрос Stackover: сервер WCF net.tcp отключается - как правильно работать на стороне клиента?
Надеюсь это поможет.