Обычно канал WCF TCP устанавливает соединение с хостом, а затем позволяет выполнять вызовы методов через него.
Я хотел бы иметь службу, которая устанавливает исходящие соединения с клиентами, но как только соединение будет установлено, клиенты смогут выполнять вызовы методов для моей службы, как если бы это было обычное соединение.
Я подозреваю, что это какой-то специальный канал, но подумал,
а) это уже было сделано
б) были ли какие-либо подводные камни, которые я должен попытаться избежать
Обратите внимание - я говорю не о обратном вызове в дуплексном стиле, а о том, что клиент и сервер продолжают разговор в обычном стиле, когда сервер отвечает на запросы клиентов через стандартный диспетчер wcf - только отправитель базового TCP-соединение является сервером, а не клиентом.
Сиз предполагает, что это так же просто, как использовать дуплексный контракт. Чтобы немного расширить требования:
а) Клиенту запрещено устанавливать соединения с сервером. Поэтому, если дуплексный канал устанавливает отдельное TCP-соединение, это не сработает. Я думаю из моих тестов, что он не разделяет исходное соединение под tcp (кто-нибудь может подтвердить?)
b) На сервере есть несколько служб, которые клиент должен вызывать, поэтому механизм обратного соединения «обратного вызова» будет неудобным, так как для их получения потребуется много вызовов в стиле «регистрация». настроить. В идеале я хотел бы настроить несколько служб одновременно - возможно ли это с помощью этого подхода?