2011-09-14 5 views
2

私の会社にはフロントエンドを設計しているサードパーティのWebサービスがあります。このWebサービスで使用される「オブジェクト」は非常に大きく(作成されたサブエンティティの数によって変わります)。 Webサービスはサブエンティティをコミット/ロードするメソッドを公開せず、完全なオブジェクト階層のみを公開します。大規模な一時的な「セッション」データをWebアプリケーションに保存するにはどうすればいいですか

UI自体は多数のサブスクリーンとマスター/詳細ビューに分割されており、大量のデータを効率的に/簡単に編集できるようになっています。

問題は、現在見ていないすべてのデータを保存する場所です。

大規模なレコードの場合、Webサービスのコミットに30秒かかります。そのため、断続的なデータ保存にWebサービスを使用することはできません。

述べたように、データが非常に大きくすることができる(複数メガバイト、エッジケースにおけるデータのおそらくギガバイトまで)

これは、MS-SQLバックエンドと、ASP.Net 4.0であり、そしてサードパーティのSOAP Webサービス。

Webサービス契約の変更はオプションではありません。

ここにいくつかのアイデアがあります。私が選択するのを助けたり、何かをより良く識別したりする

1)最初の開発者は、シリアル化されたXMLをセッション(マシン上のセッション)に投げた。私はすぐにこれを問題として認識しました。このようにセッションを使用すると、メモリの使用や負荷分散の問題などによりパフォーマンスに大きな影響を与える可能性があります。

2)セッションサーバー - これは追加ハードウェア購入が必要ですおそらくオプションではありません

3)SQLセッション - そのような大きなオブジェクトを格納するパフォーマンス?

4)ディスク/共有にXMLを書く(zip形式)

5)(zip形式)

6)SQLリレーショナルデータベースをSQLにXMLを書く - ?各エンティティタイプのテーブルを作成します。これにより、個々のサブエンティティのロード/セーブが可能になり、パフォーマンスが向上します。 (私たちは本当にとにかくその問題を持っているが、GUIも脆くなるため、)我々はサードパーティのサービスを制御しないので、我々は

7脆さとメンテナンスを心配している)ビューステート - あまりにも大きいが、PERF

+0

おそらくあなたはjsonオブジェクトhttp://www.json.org/を見てください。これは最近XMLに取って代わるものです。 XMLと比較して簡単な表記法のため、データ量も減少します –

+0

これは良い提案ですが、Webサービスを動作させるためにXMLシリアル化を維持する必要があるため、JSONは2セットのハイドレーションロジックを維持することを意味します。(たとえXML部分がほとんど自動生成されていても)。 –

+0

あなたのタイトルであなたは「セッション」データと言っています。これは、この情報が何らかの形でユーザー固有のものだと私に信じさせています。あれは正しいですか? –

答えて

5
を打ちます

オプション6はおそらくあなたの最善の策です。とにかく、サービスのデータ構造に対する変更を管理する必要があるように思えます。また、データをサービスからデータストアに「プル」し、ユーザーが再生できるようにし、データの完了後にデータを「プッシュ」できるスキーマを用意することもできます。

また、SQL以外のデータストアについて学習することもできます。スキーマレスまたはドキュメントベースのデータストアでは、モデル全体を保管しておき、事後の照会に基づいてモデルを取り出すことができますが、保守コストは削減できます。

+0

また、最も安全な解決方法を提供します – sternr

+0

+1秒のオプション6。 –

関連する問題