C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: Remotingでサーバ側処理の現在の進捗状況を知る方法


(過去ログ 123 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■73366 / inTopicNo.1)  Remotingでサーバ側処理の現在の進捗状況を知る方法
  
□投稿者/ 会社員 (1回)-(2014/09/17(Wed) 10:34:36)

分類:[.NET 全般] 

Windows7
VB.NET2008 Framework3.5 SP1

質問させて下さい。
現在、クライアントからHTTPチャネルのRemotingオブジェクトを介してIIS/サーバー側のメソッドを実行しています。
サーバー側で例えば単純処理の繰り返しなどで長い時間かかる処理を実行する場合に、その現在の進捗状況をクライアントに伝える方法はあるのでしょうか?
ググったり等、色々調べてはみるのですがいまいち分からず、質問させて頂きました。

まず基本的にHTTPチャネルでそれか可能なのでしょうか?
それが可能だとした場合、クライアント側が例えば非同期でメソッドを呼び出し、Remotingオブジェクトに進捗プロパティ等を追加し、クライアント側からタイマー間隔でそれを見る事は可能でしょうか?そうではなく、サーバー側からクラアイント側にイベント通知するような仕組みでないとダメなのでしょうか?

どなたか分かる方おりましたら、教えて頂けると助かります。m(_ _)m
よろしくお願い致します。

引用返信 編集キー/
■73400 / inTopicNo.2)  Re[1]: Remotingでサーバ側処理の現在の進捗状況を知る方法
□投稿者/ なちゃ (6回)-(2014/09/20(Sat) 21:12:05)
No73366 (会社員 さん) に返信
> Windows7
> VB.NET2008 Framework3.5 SP1
>
> 質問させて下さい。
> 現在、クライアントからHTTPチャネルのRemotingオブジェクトを介してIIS/サーバー側のメソッドを実行しています。
> サーバー側で例えば単純処理の繰り返しなどで長い時間かかる処理を実行する場合に、その現在の進捗状況をクライアントに伝える方法はあるのでしょうか?
> ググったり等、色々調べてはみるのですがいまいち分からず、質問させて頂きました。
>
> まず基本的にHTTPチャネルでそれか可能なのでしょうか?
> それが可能だとした場合、クライアント側が例えば非同期でメソッドを呼び出し、Remotingオブジェクトに進捗プロパティ等を追加し、クライアント側からタイマー間隔でそれを見る事は可能でしょうか?そうではなく、サーバー側からクラアイント側にイベント通知するような仕組みでないとダメなのでしょうか?

リモーティングのオブジェクトは、SAOとCAOのどちらを使っていますか?
#って意味は分かりますかね?

サーバからクライアントへのまともなプッシュ通知となると、クライアント側でもチャネルでリスンしないといけないのでいろいろ制約がでやすいです。
クライアントから問い合わせる形ならそういう制約はありません。

もしCAOを使っているなら、単純にリモートオブジェクトに進捗状況を返すプロパティなりメソッドなりを追加して呼べば比較的簡単に実現は可能です。
SAOの場合は、通常クライアントを識別する仕組みを自作する必要があるためちょっと工夫が必要になることが多いです。
スケーラビリティその他を考えるとSAOの方が無難だったりもするのですが。
引用返信 編集キー/
■73405 / inTopicNo.3)  Re[2]: Remotingでサーバ側処理の現在の進捗状況を知る方法
□投稿者/ 会社員 (3回)-(2014/09/22(Mon) 17:15:39)
> リモーティングのオブジェクトは、SAOとCAOのどちらを使っていますか?
> #って意味は分かりますかね?
>
> サーバからクライアントへのまともなプッシュ通知となると、クライアント側でもチャネルでリスンしないといけないのでいろいろ制約がでやすいです。
> クライアントから問い合わせる形ならそういう制約はありません。
>
> もしCAOを使っているなら、単純にリモートオブジェクトに進捗状況を返すプロパティなりメソッドなりを追加して呼べば比較的簡単に実現は可能です。
> SAOの場合は、通常クライアントを識別する仕組みを自作する必要があるためちょっと工夫が必要になることが多いです。
> スケーラビリティその他を考えるとSAOの方が無難だったりもするのですが。

返信ありがとうございます。質問時にはCAO/SAOをあまり良く理解しておらず、SAOでコードを作っていました。
ご指摘の通り、CAOにすることで解決は出来ました。が、ローカルのIIS-PC/ネットワークPCどちらからでもクライアントEXEを実行すると
リモートオブジェクトのメソッド実行時に何度かに一度、IISサーバが404を返すのでこの原因を調べています。

この件に関しても、大変申し訳ないのですが何か教えていただける部分はあるでしょうか?m(T_T)m

引用返信 編集キー/
■73412 / inTopicNo.4)  Re[3]: Remotingでサーバ側処理の現在の進捗状況を知る方法
□投稿者/ なちゃ (7回)-(2014/09/23(Tue) 22:02:15)
> ご指摘の通り、CAOにすることで解決は出来ました。が、ローカルのIIS-PC/ネットワークPCどちらからでもクライアントEXEを実行すると
> リモートオブジェクトのメソッド実行時に何度かに一度、IISサーバが404を返すのでこの原因を調べています。

CAOの場合、作成されたインスタンスは、アクセスがない状態になるとデフォルトで5分で破棄されます。
もししばらく呼び出しを行っていないときに発生するならこれが原因でしょう。
#CAOの場合、このオブジェクトのライフサイクルの管理などを意識しないといけないので、この部分がちょっと注意になります。

連続した呼び出しの後はしばらく使わないという状況であれば、新たに使い始めるときはアクティベートからやり直すというのも手です。
有効期間をのばすというような方法もあります。
どちらがいいかはオブジェクトの使い方によると思います。
引用返信 編集キー/
■73419 / inTopicNo.5)  Re[4]: Remotingでサーバ側処理の現在の進捗状況を知る方法
□投稿者/ 会社員 (4回)-(2014/09/24(Wed) 15:22:12)
2014/09/24(Wed) 15:22:50 編集(投稿者)

> CAOの場合、作成されたインスタンスは、アクセスがない状態になるとデフォルトで5分で破棄されます。
> もししばらく呼び出しを行っていないときに発生するならこれが原因でしょう。
> #CAOの場合、このオブジェクトのライフサイクルの管理などを意識しないといけないので、この部分がちょっと注意になります。
>
> 連続した呼び出しの後はしばらく使わないという状況であれば、新たに使い始めるときはアクティベートからやり直すというのも手です。
> 有効期間をのばすというような方法もあります。
> どちらがいいかはオブジェクトの使い方によると思います。

ご指摘大変ありがとうございます。
もう一度、CAOとSAOどちらが今回の運用で最適かを考えて再設計を考えてみます。
本当にありがとうございました。m(_ _)m


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -