質問

私はいくつかのアプリケーション「マスター」は、いくつかのタスクを実行して、状態の完全またはプロセスの失敗で戻って応答する「スレーブ」と呼ばれる均質なプロセスにコマンドを送信することにより、マスター・スレーブコマンドモデルを開発しています。彼らはまた、リクエストに応じて利用できるマスタにいくつかのデータを公開する必要があります。

何このモデルはWCFのように見えるのでしょうか?

マスタおよびスレーブの各インスタンスはthier独自のサービスをホストするのでしょうか?唯一のホストをマスターでしょうか?唯一の奴隷?私は、コールバック契約を使用すべきですか?データコントラクト?あるいは単にサービス契約ます。

注意点として、これは、低帯域幅、低強度、製品試験のために使用される内部のみ分布プロジェクトであり、「大きな需要が高い」プロジェクトとしてみなされるべきではない。

役に立ちましたか?

解決

必見 - - いくつかの形状または形態で

あなたは間違いなくサービス契約を持つことになります。これは、ちょうどあなたのサービスやそれに対する操作(メソッド)(OperationContract)を定義します。

それは内部の「舞台裏 - ファイアウォール」のシステムの場合は、

、あなたは、例えば、結合二重で見ることができますマスタースレーブコール、そしてバックに行うの二重チャネル上のスレーブレポートを持っています。箱から出して、二重をサポートする唯一のWsDualHttpBindingありますが、あなたは内部ているので、舞台裏 - ファイアウォール、あなたはそれがハードそれがで聞こえるかもしれないようではありません(独自のTCPベースの二重結合を作成する時に見たいと思うかもしれません最初の!)。

このシナリオでは、両方の関与のアプリは本当に同時にサーバとクライアントです。

あなたはいくつかの方法、形状でDataContractsを持っているか、マスターとスレーブ間の周りに移動されているデータを定義するために形成することになる - 。そう、再び、はい、あなたはデータコントラクトを持っている必要があります。

編集: もちろん、別のアプローチは、2つのMSMQメッセージキューを使用するかもしれません。マスターはスレーブが待機し、ジョブ要求をピックアップキュー、に彼の「仕事」の要求を廃棄します。スレーブが完了したら、それは順番にマスターがリスナーされている応答キューへの応答をドロップし、そのように行われているジョブの通知を受け取ります。

マルク

他のヒント

私は何を記述していることは、コールバック契約の複雑さを必要としない...ここでジェレミーに同意します。ワーカーノードは、単純に(...またはそのことについても、WSDLやREST Webサービス)WCFサービスを公開することができ、その後、コントローラは、単純に子ノードのそれぞれのURLを知っているし、ワーカーノードにメッセージを送信する必要があります。

あなたは、コントローラは、単一のメッセージを放送することができるようにしたいと労働者のすべてを持っている場合は、

は対応して何かをするノード(私は本当に私はずっと前にそれコントローラー/労働者を呼び出すに切り替え...マスタ/スレーブのアナロジーを嫌います)その後、あなたはWCF内で利用可能な多くの場合、過小評価P2Pチャネルを使用する場合があります、バックのグループに自分の進捗状況を投稿してください。これはほとんど話題/会話の区切りと同じように使用されているURLを一度にすべてのピアとしてお互いに話をするWCFで書かれたサービスのグループを可能にします。

//ラボ/コマンドのチャンネル:

したがって、たとえば、あなたはをnet.p2p上でコマンドを発行することがあります。唯一のコントローラはそのチャネル上でコマンドを送信しますが、ワーカーノードのすべてを聞きます。 //ラボ/ステータスのチャンネル:彼らは非同期的に自分のことをやって終わったら、彼らはをnet.p2pに戻って進捗状況を報告することができます。このアプローチの追加の利点は、(この機能が必要な場合)、個々の労働者は、他のすべての労働者が何をしているかを知るための能力を獲得だろうということです。

あなたは、同じコマンドを受け入れる2つのノードで終わること -

しかし、あなたがP2Pを使用している場合、あなたは競合に対処する必要がありますことを、心に留めておいてください。これは罰金であれば、P2Pはあなたのツールです。あなたはコマンドが発行され、彼らだけが(など、個々のテストスクリプトを実行するために、リモート・ノードを伝える可能性が高いシナリオ)自由になるように、個々のノードによって逐次ピックアップする必要があるなら、あなたはP2Pの代わりに結合MSMQを使用することができます。そして、労働者の全てが、キューからメッセージを受信し、あなたがより簡単に同じ要求を受け付ける複数の労働者の状況に対抗することができ、クライアントになります。

追加の参考のために: ブログ記事私は、ピアチャネルの上でしばらく前に書いています。

- これはあなたのために良いですリファレンスガイドにチャンネルの概念をピアにここから行くことができます。

する

スレーブ処理は、長い時間がかかる場合は、

、その後、コールバック契約は順序であるかもしれません。そうしないとあなただけの(それがタイムアウトしないように、あなたのWCFクライアントの設定を調整する必要がある場合があります)スレーブが完了するのを待っているマスターにブロックすることができます。

あなたの説明に基づいて、私はあなたが本当に唯一のスレーブノード上でWCFサービスをホストする必要があると思うとマスターはちょうど奴隷によって公開されるWCFサービスを消費するクライアントにすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top