問題タブ [asynchronous-wcf-call]
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# - c#asyncがUIを呼び出して応答しない
これは私の要件です:
ボタンをクリックすると、データベースからデータを取得し、関数を使用しているdatagridviewに入力する必要があります。取得に時間がかかる場合があり、その間UIを使用したいので、この関数を別のスレッドで実行したいと思います。このために、私は非同期コールバックを使用しています。しかし、begininvoke()
とendinvoke()
関数の間。私はコードを書いていません(UIを応答させるために何を書くべきかわかりません)。
datagridviewは正しく入力されていますが、関数がデータを取得しているときにUIにアクセスしようとすると、UIがブロックされます。
wcf - 分離された非同期呼び出し-WCFまたはWF
私は、クライアントが静的ではないIPを持つファイアウォールの背後にあるクライアント/サービスプロジェクトを開発しています。クライアントはサービスを呼び出します。その後、サービスは、場合によっては数時間後に、クライアントのデータを取得したときにクライアントに連絡します。サービスごとに多くのクライアントが存在します。
私が見たいくつかのWCFサンプルは、接続を開いたままにしているように見えましたが、これはやりたくないです。いくつかのWFの例では、タイムアウトの期限が切れた後、おそらく別の接続で、サービスがクライアントに接続できるように見えました。
私はこれらのテクノロジーに非常に慣れていませんが、サンプルの調査とテストに数え切れないほどの時間を費やしてきました。読めば読むほど、最善の解決策についてはっきりしないようです。WFは私にとって最良の解決策でしょうか、それともWCFで希望する結果を達成することは可能ですか?
wcf - コントラクト操作の実行中にコールバックを呼び出す
Azure で WCF サービスをプログラミングしています。
私のサービスでは、コントラクト操作の実行中にコールバックを呼び出す必要があります。これを実行しようとすると、例外がスローされ、クライアントがロックされます。コントラクト操作のためにチャネルが開かれていることが原因だと思います。現在のチャネルでコールバックを呼び出すと、スレッドがロックされますよね?このシナリオの解決策を得たいです。
タイムアウト例外メッセージは次のとおりです。
net.tcp://127.255.0.0:8000/MytestWCFService に送信されたこの要求操作は、構成されたタイムアウト (00:00:59.9889989) 内に応答を受け取りませんでした。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。これは、サービスがまだ操作を処理中であるか、サービスが応答メッセージを送信できなかったことが原因である可能性があります。(チャネル/プロキシを IContextChannel にキャストし、OperationTimeout プロパティを設定することによって) 操作のタイムアウトを増やすことを検討し、サービスがクライアントに接続できることを確認してください。
編集:コードサンプル
次に、サービス側で IContract を実装します。
現在のチャネルでコールバックしています。これはデュプレックス チャネルです。
silverlight - バックグラウンド スレッドからの RIA サービス呼び出し
RIA サービスを使用している Silverlight アプリに取り組んでいます。アプリの実行中に読み込むデータが大量にあり、すべてのデータを UI に表示する必要があります。
異なるクエリを使用してデータをロードしていますが、ロードするピース間に連続した依存関係はありません。
データが到着すると、主にデータに基づいた長方形と線が描画され始めます。
データの処理に時間がかかりすぎています。私はフィドラーを使用してhttpリクエストを表示しており、次の結果が得られました。DBからデータを取得して受信するのに約1.5秒かかります。しかし、応答を受け取った後、完了したイベントを起動するのに約 6 秒かかります。その時点で、UI スレッドは計算とレンダリングでビジーです。
バックグラウンド ワーカーで Service 呼び出しを試みましたが、完了したすべてのイベントが UI スレッドで発生しています。
サービス呼び出しを行い、非 UI スレッドから受信したデータを処理する方法はありますか?
編集:
UI にいくつかの要素を描画し、データの処理に 6 秒ではなく 0.4 秒かかるコードにコメントしました。その理由は、完了イベントを発生させる前に受信データを処理しているビジー状態の UI スレッドにあります。
ありがとう。
c# - ChannelFactory ベースのクライアント アプリケーションがイベント ドリブンの非同期呼び出しモデルを使用できない理由
MSDN で、ChannelFactory ベースのクライアントはイベント ドリブンの非同期呼び出しモデルを使用できないことがわかりましたが、ServiceModel.ClientBase ベースのクライアントは使用できます。
これはどのように正当化されますか?その理由は何ですか?MSDN リンクはhttp://msdn.microsoft.com/en-us/library/ms731177です。
ios - Web サービス呼び出し応答の自動入力テキスト
私はiOSプログラミングが初めてで、Google検索ボックス、つまりテキストフィールドの自動入力などを実装する必要があります。私のシナリオは次のとおりです1.ユーザーがテキストフィールドに入力するとき2.データのWebサービスへのバックグラウンド呼び出し(リクエストデータ=テキストフィールドデータ)。
例:- ユーザーがテキスト フィールドに「abc」と入力した場合、Web サービス呼び出しの要求データは「abc」である必要があり、Web サービスはそれに対する応答を返します。次回ユーザーが「d」と入力すると、つまりテキストフィールドに「abcd」が含まれる場合、サービス応答は追加されたテキストを考慮する必要があります ( Google 検索フィールドのようなもの)。4.レスポンスがドロップダウンリストに表示されます。
それはiosで可能ですか?チュートリアルや例をいただければ幸いです。前もって感謝します。
c# - 長時間実行されているWCFの破棄[OperationContract(IsOneWay = true)]
OneWayとして定義されているサービスをフォローしています。これは、実行時間が長く(数分)、終了するのが待ちきれないためです(ASP.NETアプリケーションで使用されています)。
問題は、サービス呼び出しの後にclient.Dispose()を呼び出すと、それがブロックされ、60秒後に例外を除いてタイムアウトが期限切れになることです。
そのようなシナリオでクライアントをどのように処分する必要がありますか?サービスのタイムアウトを増やすことは解決策ではありません。なぜなら、それが使用されているWebページのHTTPリクエストを長時間待つことができないからです。
ヒントをありがとう。
windows - クライアントで非同期 WCF 呼び出しが誤って処理される
これがシナリオです。
非同期イベント ベースの設計パターンに従う WinForm アプリケーション (C#、.NET 3.5) があります。
メイン コントロール (MainResultControl) は、ユーザーの要求に応じて子コントロール (ResultControl) の複数のインスタンスを作成します。各子コントロールには、ユーザーが選択する一意のパラメーター セットがあります。
次に、各子コントロールが WCF サービスを非同期的に呼び出します。
各子コントロールは、Web サービスの GetResultsCompleted イベントにもサインアップします
WebServiceClient.GetResultsCompleted += _service_GetResultsCompleted()
ここに私たちが直面している問題があります。ユーザーは、ResultControl が予期しないデータ セットを表示することがあると不満を漏らしています。要求したものとは関係ありません。
コントロールの 1 つのインスタンスが、Web サービスで発生した GetResultsCompleted イベントを処理するときに、他のインスタンスが要求した結果を受け取ることは可能ですか?
ありがとうございました。
ここにいくつかのサポート コード (VB) があります: 親コントロール (MainResultControl)
子コントロール (ResultsControl):
編集:
何人かの人に相談したところ、WCF には、サービスから発生したイベントが、それを発生させた (クライアント マシン上の) 適切なオブジェクトによって確実に処理されるようにするいくつかの方法があるようです。アイデアは - WCF は、複数の非同期要求に対してクライアント マシン上のさまざまな IP ソケットを利用します。本当?
wcf-callbacks - WCF:非同期メソッドを使用してコールバック (同じクライアント) でサービス メソッドを呼び出す
セッション、コールバック、および TPL を使用してどこまで実行できるかを理解するために、いくつかの WCF 実験を行っています。これらの実験の 1 つに奇妙な結果があります... サービスは双方向バインディング (NetTcpBinding) で実装され、通知はコールバックとして実装されます。予想される動作は次のとおりです。
- クライアントは同期方法でサービス (Do) のメソッドを呼び出します
- サービスは同期方法でクライアントのコールバックを呼び出します
- クライアント (コールバック内) は、非同期の方法でサービスのメソッドを 2 番目に呼び出します。
サービスにはセッションが必要です。InstanceContext は PerSession で、同時実行モードは Single です。この状況では、コールバックのコンテキストでは、(同じクライアント上の) サービスのメソッドを同期的に呼び出すことはできないため、コードは次のようになります。
クライアントでのコールバック インターフェイスの実装:
すべてのコードを実行するメイン メソッド:
私の考えでは、Notify メソッドの実装内の行は次のとおりです。
デッドロックを解除する必要がありますが...いいえ、ReDoAsyncが呼び出されると、「現在のメッセージの処理が完了するまで応答を受信できないため、この操作はデッドロックになる...」という例外がスローされます。はい、知っています。実際、問題を回避するためにサービスを非同期でコールバックしようと考えましたが、機能していません。
しかし、私を夢中にさせるのは、コードを少し変更するだけで魔法のように機能するという事実です。私が試した ReDoAsync 呼び出しの代わりに:
そしてそれは機能します!問題は、クライアント メソッドの非同期バージョンは、機能するものと同一または類似の呼び出しを行うことになっているのではないかということです。そうでない場合、クライアント メソッドの非同期バージョンは実際に何をするのでしょうか?
ありがとう。
wcf - 大きなデータで WCF 呼び出しをキャンセルしますか?
WCF を使用して FileService を実装しようとしています。ファイルコンテンツ自体とファイル名を提供することで、ファイルをアップロードできるはずです。現在の ServiceContract は次のようになります。
現時点では問題なく動作しますが、この Fileservice を使用してアプリケーションのネットワーク ペイロードを削減できるようにしたいと考えています。ユーザーがアプリケーションの特定のセクションを開くとすぐに多くのファイルを提供する必要がありますが、ユーザーがアプリケーションをさらにナビゲートするとすぐにそれらの一部をキャンセルできる場合があります。私のファイルの多くは 50 から 300 MB のどこかにあるため、ファイルの転送にはかなりの数秒かかります (アプリケーションは非常に遅いネットワークで実行される場合があり、1 分かかる場合があります)。
他のすべての WCF の質問との違いを明確にして概要を説明するには: 具体的な問題は、サービス自体のパフォーマンスではなく、クライアント <-> サーバー間でデータを提供することがボトルネックであることです。インターフェイスをストリーミングされた WCF サービスに変更することは合理的ですか?