問題タブ [channelfactory]
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.
wcf - メソッドが表示されない場合、WCFプロキシはどのようにICommunicationObjectを実装しますか?
WCF チャネル (ChannelFactory を介して作成) はどのように ICommunicationObject を実装しますが、プロキシを ICommunicationObject にキャストしない限り、Close() メソッドを公開しませんか? それは理にかなっていますか?
今日の帰り道、ふとそんなことを考えてしまったのですが、頭に浮かびませんでした。多分私は間違った質問をしていますか?たぶん私は愚かな質問をしていますか?:)
忍術の一種でしょうか?
c# - FaultExceptionをスローしたときにWCFチャネルが5回再試行する
DuplexChannelFactory生成されたプロキシではなく、を使用してWCFクライアントチャネルを作成しています。
FaultException<MyFault>特定の方法については、サーバー側で既知のものをスローしています。必要に応じて、サービスインターフェイスをマークアップしました[FaultContract(typeof(MyFault))]。
クライアント側では、これをキャッチしFaultException<MyFault>てエラーを表示します。
これはすべて問題なく機能しますが、何らかの理由で、WCFはクライアントコードに制御を戻す前にサービス呼び出しを5回再試行しています。これにより、クライアントで顕著な遅延が発生しています。
デバッガーは、コードの次の行に進む前に、クライアントコードのサービス呼び出しで5回中断します。それに踏み込むことはできませんが、呼び出しスタックは、WCFの奥深くで例外がスローされていることを示しています。
サービス側のブレークポイントは1回だけ起動します。
制御が私に戻ったら、チャネルに障害は発生しません。
デバッガーの出力は次のことを示しています。
これは正常な動作ですか?予想される既知の障害を返すときに、WCFが再試行するのはなぜですか?
wcf - WCFには、作成されたチャネルに関連付けられているファクトリを取得する方法があります
WCFを使用して、サーバーアプリとクライアントアプリの間に接続を作成しています。
を使用しているので、次の方法NetTcpBindingで作成されたチャネルを存続させたいと思います。
サーバーと通信するために、プロキシインスタンスをアプリに取り込みます。ある時点で、このプロキシを別のファクトリで更新します。しかし、私はそれを処分することによって、最初の工場から資源を解放したいと思います。しかし、私は工場を管理し、参照を維持したくありません。
プロキシインスタンスを使用してチャネルアソシエイトを取得して破棄する方法はありますか?
好き ...
ありがとう
c# - チャネル ファクトリを正しく閉じる方法は?
channelFactory を正しく閉じる方法を知りたいです。実際、私は使用しています:
しかし、ServiceHost 側では、未処理の例外がドメイン レベル (アプリのトップ レベル) に到達します。サービス ホストが例外をキャッチせず、構成した IErrorHandler で例外を処理しない理由がわかりません。
これは、ErrorHandler を構成する方法です。
httpclient - Netty - 同じ channelFactory を使用すると、3 つの応答しか処理されない
Netty に基づいて HTTP クライアントを作成するように割り当てられましたが、いくつかの問題があり、答えがあることを願っていました。
NIO を最大限に活用するために、同じ channelFactory を使用したいと考えました。つまり、すべての接続は同じボス スレッドによって処理され、同じワーカー スレッド プールに割り当てられます。
私が抱えている問題は、3 つのワーカーを使用すると、3 つの操作しか取得できず、プロセスがスタックすることです。応答の処理後にチャネルを閉じたにもかかわらず、ワーカー スレッドが次の割り当てのために解放されていないようです...
後でブートストラップに割り当てる静的 channelFactory を定義した方法は次のとおりです。
wcf - WCF ChannelFactory IDuplexSessionChannel
ChannelFactory生の石鹸リクエストを送信して外部サービスと通信するためにを使用しています。を使用するNetTcpエンドポイントがありますIDuplexSessionChannel。IRequestChannel/IRequestSessionChannelusingを作成しようとしましたbinding.BuildChannelFactory<T>()が、機能しませんでした(例外をスローしました)。私がオンラインで読んだことから、デュプレックスチャネルはリクエストチャネルのように使用でき、サービスメソッドを呼び出してすぐに応答を得ることができます。以下のコードがそれを達成するかどうか知りたいです。ChannelFactoryとの例を見るためにどこでも検索しましIDuplexSessionChannelたが、何も見つかりませんでした。最後に、これがIDuplexSessionChannelではなくIDuplexChannelである場合、一方はセッションフルで、もう一方はそうではないため、実装は異なりますか?
これが私の設定ファイルです:
c# - ChannelFactory と自動生成プロキシのエラー処理
私は最近、Visual Studio から自動生成されたコードに頼るのではなく、自分の WCF サービスを呼び出す独自の ChannelFactory ラッパーを書き始めました。
以前は、自動生成されたプロキシを使用して、エラー チェックのためにこれを行うことができました。
ChannelFactor でこれをどのように処理すればよいですか? 何か問題が発生した場合にチャネルを処理し、再作成するためのベスト プラクティスは何ですか? たとえば、断続的なネットワーク接続、セッション タイムアウトなどです。
これは私のコードが現在どのように見えるかです:
ProxyBase.cs からのスニペット - チャネルの作成
UserManagementServiceClient.cs - IUserManagementService は WCF コントラクトです
そして最後に、これが私の MVC プロジェクトでの呼び出し方です
そのため、現在、デフォルトの 10 分間のセッションが開始されるたびに、チャネルが既に閉じられているため、エラーが発生します。
ネットワークの切断やセッションのタイムアウトなどを処理するようにコードを強化するにはどうすればよいですか?
wcf - タスク非同期パターンとWCFのChannelFactoryを適用する方法?
.NET 3.5(現在は.NET 4.0で再コンパイル)上に2008年に構築された堅牢なWCFクライアントがあり、net.tcpバインディングを介して独自のWCFサービスと通信します。堅牢なクライアントは、ChannelFactory <IOurServiceInterface>()を使用してサービスプロキシを生成します。このプロキシを介して、現在、サービスへの同期呼び出しを行います。各呼び出しから結果が返されます。一方向の呼び出しはありません。
.NET 4.5 / C#5に移行しており、async / await/TAPを使用してクライアントを非同期にしたいと考えています。クリーンなコードと優れたランタイムパフォーマンスを実現する方法でこれを行うにはどうすればよいでしょうか。
(このテーマに関するMSのドキュメントを見てきましたが、常にsvcutilの実行について説明しています。svcutilは使用しません。ChannelFactoryを直接使用します。また、.NET4.5でチャネルファクトリを使用して非同期で操作を呼び出すためのMSドキュメントは変更されていません。 .NET 3.0日以降。ChannelFactoryは新しい非同期を採用していないようです。)
c# - ChannelFactoryに障害が発生する可能性はありますか?
ChannelFactory<T>をキャッシュし、それを使用してチャネルを作成しているとしましょう。これらのチャネルは、他のサービスへのWCF呼び出しを行うために使用され、その後(安全に)破棄されます。
ChannelFactoryキャッシュに障害が発生し、新しいチャネルの作成に使用できなくなる状況について心配する必要がありますか?もしそうなら、私はそれを新しいものと交換する必要がありChannelFactoryますか?
ChannelFactoryまた、aが故障した場合の再現可能な具体例をいただければ幸いです。
wcf - WCF ChannelFactory とチャネル - キャッシュ、再利用、閉鎖、および回復
私の WCF クライアント ライブラリには、次のアーキテクチャが計画されています。
- より多くの制御が必要であり、クライアントを別のアセンブリに保持し、WCF サービスが変更されたときに再生成を回避したいため、svcutil で生成されたプロキシの代わりに ChannelFactory を使用する
- メッセージ インスペクターを使用して動作を WCF エンドポイントに適用する必要があるため、各チャネルは独自の認証トークンを送信できます。
- 私のクライアント ライブラリは MVC フロントエンドから使用されるため、考えられるスレッドの問題について考える必要があります。
- 私は.NET 4.5を使用しています(WCFクライアントをより良い方法で実装するためのヘルパーまたは新しいアプローチがあるかもしれませんか?)
さまざまな個別のビットに関する多くの記事を読みましたが、すべてを正しい方法でまとめる方法についてはまだ混乱しています。次の質問があります。
- 私が理解しているように、 ChannelFactory を静的変数にキャッシュしてから、そこからチャネルを取得することをお勧めしますよね?
- エンドポイントの動作は ChannelFactory 全体に固有のものですか、それとも各チャネルに個別に認証動作を適用できますか? 動作がファクトリ全体に固有のものである場合、これはエンドポイントの動作オブジェクトに状態情報を保持できないことを意味します。これは、同じ認証トークンがすべてのチャネルで再利用されるためですが、明らかに各チャネルには独自の認証トークンが必要です。現在の使用者。つまり、エンドポイントの動作内でトークンを計算する必要があります (HttpContext にトークンを保持でき、メッセージ インスペクターの動作はそれを発信メッセージに追加するだけです)。
- 私のクライアント クラスは使い捨てです (IDispose を実装します)。可能な状態 (開かれていない、開かれていない、失敗した...) にある可能性があることを知って、チャネルを正しく破棄するにはどうすればよいですか? 処分するだけですか?中絶してから処分しますか?閉じて (ただし、まだまったく開いていない可能性があります)、破棄しますか?
- チャンネルで作業中にエラーが発生した場合はどうすればよいですか? 壊れているのはチャネルだけですか、それとも ChannelFactory 全体が壊れていますか?
1 行のコードは 1,000 語以上を話すので、ここに私の考えをコード形式で示します。上記のすべての質問に「???」を付けました。コードで。