Wenn Sie sich in WCF wohl und produktiv fühlen, gibt es möglicherweise keinen starken Grund, etwas anderes zu verwenden. Ich denke sicherlich, dass WCF ein guter Ausgangspunkt ist, denn wenn Sie dem Vertragsmuster folgen, ist es ein einfaches Muster, um es auf die Arbeit mit anderen Systemen umzustellen, falls dies erforderlich sein sollte.
Für eines meiner eigenen Projekte habe ich mit einem WCF-Prototyp begonnen. Als ich in die "letzte Meile" einstieg, stellte ich fest, dass ich meistens gegen WCF kämpfte, um Dinge zu erledigen. Ich hatte insbesondere Probleme mit dem Matchmaking von Spielen im Peer-to-Peer-Stack von WCF, was mir nicht die Tools gab, die ich brauchte. In diesem Projekt wechselte ich schließlich zur XNA-Netzwerkbibliothek, die mir das Xbox-ähnliche Matchmaking (und GamerTags und so weiter) gab, das ich suchte und (schlecht) versuchte, in WCF zu emulieren. (Natürlich geht die Netzwerkbibliothek von XNA davon aus, dass Sie in einem XNA-Spiel arbeiten, und unterstützt die Veröffentlichung des Spiels unter Windows ohne GfW Live-Vertrag leider immer noch nicht.)
Ich habe beim Wechsel von WCF zu XNA Net nicht so viel von meinem Netzwerkcode berührt, weil sich die Verträge selbst (die Schnittstellenklassen) nicht allzu sehr geändert haben (außer das Löschen der WCF-Attribute). Das Schreiben von Reader / Writer-Klassen, die meine Verträge implementiert oder verbraucht haben, war ziemlich einfach. Ich hätte wahrscheinlich die Unterstützung für beide mit ein wenig #if WINDOWS
Mangeln behalten können , aber ich hatte beschlossen, die WCF-Unterstützung zu diesem Zeitpunkt einfach einzustellen, weil dies die Dinge in diesem Projekt vereinfachte. Vielleicht interessant, um andere Projekte direkt mit XNA Networking zu starten, habe ich immer noch etwas von WCFs schnittstellen- / proxygesteuertem "Vertrags" -Muster verwendet. Ich wollte eigentlich einen Blog-Beitrag zu diesem Thema schreiben, weil ich denke, dass es ein gutes Muster ist, dem man folgen sollte.