- PR -

データの圧縮

投稿者投稿内容
みやぼん
常連さん
会議室デビュー日: 2003/09/08
投稿数: 33
投稿日時: 2004-05-07 17:11
いつもお世話になっております。
宮崎と申します。
VB.NETを利用してC/Sシステムを
WebServiceとWindowsアプリケーションで作成しております。
その開発で
WebServiceから取得しなければいけないデータ量が多すぎて
レスポンスが悪く困っております。
現時点では、下記のような処理をしております。
 1.クライアントからWebServiceのデータセット型メソッド(A)を要求する。
 2.Aのメソッドでは
    ・データベースに接続しデータを取得
    ・取得したデータをDataSetで返す。
 3.クライアントで受け取ったデータを表示する。

2〜3へ受け渡すXml(WebServiceを呼び出しているのでXmlのデータがクライアントに返っていると考えております。)のデータを圧縮することはできないのでしょうか?

以上 よろしくお願いいたします。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-05-07 19:39
みやぼんさん、こんばんは。

引用:

    ・データベースに接続しデータを取得
    ・取得したデータをDataSetで返す。


DataSet をそのまま返さずに、BinaryFormatter でシリアライズして圧縮し、バイト配列として返すようにした場合、Webメソッドが返すデータ量は削減できるんでしょうか?
良かったら、試してみませんか?

ちなみに圧縮・解凍に関してはC#で書かれたZipライブラリなんかがあります。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-07 21:14
あるいは、非同期呼び出ししてみるとか。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
みやぼん
常連さん
会議室デビュー日: 2003/09/08
投稿数: 33
投稿日時: 2004-05-10 09:28
ご返信ありがとうございます。
できれば、返されるXML自体のデータを圧縮したかったのですが、
無理でしょうか?
(Clientサイドのモジュールをすでに配布しているため
 ロジック変更が難しいのです。。)
IISのHTTP圧縮機能を使用したのですが、
いまひとつ効果が得られませんでした。
申し訳ございません。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-10 09:58
引用:

みやぼんさんの書き込み (2004-05-10 09:28) より:

できれば、返されるXML自体のデータを圧縮したかったのですが、
無理でしょうか?


 無理、というか、それをすると「Webサービス」でなくなってしまいます。Webサービスで返すものは、仕様が決まっています。XMLを圧縮すると、XMLでなくなってしまいます。
#JavaのクラスファイルをZip圧縮して配布するイメージを期待している?
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-05-10 10:49
みやぼんさん、こんにちは。

引用:

IISのHTTP圧縮機能を使用したのですが、


恐らく同じ技術なのだろうとは思いますが、こんなのもありますね。
Nocturne
会議室デビュー日: 2004/01/27
投稿数: 6
投稿日時: 2004-05-10 11:44
こんにちは、みやぼんさん。

引用:

みやぼんさんの書き込み (2004-05-10 09:28) より:
できれば、返されるXML自体のデータを圧縮したかったのですが、
無理でしょうか?
(Clientサイドのモジュールをすでに配布しているため
 ロジック変更が難しいのです。。)


SoapExtension クラスを用いれば実装できますが、
クライアント サイドで解凍するコードの追加がどうしても必要になると思いますので、
モジュールの再配布は必須になりますね…
Google で "SoapExtension" と "ProcessMessage" で検索、
結果のリンク先を参考にしてみてください。

引用:

IISのHTTP圧縮機能を使用したのですが、
いまひとつ効果が得られませんでした。
申し訳ございません。


IIS の HTTP 圧縮は、デフォルトでは ASP.NET XML Webサービスの圧縮を行いませんので、
IIS のメタベースを編集する必要があります。
こちらは、下記のリンク先が参考になると思います。

http://www.microsoft.com/japan/technet/treeview/default.asp?url=/japan/technet/prodtechnol/iis/iis5/maintain/featusability/httpcomp.asp

細かくはチェックしていないのですが、とりあえず、パラメータ "HcScriptFileExtensions" の値を空白(全てを出力を圧縮)に設定すると、
XML Web サービスのHTTP 圧縮が有効になります。
みやぼん
常連さん
会議室デビュー日: 2003/09/08
投稿数: 33
投稿日時: 2004-05-10 12:04
皆様ご返信ありがとうございます。
私も下記のようなサイトを発見いたしましたので
一度実装をして見ます。
ただ、ユーザーに説明し、工数が出てからのお話になりますので
結果をお伝えできるのは、先のお話になってしまうかもしれません。
(申し訳ございません。)

http://www.ogis-ri.co.jp/otc/hiroba/technical/AxisDotNet/

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