2

ASP.NET MVC サイト用の単純な CMS 実装の戦略を検討しています。単純な部分は、さまざまな部分ビューで使用される値を抽象化したということです。これらはすべて、同一の CSS レイアウトを共有するユーザー コントロールです。そのため、CRUD を使用してときどき変更できるデータベースから、同じ部分ビューにカスタム値を入力しています。

それほど単純ではない部分は、標準の UI 要素を SQL テーブルの行として合理的に効率的かつ論理的に抽象化したものです。でもそれは置いといて…

一部のスーパーモデルを使用して、部分ビュー用に事前構成されたモデルを各ページに渡すことはわかっています。しかし、それらが事前に構成され、事前にロードされている場合、呼び出されるまでどこに置くのでしょうか?

私がこのように行くのは少し気が狂っていると思わせる部分は、本質的に静的データであるもののロード時間です。繰り返しになりますが、SharePoint です。

では、(私が思うに) application_start にすべてロードしてみませんか? なぜだめですか?私が答える!次に、IoC を使用して、Google が適切な情報へのリンクを 1 つも返すことはありません。

では、リポジトリ呼び出しをコンストラクターに入れる以外に、IoC コンテナーを使用してデータベースからモデルを作成するためのより良いアイデアがある人はいますか?

そして、コントローラーがアクセスできる IoC コンテナーにこれらの静的データ モデルを配置するのはばかげていると思う人はいますか?

ありがとう、

S.町野

4

2 に答える 2

3

SOLID のいくつかの原則に従い、できる限りひたむきに物事を進めてください。半静的データの場合、まずこのデータをロードするリポジトリを作成します。これにより、リクエストごとにデータがロードされます。動作しますが、おそらくパフォーマンスはそれほど高くありませんが、必要な実装ができました。

次にできることは、最初のリポジトリをキャッシング リポジトリでデコレートすることです。この CachingRepository は、装飾されたリポジトリから 1 回だけ読み取り、データをメモリに保持します。

したがって、関心の分離を尊重します。

CachingRepository インスタンスのスコープを Singleton にすると、アプリケーションがリサイクルされるまで存続し、キャッシュされたデータがメモリ内に効果的に保持されます。

于 2009-12-07T11:40:23.670 に答える
1

設計でOutputCache属性を使用することを検討してください。この属性を使用して静的データを返すアクション メソッドをデコレートすると、フレームワークがキャッシュを処理します。

もちろん、キャッシュを無効にするタイミングを処理する必要があります。

于 2009-12-07T17:50:35.097 に答える