- PR -

メモリ内でのサイズについて

投稿者投稿内容
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-08-22 23:26

ご返信ありがとうございます。

引用:

Jittaさんの書き込み (2006-08-22 22:24) より:
 これって、最終的に何がしたいのでしょう?



肝心な事を書いていませんでした。。。

やりたいことなのですが、サーバ側でクライアント側からの
通信データ量をログに出力する為に取得したいと思ったのです。

ですので、シリアライズされたデータ量が取得できればいいと解釈を
していました。

ですが、上記がフレームワークの都合上、
出来そうになく、いろいろな方法も模索している最中な訳でして・・・。

少しでもヒントがいただければと思っておりました。

伝わりましたでしょうか?何かいい案、キーワード等がありましたら、
模索してみますので、ご教授願えませんでしょうか?

よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-08-23 21:37
引用:

.netさんの書き込み(2006-08-22 23:26)より:

やりたいことなのですが、サーバ側でクライアント側からの
通信データ量をログに出力する為に取得したいと思ったのです。

ですので、シリアライズされたデータ量が取得できればいいと解釈を
していました。


.netさんの書き込み(2006-08-22 14:45)より:

サーバとの通信時に
データ(HashTable)をシリアライズして受け渡しをしているのですが、
その受け渡しをしているデータのサイズを取得したいと思ったのです。
で、シリアライズ前のデータ(HashTable)のサイズが取得できないかと思いまして。


.netさんの書き込み(2006-08-22 16:36)より:

シリアライズ後データを取得を試みたのですが、
シリアライズ事態は本システムで使用しているフレームワークがやっているので
無理でした。

サーバ側PGにてデータ通信量を取得できるような方法を調べて見ることにします・・・。(出来るのかもわからないので・・・)


ぬおぉぉ?!わからなくなってきましたよ?

 まず、ログを残したいのは、サーバ側、クライアント側のどちらですか?

 通信データ量をログする以上、実際に送信されるデータ、すなわち、シリアル化されたデータ量を調べなければなりませんよね?
そうであるなら、クライアント側でログするなら、シリアル化された後のデータ量が必要ですよね?
サーバ側でログするなら、シリアル化解除される前のデータ量が必要ですよね?
コード:
+------------+                               +------+
|クライアント| ===ここの通信量が知りたい===> |サーバ|
+------------+                               +------+
シリアル化して送る--この間のサイズが知りたい->受け取ったものをシリアル化解除する


それで、クライアント側のフレームワークがやっているのは、「シリアル化して送る」という部分でしょうか?かつ、サーバ側のフレームワークは、「受け取ってシリアル化解除する」のでしょうか?


 まぁ、それもひとつだけれど、通信量にパケットのヘッダーなどは含めなくてもいいのか?などという疑問は、とりあえず置いておくことにしよう。
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-08-23 22:00

すみません・・・。
何度もご返信ありがとうございます。

引用:

Jittaさんの書き込み (2006-08-23 21:37) より:
まず、ログを残したいのは、サーバ側、クライアント側のどちらですか?



ログを出力したいのサーバ側です。

引用:

それで、クライアント側のフレームワークがやっているのは、「シリアル化して送る」という部分でしょうか?かつ、サーバ側のフレームワークは、「受け取ってシリアル化解除する」のでしょうか?



その通りになります。
ですので、サーバ側でデータを取得した時には既にデシリアライズされた後のデータです。

引用:

まぁ、それもひとつだけれど、通信量にパケットのヘッダーなどは含めなくてもいいのか?などという疑問は、とりあえず置いておくことにしよう。



通信パケットサイズというのは、サーバ側PG(.netより)容易に取得可能なのでしょうか?

IIS関係(IISのログとか)ではわかるのでしょうが・・・。

甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-08-24 08:56
引用:

.netさんの書き込み (2006-08-23 22:00) より:
通信パケットサイズというのは、サーバ側PG(.netより)容易に取得可能なのでしょうか?
IIS関係(IISのログとか)ではわかるのでしょうが・・・。


IISのログ出力の設定を変更すれば送受信バイト数も保存できます。

結局のところ、何を取得したいのかによります。何のために、どんなデータが必要なのか整理してみては?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-08-24 21:52
えっと、ちょうどこちらのスレッドで、
引用:

みなさん「この質問はイカン」という話はよくしますが
「この質問の仕方は素晴らしい、見習って欲しい」
という例はありますか?


とあるので、書き直してみましょうか。

-----
VB.NET 2003 で、C/S 通信を行うアプリケーションの開発を行っています。
【プログラミング全般についてはどの程度の知識があり、VB.NET については、これくらいです。】

 質問なのですが、HashTable クラスのインスタンスが、そこに登録された内容も含めてどれくらいのサイズになっているか、知りたいと思います。
 これを知りたい理由は、C/S 間での通信量が、どれくらいあるのかログとして残したいからです。ログは、サーバ側で行います。

 C/S 間の通信は、【どこのなんという】フレームワークを使っています。
 このフレームワークに送信したいオブジェクトを渡せば、シリアライズして送信してくれます。受信側は、デシリアライズしたものを渡してくれます。この送受信とシリアル化処理がブラックボックスな為、インスタンスのサイズを通信量とみなそうと思っています。
-----
あと、【】の中が埋めてあれば、1回の送信で望む回答が得られる可能性が高かったのですが。。。

 送受信の処理が、完全にブラックボックスで手が付けられないなら、今回のケースではご希望のことを行えないと思います。
 このフレームワークが市販のものなら、あるいは他にさわったことがある人が、実際に送受信されるバイト数へのアクセスの仕方を教えてくださるかもしれません。
# こういうところ、情報の出し惜しみをしてはいけません。
# あなたにとって、自作のフレームワークであることが明白でも、
# ウェブの向こうの人にはわからないのですから。

 IIS のログをいじるのは、IIS が通信をとった場合で、なちゃさんも『IISにホストしてるサーバアプリケーションとかなら』と、条件を付けられています。


 で、本当に HashTable を送らないといけないのでしょうか?
オブジェクト配列を送って、サーバ側で HashTable に再登録をしてもらうとか、
自前でバイナリ シリアライズしたものを送ってもらうとか、
…そこまでする必要があるのか、ってところが問題か。
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-08-25 11:42

何度も書き込みありがとうございます。
質問が的確でなくご迷惑をお掛けいたしました。

引用:

あと、【】の中が埋めてあれば、1回の送信で望む回答が得られる可能性が高かったのですが。。。

 送受信の処理が、完全にブラックボックスで手が付けられないなら、今回のケースではご希望のことを行えないと思います。
 このフレームワークが市販のものなら、あるいは他にさわったことがある人が、実際に送受信されるバイト数へのアクセスの仕方を教えてくださるかもしれません。
# こういうところ、情報の出し惜しみをしてはいけません。
# あなたにとって、自作のフレームワークであることが明白でも、
# ウェブの向こうの人にはわからないのですから。



今後、質問事項が出てきた場合には、注意します。

で、本題なのですが、とりあえず現状は保留になりました。
IISのログ等で参照することになりました。

現在は別作業に手が追われていますので、復帰次第下記の事も含め
検討しなおすことにします。

引用:

で、本当に HashTable を送らないといけないのでしょうか?
オブジェクト配列を送って、サーバ側で HashTable に再登録をしてもらうとか、
自前でバイナリ シリアライズしたものを送ってもらうとか、
…そこまでする必要があるのか、ってところが問題か。



皆様、ありがとうございました「○ ペコリ

スキルアップ/キャリアアップ(JOB@IT)