8

WCFコールバックとイベントに関するチュートリアルがあることは知っていますが、実際に機能させるのに問題があるか、複雑すぎます。私は本当の初心者なので、現時点で具体的に理解しようとしていることを目的とした確かな初心者向けチュートリアルを誰かが知っているかどうか聞いてみたいと思います。私が初心者だと言ったように、間違った用語を使用した場合はご容赦ください(そして私を訂正してください)。

問題:

ここに画像の説明を入力してください

実際よりも複雑に見えるかもしれません。基本的に私が達成しようとしていることは次のとおりです。

  1. ローカルメモリ(たとえば、5つの整数の配列)を持ち、WCFサービスを実行しているホスト。これは、クライアントからのクエリをリッスンし、これらの整数の1つが変更されたときにクライアントに更新(イベント?)を起動します(コマンドプロンプトやSet()を介したユーザー入力などの外部ソースから)。
  2. これらの5つの整数のいずれかを返すか、ホスト配列の特定のインデックスにサブスクライブするために直接クエリを実行できるクライアント。

私は何ができますか:

接続を設定できますが、サービスはスタンドアロン機能に限定されています。クライアントは「クエリ」を実行できますが、リモート関数呼び出しに制限されます(「追加」など、すべてのパラメーターが関数とともに渡され、処理が内部で実行されます)。

私が理解しようとしていること:

  1. サービスコントラクト関数からホストメモリに保持されているいくつかの変数にアクセスするにはどうすればよいですか?たとえば、ホストのアプリケーションメモリに格納されているものを返すだけのクライアントGetInt()からメソッドを呼び出すにはどうすればよいですか?
  2. ホストからクライアントに「メッセージ」をプッシュするにはどうすればよいですか?たとえば、ホストで、TellClient(int x)を呼び出します。これにより、クライアント側で関数が呼び出されますか?これは、両側でサービスを実行しなくても可能ですか?

TLDR:

ホスト:サービス<->クライアント。クライアントが関数を呼び出さずに(ポーリングやクエリなしで)データ(単にint)をクライアントにプッシュする方法はありますか?静的メンバーを使用せずに、WCFサービスアクセス変数をホストアプリケーションのインスタンスに格納する方法はありますか?これは簡単な方法で達成できますか?

あなたの助けと時間をありがとう、私は本を書いたことを知っています。 誰かが素敵なチュートリアルを知っているなら、私にそれらを教えてください。 しかし、お願いします-クライアントがホスト上でaddを呼び出して結果を返すAdd(int x、int y)の例を指さないでください-私はすでにこれを数回繰り返しましたが、それは私が理解するのに役立ちませんWCFの実際の機能。この時点では、私は実際に深刻なことを成し遂げようとはしていません。WCFで何ができるかを学ぶことができるように、それを単純に保つように努めています。また、ドキュメントが非常に役立つとは思っていません。みなさん、ありがとうございました。

4

2 に答える 2

7

通常、WCFは、クライアントが要求を行う要求応答方式で使用されます。およびサーバーの応答。達成したいのは「プッシュアンドプル」サービスです。またはMicrosoftの用語ではデュプレックスサービス。

デュプレックスサービスでは、クライアントはサービスに接続するだけで、サービスはそれらを内部リストに登録します。そして、イベント(または他の何か)が発生するたびに、登録されたクライアントにメッセージを送信します。あなたの質問の文脈におけるWCFの重要な用語は、「二重サービス」です(グーグルで多くの結果を見つけることができます)。次のチュートリアルを参照してください。msdnまたは codeproject

質問の2番目の部分では、答えは「はい」です。しかし、これはそれほど単純ではありません。あなたはいくつかの「wcfの振る舞い」を書く必要があります、例えば、IInstanceProviderあなたはあなたを助けるかもしれません。すべてのリクエストについて、必要なパラメータをサービスインスタンスに挿入して、自分でサービスインスタンスを作成することができます。以下を参照すると役立つ場合があります:stackoverflowまたはmsdn

質問は少し広いので、これが直接の答えであるかどうかは100%わかりません。しかし、少なくとも提供されたキーワードを使用すると、正しい方向を見つけることができます。

于 2012-06-04T14:40:07.653 に答える
3

この記事はもう試しましたか? http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S6。コールバックについてはまともな説明だと思いました。「ポーリングやクエリなし」の要件に対するソリューションであるパブリッシュ/サブスクライブフレームワークについて説明します。

于 2012-06-04T14:37:57.367 に答える