Как разработать сайт ASP.NET MVC для кэширования с Velocity? - PullRequest
5 голосов
/ 24 января 2009

Я родом из мира LAMP, где преобладает менталитет «кэшировать все». Все помещено в memcache.

Я начинаю новый проект с ASP.NET MVC и SQL Server. Я, вероятно, пойду с LINQ to SQL или, возможно, Entity Framework. Есть ли какие-то дизайнерские решения, которые мне нужно принять сейчас для кэширования, или достаточно легко начать использовать Velocity, если это станет необходимым? Просто чтобы прояснить, я говорю о кэше Velocity от Microsoft, а не о шаблонном движке Apache Velocity.

Я надеюсь, что на данный момент я могу игнорировать кэширование, потому что изучение C #, ASP.NET MVC, LINQ, IIS, SQL Server и получение опыта в VS поддерживает мою тарелку полной.

Ответы [ 4 ]

6 голосов
/ 24 января 2009

У Стивена Вальтера есть отличная статья о том, как это сделать

Совет ASP.NET MVC № 39. Использование распределенного кэша Velocity

3 голосов
/ 25 января 2009

dswatik предоставил отличную ссылку о том, как его использовать.

Я бы предложил добавить эту функцию где-нибудь на вашем уровне хранилища / службы, чтобы снять нагрузку с приложения и остаться в рамках принципа СУХОЙ.

1 голос
/ 13 мая 2009

Выбранный ответ для Velocity CTP1. Вот ссылка MSDN для самого последнего Руководства по программированию Velocity .

Что касается вашего другого вопроса о проектных решениях, то предложение Чеда Морана возложить ответственность на уровень хранилища замечательно. Затем я хотел бы взглянуть на добавление поддержки кэширования linq, используя технику, аналогичную описанной здесь: http://petemontgomery.wordpress.com/2008/08/07/caching-the-results-of-linq-queries/

Вам, очевидно, придется написать реализацию, которая использует Velocity вместо ASP.NET Cache ... но на самом деле, если у вас нет статистики, подтверждающей, что вам нужно что-то вроде Velocity, вы, вероятно, можете придерживаться обычного кэша до тех пор, пока становится проблемой. Если вы послушаете некоторые из выступлений Джоэла Спольски относительно стека overoverflow, вы обнаружите, что два блока (один с iis, а другой с сервером sql) могут обрабатывать очень большой объем.

1 голос
/ 25 января 2009

@ dswatic: Большое спасибо. Похоже, что позже я могу добавить кеширование с минимальной болью. Вот важное предупреждение с этого сайта:

"Если вы используете Object Relational Designer для создания ваших классов LINQ to SQL, то ваши классы LINQ to SQL не будут сериализуемыми. Чтобы обойти эту проблему, я создал свои классы LINQ to SQL вручную."

С помощью Velocity можно кэшировать только сериализуемые объекты.

Еще раз спасибо.

...