3

FIX プロトコルを使用して TCP/IP 経由で外部システムと対話するシステムを構築しています。クライアントからサーバーへの通信に WCF を使用しました。クライアントとサーバーの両方を制御できましたが、外部の TCP/IP ベースのシステムには制御できませんでした。これはWCFで可能ですか?もしそうなら、コミュニティは私が正しい方向に進み始めるためのリンクを提供してくれますか?

残念ながら、私たちはまだ計画の初期段階にあるため、上記で提供されているもの以上の情報はありません. 私たちが知っていることは、システムが TCP/IP を介して私たちのシステムと通信する外部ベンダーがいるということです。これを学習の機会としてWCFを学びたいと思います。

4

4 に答える 4

3

可能?そうかもしれませんが、少し手間がかかります。

まず、TCP/IP ベースのプロトコルの詳細を処理するカスタム WCF トランスポート チャネルを作成する必要があります (つまり、すべてのソケット処理コードを作成し、それを WCF チャネル モデルにフックする必要があります)。これは、WCF の TCP チャネルがこの種の作業用ではなく、比較的独自仕様で文書化されていないワイヤ プロトコルを使用しているためです。

私は、FIX がどれほど複雑になるかを説明できるほど FIX に精通していませんが、WCF チャネルを作成する際にいくつか問題があり、その領域のドキュメントは適切ではありません。

対処する必要がある 2 番目の部分は、メッセージのエンコードです。WCF にとって、すべてのメッセージは XML です。つまり、メッセージが WCF スタックに渡されると、実行時に XML 情報セットのように見える必要があります。FIX は XML (afaik) を使用しないため、少し調整する必要があります。

これを回避するには、次の 2 つの方法があります。

  1. 簡単な方法: サーバー/クライアントがデータに特定のインターフェイスとフォーマットを使用すると仮定し、チャネルに FIX メッセージをそのフォーマットとの間で変換するという大変な作業をすべて行わせます。この最も単純な例は、WCF コードで単純なサービス コントラクトを使用し、1 つのメソッドが文字列を取得してから、そのコントラクトのデータ コントラクト シリアライザーを満たす XML 形式に FIX メッセージ文字列をカプセル化することです。ただし、ユーザー コードは、後で FIX 形式のデコードを処理する必要があります。

  2. カスタム WCF MessageEncoder ですべての難しい作業を行います。もう少し複雑ですが、よりクリーンで再利用しやすい可能性があります (ストリーミングの改善など、より複雑なことを行うこともできます)。

ただし、大きな問題は、これが価値があるかどうかです。これに WCF を使用したい理由は何ですか? プログラミング モデルの活用?これは重要な考慮事項だと思いますが、WCF が提供する抽象化には代償が伴うことにも留意してください。特に、非常にリアルタイムの要件がある場合、WCF のいくつかの側面は問題になる可能性があります。これは、あなたが見ている種類の金融環境では一般的であることを私は理解しています。

その場合は、WCF をスキップして、金属に少し近づけたほうがよいかもしれません。とにかくソケット作業を行う必要があるので、それはそこで考慮する必要があります。

お役に立てれば :)

于 2009-04-29T23:36:23.017 に答える
1

TCPとFIXタグを受け入れる以外は、相手の通信プロトコルがわからないので、少なくとも設定は簡単ではないと思います。

WCFアプリケーション内でTCP接続をソケットで開いてみませんか。それはより簡単な方法でトリックを行う必要があります。

于 2009-04-29T22:01:11.373 に答える
0

そう思います。私は、ほぼ正確にそれを実行するはずのシステムをほぼ動作させています(インターネットからのWCF over HTTP)。サーバープロバイダーはそれを許可したくないようだったので、それを機能させるにはその側で適切な権限が必要になります。

アップショット:理由がわかりません。

于 2009-04-29T22:02:15.177 に答える