Possible? Peut-être que oui, mais ça va prendre du travail. Pour commencer, vous devez écrire un canal de transport WCF personnalisé qui gère les spécificités de vos protocoles TCP/IP (vous devrez écrire tout le code de gestion de socket et le connecter au modèle de canal WCF) . C'est parce que le canal TCP dans WCF n'est pas pour ce genre de travail, mais utilise un protocole de fil relativement propriétaire et non documenté.
Je ne connais pas suffisamment FIX pour dire à quel point ce serait complexe, mais il y a quelques pièges quand on écrit des canaux WCF et la documentation dans ce domaine n'est pas géniale.
La deuxième partie à traiter est l'encodage des messages. Pour WCF, tous les messages sont XML. Autrement dit, une fois qu'un message est transmis à la pile WCF, il doit ressembler à un infoset XML au moment de l'exécution. FIX n'utilise pas XML (afaik), vous devrez donc l'adapter un peu.
Il y a deux façons dont vous pouvez le contourner:
La manière simple: Supposons que le serveur/client utilisera une interface spécifique et le format des données, et que votre canal tout le travail dur de traduire les messages FIX vers/depuis ce format. L'exemple le plus simple serait que votre code WCF utilise un contrat de service simple avec une méthode prenant une chaîne, puis encapsulant simplement la chaîne de message FIX dans le format XML qui satisfait le sérialiseur de contrat de données pour ce contrat. Cependant, le code utilisateur devra encore traiter du décodage du format FIX plus tard.
Effectuez tout le travail dans un MessageEncoder WCF personnalisé. C'est un peu plus complexe, mais potentiellement plus propre et plus réutilisable (et vous pourriez faire des choses plus complexes comme un meilleur streaming et ainsi de suite).
La grande question est de savoir si cela en vaut la peine.Quel est votre raisonnement pour vouloir utiliser WCF pour cela? Tirer parti du modèle de programmation? Je pense que c'est une considération importante, mais gardez également à l'esprit que les abstractions fournies par la WCF ont un prix. En particulier, certains aspects de la WCF peuvent être problématiques si vous avez des besoins très en temps réel, ce que je comprends est commun dans le type d'environnement financier que vous regardez.
Si tel est le cas, il se peut très bien que vous seriez mieux servi en sautant WCF et coller un peu plus près du métal. Vous aurez besoin de faire le travail de socket de toute façon, donc c'est quelque chose à considérer là.
Hope this helps :)
+1 ... une bonne question pour ceux qui veulent mélanger WCF et TCP/IP avec des sockets. –
Nous avons entendu dire que WCF peut communiquer sur de nombreux types de liaisons et ne jamais avoir à changer du tout le modèle de programmation . Mais si nous pouvons seulement utiliser WCF avec des systèmes où nous avons le contrôle sur les deux systèmes connectés, peut-être avons-nous mal compris la valeur de WCF – MedicineMan