2010-04-20 6 views
1

Я новичок в службах WCF. Я работаю с WCF уже более двух месяцев и люблю его возможности. Я использую автономный WCF в службе Windows. Связывание является netTCP, потому что клиент и служба находятся на одной машине. Мое сообщение - дуплекс, и я использую сессию WCF. С этими функциями одной из требований к дизайну для моего приложения является то, что пользовательский интерфейс всегда должен быть подключен к сервису - я использую отдельный поток в своем пользовательском интерфейсе, чтобы всегда проверять состояние соединения и воссоздавать и открывать канал в случае его к неисправному состоянию. Поскольку у меня есть асинхронные обратные вызовы из службы, клиент всегда должен быть подключен. Вот пара вопросов:WCF и общение с клиентом на самообслуживании WCF

  1. Можно ли использовать технику самообслуживания, зная, что клиент и служба на одной машине? Я использовал WCF для облегчения взаимодействия между процессами.

  2. Имеет ли смысл держать это в состоянии поддерживать поток от клиента или использовать какую-либо другую технику?

Я хочу улучшить использование и настройку WCF. есть ли хорошая книга или онлайн-материал для чтения на самообслуживаемых WCF-сервисах?

Пожалуйста, совет.

Спасибо,

Subbu

ответ

2

Я думаю, что это абсолютно нормально использовать себя хостинг с WCF. Например, я реализовал множество служб, размещенных в службе Windows. Я предполагаю, что вы говорите о том, что клиент и сервер размещаются в разных процессах на одной машине? Если это так, то в идеале вы должны использовать бинарные по именованным каналам в своих привязках.

Если клиент и сервер и физически находятся в одном процессе, то вы можете использовать что-то вроде Null Transport от Roman Kiss, чтобы уменьшить накладные расходы на сериализацию. Его статью CodeProject можно найти здесь: http://www.codeproject.com/KB/WCF/NullTransportForWCF.aspx

Чтобы ответить на пункт 2, я предложил альтернативный подход в моем ответ на другой вопрос: Stackover WCF net.tcp server disconnects - how to handle properly on client side?

Надеется, что это помогает.

+0

Да, служба wcf и клиент находятся на двух отдельных процессах. Поскольку оба процесса общаются друг с другом, я организовал службу WCF в каждом и использовал клиентов wcf с обеих сторон из-за необходимости асинхронной связи. Я использую net tcp binding. Иногда я получаю исключение от клиента wcf, говоря «Соединение с сервером прерывается ..... таймаут 2: 59: 999 .....», и когда я проверяю состояние клиента, его фактическое значение в открытое состояние. Как это возможно? Связано ли с этим сетевое привязку tcp? – Subbu

Смежные вопросы