2011-08-17 10 views
6

私は、TCP/IPまたはRS232経由でサーバと通信するクライアントデバイス(POSハンドヘルド)を持っています。プロトコルは与えられたバイナリ形式ですが、私は変更できません。私はそのデバイス用のサーバーを実装する必要があります。私の印象は、WCFは手で何かを実装するよりも良い選択であるということです。しかし、試してみるのはかなり時間がかかるので、WCFを細かく調整することが可能かどうかアドバイスをお願いしたいと思います。WCFを使用して特定のバイナリネットワークプロトコルを実装する必要がありますか?

私に似た質問がいくつか見つかりましたが、その場合OPは常にクライアントとサーバーを完全に制御できました。私のシナリオではそうではありません。

WCFが良いアイデアであるとすれば、いくつかの出発点は非常に高く評価されます。ほとんどのドキュメントはSOAP、REST、...に焦点を当てていますが、私が取り組まなければならない低レベルではありません。

答えて

4

長年にわたってWCFを使用していて(好きでも)、私はあなたのニーズに最適な選択肢ではないと思います。 Philが言及したように、それは低レベルのコミュニケーションではなく、ウェブサービスの周りにあります。これをWCFで実装するには、カスタムトランスポートを作成する必要があります。カスタムトランスポートは、ほとんどすべての低レベル(チャネルプログラミング)と同様に、多くのコードを必要とします。このトランスポートでは、デバイスプロトコルを理解するためにソケットを使用する必要があり、メッセージをプロトコルからWCFメッセージに変換する必要があります。

プロトコルがシンプルな場合は、「純粋な」ソケットベースの実装が最適な方法だと思います。 WCFソリューションでは、ソケットハンドリングコード(デバイスと通信する)が必要になりますが、WCFで使用される(SOAPに優しい)メッセージプロトコルに準拠する必要はなく、独自のメッセージタイプを作成できます。

WCFに既に慣れ親しんだ多くの異なる人に公開する場合、そのプロトコルを「話す」カスタムWCFトランスポートを実装して実装する場合に得られるメリットWCFトランスポートを書くための最初の(非常に高い)コストを負担する必要がありますが、後で人々はWCFが提供するすばらしい契約モデルを使用してそのデバイスのサービスを書くことができます。

2

WCFはそのままの学習曲線を持ちますが、非常に低レベルのものをたくさんカスタマイズする必要がある場合は、曲線が急峻になります。

また、WCFが作成された理由は、開発者が低レベルの実装の詳細を心配する必要がないようにするためです。両方の世界のベストを欲しがっているようです。つまり、あなたが望むように働くためにWCFと戦うためにあなたの時間のほとんどを費やすことになるでしょう。

免責事項:私はWCFに関する基本的な理解を持っていますが、私は専門家ではなく、間違っている可能性があります。

関連する問題