問題タブ [wcf-callbacks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1746 参照

c# - 二重コールバックは常に匿名です

私は WCF デュプレックス サービスとクライアントを作成しました。クライアント実装で .Demand() を呼び出そうとするまで、すべてがうまく機能します。サービスが匿名でコールバック メソッドを呼び出しているようです。サービスを正しく構成する方法が不足していると思います。

ServiceHost の作成に使用されるコード。

クライアントの作成に使用されるコード。

クライアントの実装:

ServiceHost が Windows 資格情報を使用してコールバックを正しく呼び出すように構成するにはどうすればよいですか?

0 投票する
2 に答える
17681 参照

wcf - サーバーからWCFのすべてのクライアントに通知メッセージを送信するにはどうすればよいですか(ブロードキャストと言えます)?

net tcp WCF サービスからすべてのクライアントに毎秒通知メッセージを送信したいのですが、ブロードキャストできますか?

役立つ回答の後

接続されているすべてのユーザーに通知(ハートビート)を送信する次のメソッドを作成しました

クライアントがアプリケーションを閉じる可能性があるため、コールバック メソッドを呼び出すことが心配ですが、try catch を使用して処理し、タイムアウトを減らし、ブロードキャストを並行して送信したので、それで十分ですか?

0 投票する
1 に答える
897 参照

c# - サーバー上のサービス間で通信する WCF

WCF コールバックを使用して、会社の LAN 内にアラート タイプのシステムを実装しています。サブスクライブ メカニズムなどがあります。このチュートリアルを出発点として使用しましたが、バインドを wsDualHttpBinding ではなく NetTcpBinding に変更し、Windows サービスで自己ホストしています。

それは非常にうまく機能していますが、質問があります。私のクライアントのほとんどは、コールバックを必要としません。それらは、コールバックが有効な「通知」アプリケーションを実行し、そのタイプのアラートにサブスクライブしているクライアントに渡される一方向のアラートをサーバーに送信するだけでよいさまざまなデスクトップ アプリケーションです。

ここでは何も気にしないかもしれませんが、私の WCF サービスはコールバックを実装しているため、コールバックが必要かどうかにかかわらず、すべてのクライアントはコールバック オブジェクトを実装する必要があります。一方向のクライアントがコールバックを行わないサービスと通信する場合、より整然としたソリューションのように思えます。

だから... WCF サービスでコールバックなしで別のエンドポイントを作成しました。シンプルな一方向のメソッド呼び出しだけです。それは機能しますが、私の問題は、受信したメッセージをコールバック対応サービスに渡す方法がよくわからないことです。

私のWindowsサービスには次のようなものがあります:

sendonly クライアントによって呼び出される SendingService メソッドでは、これを実行できると思いました。

SendMessage() は、サブスクライブしたクライアントにコールバック メッセージを送信します。残念ながら、myNotifyHost.SingletonInstance は、クライアントが接続されてコールバックを待っている場合でも常に null です。そのプロパティの意味を誤解していると思います。NortifyService には次の属性があります

2 つのサービス間で通信する方法はありますか? 私はこれをあきらめて、1 つのサービスに固執し、それを必要としないクライアントに意味のないコールバック クラスを実装することで生きていかなければなりません。この時点では大したことではありません。それは、私の WCF の理解に関係しています。

ありがとう

0 投票する
2 に答える
1243 参照

c# - WCFのコールバック?

WCFでCallBackをイベントやデリゲートで流暢に使用するにはどうすればよいですか?

クライアントがクライアントの要求または条件の一致を与えると、サービスはクライアントから与えられた条件または要求のイベントを自動的に発生させます。

どうしてそれは可能ですか?

0 投票する
2 に答える
1609 参照

wcf - WCF から ASP.NET へのコールバックは可能ですか?

別のボックスのIISでホストされているWebサービスと、別のボックスのWindowsサービスでホストされているWCFサービスがあります(N層アプローチ)。ここで、Web サービスは WCF サービスのクライアントです。ファイルをアップロードする要求は、IIS がホストする Web サービスに届きます。IIS がホストする Web サービスは、代わりに WCF サービスを呼び出し、実際のアップロードを行います。ここまでは順調ですね。アップロードが完了すると、WCF サービスがコールバックを実行します (コールバックを辞書に保存し、(InstanceContextMode=InstanceContextMode.PerSession, ConcurrencyMode=ConcurrencyMode.Multiple) を使用しました)。WCF サービスがコールバックを送信します。トレース ビューアーでは、ASP.NET がコールバックを受信したように見えますが、ブラウザー (これはエンド ユーザーです) のアップロード ページは完全にフリーズします。larsw による ChunkingChannel バインディングを使用しています。

まず第一に、John Saundars がこのリンクで述べたように、上記のシナリオを実装することはまったく可能ですか?

「OperationContext.Current.GetCallbackChannel」は実際に何をしますか?

助けてくれてありがとう。

0 投票する
1 に答える
994 参照

wcf - UnityがWCFInstanceContextの実装を正しく解決できません

Unity2.0を介してデュプレックスWCFサービス用にクライアントをセットアップしようとしています。そのためには、CallbackContract ---の実装をに挿入しますIUpdateClientInstanceContextこれは、サービスプロキシ(この場合は、DuplexClientBase<IUpdateService>呼び出されたのサブクラス)に挿入されUpdateProxyます。

私が遭遇する問題は、Unityコンテナに格納されているプロキシを使用してクライアントをサービスからの更新にサブスクライブしようとすると、次の例外が発生することです。

ChannelFactoryに提供されるInstanceContextには、CallbackContractType'..Services..ServiceContracts.IUpdateClient'を実装しないUserObjectが含まれています。

私は次のようにプロキシにアクセスしています:

私のUnity構成を考えると:

UpdateServiceクラスを解決すると、次のようになります。

UnityコンテナはInstanceContext(configで「instanceContext」として登録されている)をインスタンス化し、その際、「updateClientImpl」として登録されている型をインスタンス化する必要があります。これは実際には実装さIUpdateClientimplementationれており、それをパラメータとしてInstanceContextのコンストラクタに渡します。 。

それでも、上記のようなエラーが発生します。

まとめ(別名「tl; drバージョン」): UnityコンテナがInstanceContextを解決するとき、実装が正しく作成されていないようです。これが構成のエラーなのか、それともUnityコンテナーが一連の依存型を解決する方法を根本的に誤解しているのかはわかりません。これに関するガイダンスは役に立ちます。

0 投票する
1 に答える
1243 参照

javascript - Javascript 対応の WCF でのエラー処理?

Javascript に公開されている WCF サービスでコールバック関数を使用する方法に関するドキュメントはありますか? メソッドが起動しない理由について、FailureCallback から情報を取得したいと考えています。

つまり、次の JavaScript コードがあります。

wcfFailCallback を実装するにはどうすればよいですか?

0 投票する
1 に答える
3676 参照

c# - WCF インスタンス コンテキスト エラー

パブリッシャーとサブスクライバーの概念は、WCF、パブリッシャー (サーバー) を使用して WCF サービスで開発し、サブスクライバー (クライアント) を Windows アプリケーションで開発します。プロキシを作成して実装するパブリッシャーにエラーが発生しました

ChannelFactory に提供された InstanceContext には、CallbackContractType 'IRegistrationCallback' を実装しない UserObject が含まれています。

サーバーコード:

App.Config

プロキシ コード

プロキシ構成ファイル

クライアントコード

0 投票する
1 に答える
745 参照

wcf - 信頼できるセッションとコールバックを使用した WCF4 ルーティング

私がやろうとしていること、および関連する環境/状況の説明から始めます。

.NET 4 を使用して実装した既存の WCF サービス (Windows サービスとしてホストされている) を使用しています。このサービスは、net.tcp と信頼できるセッション、およびクライアント アプリケーションへのコールバックを利用します。WCF サービスとクライアント アプリケーションは、同じネットワーク ドメイン (Domain_A と呼びます) で動作し、適切に動作します。

既存:

私が実装しようとしている新しい機能は、(WCF 4 を介した) ルーティング サービスの機能です。Domain_B でも実行される Domain_A で実行される WCF サービスの同一のコピーがあります。net.tcp および mex エンドポイントに必要なポートは、各ドメインの 2 台のコンピューター間で開かれ、反対側のドメインから各サービスのメタデータに正常にアクセスできます。

私が確信が持てないのは、サービス要求のルーティングに関する限り、どのルートを (アーキテクチャ的に) 取るべきかということです。クライアントによって行われた特定の要求は、Domain_A のサービスのみが応答でき、その他の要求は Domain_B のサービスのみが応答できます。宛先サービスは、各サービス呼び出しで (クライアントから) 渡されるパラメーターによって決定されます (または決定される可能性があります)。また、クライアント アプリケーションは Domain_A からのみ実行されます。

必要な機能:

私の最初の質問: ルーティングに関する限り、上記の「必要な機能」を実装するための最良のルートは何ですか (フィルタリング戦略、エンドポイント/コントラクトの種類など)? 私はルーティング サービスに不慣れで、私の要件に合った明確で簡潔な回答や例を見つけることができませんでした。

2 番目の質問: フィルタリングの質問に加えて、信頼できるセッションとコールバックを使用する WCF4 ルーティング サービスの例を教えてください。IDuplexSessionRouter について簡単に言及する以外に、多くのことを見つけることができないようです。IDuplexSessionRouter エンドポイントが最適な方法である場合、コールバックを実装する例を見つけることができませんでした。

ヘルプや情報をお寄せいただきありがとうございます。上記のことを明確にする必要がある場合はお知らせください。

0 投票する
1 に答える
534 参照

wcf - net.msmq エンドポイントのコントラクトを実装する WCF サービス オブジェクトは、net.tcp エンドポイントのコールバック コントラクトも実装できますか?

MSMQ ベースの WCF PubSub を実装しようとしています。net.msmq が一方向であることは理解しています。ただし、基になるキューから読み取るための net.msmq エンドポイントと、リスナーがコールバックでサブスクライブするための net.tcp エンドポイントを実装するために単一のサービス オブジェクトを使用すると、一方向 vs.双方向、DuplexChannelFactory、DuplexClientBase など。

これを実装する唯一の方法は、net.msmq キュー読み取りサービスを net.tcp パブリッシャー サービスのクライアントにし、メッセージをパブリッシュするのではなく、新しいメッセージがキューから読み取られたときにパブリッシャーに通知することです。内部のサブスクライバーに。または、レシーバーで net.msmq を使用せず、代わりに単純な古い MessageQueue オブジェクトを使用するようにします。