2009-03-18 4 views
1

私は大企業のウェブサイトで使用されるasp.netアプリケーションに小さなウィンドウフォームアプリケーション(製品構成担当者)を移植する必要があります。特化した製品ライン。xml asp.netのパース/クエリのパフォーマンスに関する質問

私はデータベースにアクセスできず、XMLを使用することはWeb開発者の要件です。

xmlファイルには約300種類の構成があり、製品に関する推奨事項につながる質問/回答がリンクされています。また、いくつかの生産オプション。このアプリは6つの言語で利用可能です。

このようにすれば、「データアクセス」レイヤーをどのように解決できますか?私はそれらのオブジェクトにXMLファイルを読み込み/逆シリアル化し、asp.netのキャッシュに保存しておき、その後に続く要求でキャッシュから読み込むことを考えました。しかし、それはすべてのオブジェクトが昼夜を問わずメモリに記憶されていることを意味します。

パフォーマンスはそれほど必要なのかスマートなのでしょうか?私が前に言ったように、アプリはそれほど大きくはない、xmlファイルはそれほど大きくない。オブジェクトが要求されたとき(つまり、「製品の詳細」または「次の質問」)にxmlファイルを読み込み、それを返してメモリ消費を抑えるリポジトリクラスを作成できますか?

答えて

1

すべてのアプローチが単一のサーバーに固執しているようです。まず、大企業のウェブサイトに言及したときにこれが適切であるかどうかを検討してください。サイトを拡張する必要がある場合は、1つ以上のサーバーを持つことになり、単純なローカルファイルを検討することができなくなります。

これを使用するように制限されている場合は、キャッシュに保存する方が適切なデータを分析します(頻繁に変更されず、長寿命で同じ情報が別々に要求されます)。キャッシュされたものをキャッシュされていないものから分離して、より動的なファイルの情報量を減らしてください。大量の情報が必要な場合は、ファイルをドメインに適したものに分割することを検討してください。

+0

それは単一のサーバーで実行することが保証されます... – kitsune

+0

私はデータベースを使用したいと思っていますが、それをやって私を防ぐ会社のシステム管理者です:/ – kitsune

+0

とにかく、私には、複数のサーバーの私は効率的にキャッシュを使用するが、ファイルのアプローチからではないようだ... – kitsune

0

可能な限りキャッシュを使用します。最初のリクエストでオブジェクトをキャッシュします。メモリに問題がある場合は、期限切れポリシーを設定します。そして、そうであってもいなくても、メモリが足りなくなると、フレームワークはとにかにキャッシュをアンロードします。

アプリケーションごとであり、ユーザーごとではないので、特に相対的なフットプリントが小さい場合は、それを持つことは理にかなっています。

複数のサーバーに後で展開する必要がある場合は、ネットワーク経由で同じファイルにアクセスしたり、DAレイヤーを変更して他の手段(サービス、DBなど)でデータを取得できます。キャッシングコードは同じままで、パフォーマンスにはほとんど影響を与えません。

依存関係を設定すると、オブジェクトは常に最新の状態になります。

私はそれです。

0

キャッシュを使用し、適切な期限切れポリシーを設定することは、他者からアドバイスされたとおり有効なアプローチです。私はあなたのデータアクセスコードの基礎としてLINQ to XMLを使用することをお勧めします。これは、XMLをクエリする従来の方法よりもはるかに使いやすいためです。あなたはまともな紹介hereを見つけることができます。

+0

linqでxmlにアプリを書き直しました。ありがとう – kitsune

関連する問題