問題タブ [duplex]
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.
c# - 二重コールバックは常に匿名です
私は WCF デュプレックス サービスとクライアントを作成しました。クライアント実装で .Demand() を呼び出そうとするまで、すべてがうまく機能します。サービスが匿名でコールバック メソッドを呼び出しているようです。サービスを正しく構成する方法が不足していると思います。
ServiceHost の作成に使用されるコード。
クライアントの作成に使用されるコード。
クライアントの実装:
ServiceHost が Windows 資格情報を使用してコールバックを正しく呼び出すように構成するにはどうすればよいですか?
wcf - WCFデュプレックスチャネルを介した長期的なコールバック契約-代替のデザインパターン?
レーダーガンからの速度測定値をデータベースに記録するWindowsサービスがあります。さらに、このサービスをWCFサーバーにしました。私は、サービスにサブスクライブし、特定の基準を満たす読み取り値があるたびにコールバックされるフォームとCFクライアントを持っています。
これは原則として機能しますが、しばらくするとチャネルがタイムアウトします。長時間実行される接続( http://blogs.msdn.com/drnick/archive/2007/11/05/custom-transport-retry-logic.aspxを参照)と二重HTTPコールバックにはいくつかの基本的な問題があるようです。 正しい解決策ではないかもしれません。WCFでパブリッシュ/サブスクライブパターンを実現する他の方法はありますか?
編集:2時間のタイムアウトがあっても、チャネルは最終的に危険にさらされます。このエラーが発生します:
セッションフルチャネルがメッセージの受信を待機してタイムアウトしたため、操作'SignalSpeedData'を完了できませんでした。タイムアウトを増やすには、構成ファイルのバインディングにreceiveTimeoutプロパティを設定するか、バインディングに直接ReceiveTimeoutプロパティを設定します。
これは、最後に成功した呼び出しの15分後に発生しました。セッションを開いたままにする代わりに、呼び出しごとに新しいセッションを再確立できるかどうか疑問に思っています。
serial-port - 半二重シリアル接続の意味は何ですか?
半二重シリアル接続と全二重シリアル接続を使用することの意味は何ですか?双方が同時にデータを送信しようとするとどうなりますか?破損したデータが両端に到着することになりますか?フロー制御はこれに役立ちますか?
c# - WCF: 同じ WCF サービスの複数のインスタンスにわたる通知に Duplex を使用する
アプリケーション (WPF) の複数のインスタンス間でWCF サービス (クラス)の単一のインスタンスSoapClient
を共有するための最良の方法は何ですか?
コールバックとの二重通信を有効にする必要があるため、これを行う必要があります。そのため、アプリケーションを使用する他のユーザーが新しいユーザーがログインするたびに通知を受けるように、サービスに「アプリケーションを登録」する必要があります。
ところで、通知が機能するためには、登録者が同じ wcf サービス インスタンスに登録する必要があることを確認したため、以下は取り消し線が引かれています。したがって、このインスタンスを共有する方法が必要です。
私は現在アプリケーションを開発しており、誰かがアプリケーションにログインするたびに、現在アプリケーションを使用しているユーザーに通知する方法が必要です。
WCF Duplex を使用してみましたが、動作させることができません...そして、その背後にある理由は、通知とサブスクリプションが WCF サービスの同じインスタンスに対して発生する必要があるためだと思います。
しかし、このアプリケーションは複数のユーザーの PC にデプロイされるため、この wcf サービスのインスタンスを 1 つだけ共有することはできません。(または私はできますか?)
SoapClient
すべてのユーザーに対してwcf サービス () の共通インスタンスを共有する方法はありますか? それとも、これについて間違った方法で行っていますか?
現在、アクセスするたびにwcfサービスの新しいインスタンスを送信するパブリックプロパティを介して、クラスライブラリを介してWCFサービスにアクセスしています。これが、通知が複数のインスタンスで機能しない理由だと思いますアプリケーション。
以下は、クライアント アプリケーション (wpf アプリ) がサービス メソッドにアクセスするために使用する (クラス ライブラリ内の) メソッドです。
this
メイン アプリケーション ウィンドウで、instanceContext パラメータとして渡される上記のオーバーロードされたメソッドから新しいインスタンスを取得しOpen
、通知を待機しますが、別のユーザーがアプリケーションの別のインスタンスからログインしても通知されません。
これは、サービス ログイン メソッドでレジストラ (抜粋) に通知する方法です。
c# - ネットtcpを使用したWCF二重サービス:「ストリームセキュリティが必要です...」
ユーザーが登録して、イベントが発生したときに通知を受け取ることができるサービスを作成しています。netTcpBinding でこれを実行しようとしていますが、ローカル マシンで実行している場合でもエラーが発生し続けます。
通知を送信しようとすると、タイムアウトになり、次のエラーが発生します。
http://www.w3.org/2005/08/addressing/anonymousでStream Security が必要ですが、セキュリティ コンテキストがネゴシエートされていません。これは、リモート エンドポイントがそのバインディングから StreamSecurityBindingElement を欠いていることが原因である可能性があります。
テストのために、コンソールでサービスをホストしています。コンソールが開き、WSDL を確認して svcutil を実行できます。ただし、クライアントを実行して通知を送信しようとすると、上記のエラーが表示されます。
ホスト App.config:
クライアントの App.config は次のとおりです。
現在、通知を機能させようとしているだけなので、多くの登録コードを省略しました。
顧客のドメイン (顧客のセットアップ) の一部ではない 2003 Server の Windows サービスでこれをホストする計画であり、クライアント コンピュータは顧客のドメインにあります。
編集:
ホストの App.config にバインディングを追加しました。
これでもエラーが発生し、同じ Steam Security is required エラー メッセージが表示されます。このアプリの小さなサブセットを新しいソリューションで試しています。
silverlight - Silverlight PollingDuplexHttpBinding とクロス ドメインの問題
Silverlight コンポーネントと WCF サービスを作成しました。どちらも、PollingDuplexHttpBinding を使用して通信し、プッシュおよびプル機能を有効にしています。
私たちのドメインでは完全に機能しますが、ドメイン外のホストは、公開されている Web サービスをまったく呼び出しません。
clientaccesspolicy ファイルが利用可能で、ルートからダウンロードできます。クロスドメイン ファイルも追加しました。したがって、サーバー A からサーバー B (同じドメイン内の A と B) へのポスト リクエストが、Silverlight クライアント (FireBug 内) から、A と C (C は外部サーバー) の間で見られます。 clientaccesspolicy ファイル。
PollingDuplexHttpBinding とクロスドメインはまだ可能ですか (これについては何も見つかりません)、それとも他に何か調べることができますか?
ajax - WCF & ASP.NET: AJAX を使用した二重サポート
WSDualHttpBinding、NetTcpBinding、および NetPeerTcpBinding バインディングはすべて、二重/コールバック サービス操作をサポートしていることを知っています。
ajax呼び出しで二重化が何らかの形でサポートされているかどうかを尋ねる人さえ、インターネット上のどこにも見つかりません。おそらく、これについて何かを見つけることができない理由は、質問を最もばかげた質問にする重要なWCFの概念を完全に誤解しているためです...
webHttpBinding バインディングは、<enableWebScript/>
クライアント側のプロキシ オブジェクトに必要な js を生成することを知っています。
二重サービスはそのコールバックサービスをホストする必要があり、クライアント側でそれを行う方法がないため、これは不可能ですか? (それが理にかなっていれば..)
私のアプリは次のように階層化されています。
1. WebSite1 - WebSite1.MyClientService への ajax 呼び出し。
2. WebSite1.MyClientService - MyServiceProxies DLL を参照する WCF セルフホステッド サービス。
3. MyServiceProxies DLL - ClientBase から継承するカスタム プロキシ (「サービス参照の追加」自動生成プロキシの代わりに使用)。これは、実際のサービス呼び出しを [MyService : WinService WCF Host EXE の IMyService] で base.Channel.OperationName() に委任するだけです。
4. WinService WCF Host EXE - これは Windows サービスとして、シングルトンとして実行され、マルチスレッド呼び出しを可能にします。WebSite1 からの呼び出しは、このシングルトンが保持するメモリ内の値を照会します。このシングルトンは最終的に、メモリ内に保持されているすべてのデータを別のデータ層を介してデータベースにコミットします。
WinService は、net.tcp を介した二重呼び出しを使用するように構成されています。WinService は、WebSite1 IIS アプリと同じマシンで実行されます。