ビジネス層とSQLデータベース以外のデータソースを扱うリポジトリ層で構成されるN層アプリケーションを作成したいとします。たとえば、データを読み込むリポジトリを実装する場合などですテキストファイルまたはXMLファイルから「C#」を含む行数を検索するか平均スコアを計算する非SQLデータソース用のリポジトリパターン
ユーザーがテキストファイルのデータを照会するたびにUIから呼び出しを呼び出すと、大容量のファイルでは、レイヤーごとにリポジトリに呼び出すたびにすべてのデータをメモリにロードしてから、ユーザに表示するためにそれをリターニングする前に毎回クエリを実行する必要があるため、効率的ではありません。すべてのデータを一度読み込んでから、複数のクエリをpeにすることができますそれを実行するか、または照会する前に毎回メモリにロードする必要がありますか?
大量のデータ/テキストファイルを毎回メモリにロードしなくても、非SQLデータベースデータソースのN層設計を効率的に行う方法はありますか?
あなたのリポジトリにキャッシュを実装するだけでいいと思います。同様に、テキストファイルからデータを読み取り、それを変数(すなわち、メモリ)に格納し、存在する場合はそれを読み取る。ファイルが変更されたことがわかっている場合は、変数を更新する方法が必要です。しかし、率直に言って、この質問は少し広範です。あなたが求めている方法でn層設計を実装する無数の方法があります。 –
キャッシュ(.Net 4.0以降のメモリキャッシュ)を使用し、バックグラウンドプロセスを通じてキャッシュをリフレッシュします。クエリはメモリキャッシュから実行されます。 – loneshark99
@MikeMcCaughanとlonesharkご意見ありがとうございます。私はテキストファイルから返されたデータをキャッシュする必要があるように聞こえる。リポジトリクラスのキャッシュ可能なオブジェクト/プロパティにテキストファイルの内容全体をロードする必要がありますか?それはどのようにして複数のトランザクションにわたって格納され、再利用されるのか、私は理解していません。 – Theomax