私は、パフォーマンスに対する要求が高いインターネット アプリケーションを使用しています。これは、優れたキャッシュ機能が成功に不可欠であることを意味します。
このソリューションは、データベース アクセス用に Entity Framework Code First を使用し、キャッシュ用に Postsharp を使用して構築されています。とりあえずモデルは以下のような感じ。
public class Article
{
private readonly IProducerOperator _producerOperator;
public Article(IProducerOperator operator)
{ _producerOperator = operator; }
public int Id { get; set; }
...
public int ProducerId { get; set; }
public Producer Producer {
get { return _producerOperator.GetProducer(ProducerId); }
}
}
操作クラスは次のようになります。
public class ArticleOperations : IArticleOperations
{
private readonly IDataContext _context;
public ArticleOperations(IDataContext context)
{ _context = context; }
[Cache]
public Article GetArticle(int id)
{
var article = _context.Article.Find(id);
return article;
}
}
public class ProducerOperations : IProducerOperations
{
private readonly IDataContext _context;
public ProducerOperations(IDataContext context)
{ _context = context; }
[Cache]
public Producer GetProducer(int id)
{
var producer = _context.Producer.Find(id);
return producer;
}
}
私はビジネスオブジェクトに依存関係があるのは好きではありませんが、それに対する議論は、キャッシュからの遅延ロードを行うことです...ほとんどの場合。このソリューションは、キャッシングがプロデューサー... at に対して一度だけ行われることも意味しGetProducer
ます。通常、そこに依存関係があるとは考えません。オブジェクトは POCO でなければなりません。これについては、いくつかの新しいインプットが本当に必要です。代わりにどうすればいいですか?これが最善の方法ですか?
逆の解決も必要です。つまり、キャッシュされているプロデューサから、そのすべての記事を取得できるようにする必要があります。