私の会社にはフロントエンドを設計しているサードパーティの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
おそらくあなたはjsonオブジェクトhttp://www.json.org/を見てください。これは最近XMLに取って代わるものです。 XMLと比較して簡単な表記法のため、データ量も減少します –
これは良い提案ですが、Webサービスを動作させるためにXMLシリアル化を維持する必要があるため、JSONは2セットのハイドレーションロジックを維持することを意味します。(たとえXML部分がほとんど自動生成されていても)。 –
あなたのタイトルであなたは「セッション」データと言っています。これは、この情報が何らかの形でユーザー固有のものだと私に信じさせています。あれは正しいですか? –