возможно? Возможно, да, но это займет некоторую работу.
Для начала вам нужно написать собственный транспортный канал WCF, который обрабатывает специфику ваших протоколов на основе TCP / IP (то есть вам нужно написать весь код обработки сокетов и подключить его к модели канала WCF). Это связано с тем, что канал TCP в WCF не предназначен для такой работы, а использует относительно проприетарный и недокументированный проводной протокол.
Я не достаточно знаком с FIX, чтобы сказать, насколько он сложен, но есть некоторые ошибки, когда написание каналов WCF и документация в этой области невелики.
Вторая часть, с которой вам нужно разобраться, - это кодирование сообщений. Для WCF все сообщения являются XML. То есть, как только сообщение передается в стек WCF, оно должно выглядеть как информационный набор XML во время выполнения. FIX не использует XML (afaik), поэтому вам нужно его немного адаптировать.
Есть два способа обойти это:
Простой способ. Предположим, что сервер / клиент будет использовать определенный интерфейс и формат для данных, и ваш канал выполнит всю тяжелую работу по переводу сообщений FIX в / из этого формата. Простейшим примером этого может быть использование в коде WCF простого контракта на обслуживание, в котором один метод принимает строку, а затем просто инкапсулирует строку сообщения FIX в формат XML, который удовлетворяет сериализатору контракта данных для этого контракта. Тем не менее, пользовательский код все равно будет иметь дело с декодированием формата FIX позже.
Выполните всю тяжелую работу в пользовательском кодировщике сообщений WCF. Это немного сложнее, но потенциально чище и более пригодно для повторного использования (и вы можете делать более сложные вещи, такие как улучшение потоковой передачи и т. Д.).
Но главный вопрос в том, стоит ли это того. Каково ваше мнение о желании использовать WCF для этого? Использование модели программирования? Я думаю, что это важное соображение, но также имейте в виду, что абстракции, которые предоставляет WCF, имеют свою цену. В частности, некоторые аспекты WCF могут быть проблематичными, если у вас есть требования в режиме реального времени, что, как я понимаю, является распространенным явлением в той финансовой среде, которую вы рассматриваете.
Если это так, вполне может быть, что вам лучше обойтись, если пропустить WCF и придерживаться немного ближе к металлу. В любом случае вам нужно будет поработать с сокетом, так что здесь есть над чем подумать.
Надеюсь, это поможет:)