Как разработать сайт ASP.NET MVC для кэширования с помощью Velocity?

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

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

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


person royco    schedule 24.01.2009    source источник


Ответы (4)


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

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

person dswatik    schedule 24.01.2009
comment
Эта ссылка относится к CTP1 скорости - person Joel Martinez; 13.05.2009

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

Я бы предложил добавить эту функциональность где-нибудь на уровне репозитория/службы, чтобы снять нагрузку с приложения и не выходить за рамки принципа DRY.

person Chad Moran    schedule 25.01.2009

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

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

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

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

person Community    schedule 25.01.2009
comment
Вот отличная библиотека, которую кто-то написал для сериализации linq 69.10.233.10/KB/linq/linqsqlserialization.aspx Однако справедливое предупреждение, если вы используете функции Let или lazy load в Linq, это не может быть сериализовано. - person dswatik; 25.01.2009

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

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

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

person Joel Martinez    schedule 13.05.2009