Показаны сообщения с ярлыком MVC. Показать все сообщения
Показаны сообщения с ярлыком MVC. Показать все сообщения

четверг, 13 октября 2011 г.

ASP.NET MVC MiniProfiler

Всем доброго времени суток. Сегодня я хочу рассказать про ASP.NET MVC MiniProfiler. А первое, что я хочу рассказать, это то, что, вопреки распространённому мнению и названию, этот профайлер вполне можно применять для отладки обычных (не MVC) ASP.NET приложений. Дальше я на примере покажу как это сделать. А пока обо всем по порядку.

Что такое MiniProfiler?

Это способ отладить ASP.NET-приложение на production (или, если вам больше нравится, “приложение, находящееся в промышленной эксплуатации”). И, что важно, не сильно влияя на производительность (то, что это работает на сайтах платформы StackExchange как бы намекает).

Вкратце процесс подключения выглядит так:

  1. Добавляется ссылка на dll.
  2. Подключается в “Master Page” или любое другое подходящее место одна строчка по инициализации UI.
  3. В Global.asax.cs прописываются вызовы по старту и остановке профайлера.
  4. Либо добавляются вызовы Step(string) там, где вам интересно, либо “сбоку” добавляются фильтры (вроде ProfilingActionFilter), чтобы не модифицировать код.

Опять же вкратце, на выходе получаем в виде небольшой разворачивающейся “закладки” на странице следующие возможности:

  • Суммарное время.
  • Время на дочерние действия (пункт 4) и запросы к БД.
  • Показать/скрыть “тривиальные” запросы (с маленькими затратами времени).
  • Переслать ссылку на отчет (данные хранятся в кэше).

Заинтересовались? Тогда продолжим…

четверг, 16 июня 2011 г.

Model scaffolding для MVC 3 – идеи и принципы

Эта статья является логическим продолжением статей ASP.NET MVC 3 + Entity Framework 4.1 Code First, MVC 3 + scaffolding и моей презентации на TechDays “Пример разработки сайта на MVC 3”. В ней я расскажу про свой пакет для scaffolding’а Model Scaffolding for ASP.NET MVC.

Как я уже говорил ранее, идея написать этот пакет появилась после знакомства с проектом MvcScaffolding. Если вкратце, это пакет NuGet (минимальную необходимую информацию по NuGet и MvcScaffolding я привел в предыдущей статье), позволяющий быстро генерировать контроллеры и представления. Для первого знакомства с MvcScaffolding достаточно прочитать статьи автора “Scaffold your ASP.NET MVC 3 project with the MvcScaffolding package” и “MvcScaffolding: Standard Usage”, а заинтересовавшимся после первого знакомства, рекомендую читать эту серию статей дальше.

Для понимания дальнейшего изложения знакомство с MvcScaffolding не требуется, однако для более глубоко понимания потенциальных возможностей как MvcScaffolding так и ModelScaffolding оно будет весьма полезно. Далее я расскажу про ModelScaffolding по порядку, не забыв объяснить идеи и цели, которые лежат в его основе.

Disclaimer

Я не претендую на особую оригинальность и/или полезность своего подхода к scaffolding’у моделей. Я просто знаю, что есть круг задач которые он решает хорошо, а, на момент создания проекта на CodePlex, сходу не нашел аналога в рамках используемых технологий.

К слову о “круге задач” – на мой взгляд, это прототипирование, причем необязательно “чистое прототипирование” (когда прототип гарантированно не будет использован в промышленной разработке). А самая идеальная задача – набор сущностей со стандартными названиями свойств и большим количеством простых справочников. К концу этой статьи вы поймете почему, а пока запаситесь терпением ;)

вторник, 31 мая 2011 г.

MVC 3 + scaffolding

А теперь обещанное продолжение статьи ASP.NET MVC 3 + Entity Framework 4.1 Code First. Сегодня я расскажу про то, как быстро создать основу (или прототип) для приложения на ASP.NET MVC 3, в том числе, с помощью NuGet-пакета MvcScaffolding. Надо сказать, что принципы MvcScaffolding пришлись мне по душе и даже вдохновили меня на написание своего пакета для scaffolding’а - Model Scaffolding for ASP.NET MVC. О нем я расскажу в следующих статьях.

Поскольку в прошлой статье я уже рассказал про основные понятия и библиотеки (ASP.NET MVC, Entity Framework), сейчас я не буду на них подробно останавливаться. Пример будет использовать scaffolding, который я уже упоминал в предыдущий раз.

Disclaimer. Отмечу, что scaffolding – это, вообще говоря, быстрая генерация чего-либо, с целью последующей доработки, а не способ быстро написать законченное сложное приложение.

NuGet

Пожалуй, единственное, на чем я забыл остановиться в прошлый раз, это NuGet. Сама идея его не нова (apt-get, Ruby Gems и т.п.), однако то, что это теперь доступно и в Visual Studio очень радует. Следуя описанию с официального сайта:

NuGet is a Visual Studio extension that makes it easy to install and update open source libraries and tools in Visual Studio.

В принципе, добавить нечего, однако я все-таки немного добавлю :)

среда, 11 мая 2011 г.

ASP.NET MVC 3 + Entity Framework 4.1 Code First

Как вы все знаете, недавно вышло обновление MVC 3 Tools, ключевой особенностью которого является более продвинутый scaffolding. Кстати, scaffolding теперь есть и для движка Razor, что тоже плюс. Об этом, а также о недавнем обновлении Entity Framework я сегодня и расскажу. В этой статье речь пойдет про сами обновления, а в следующей будут примеры использования.

Забегая вперед скажу, что scaffolding (по крайней мере, в случае ASP.NET MVC) это возможность быстро генерировать простую логику и интерфейс, которую можно использовать как прототип или в качестве отправной точки в дальнейшей разработке. Также этот подход может работать почти в чистом виде для простого административного интерфейса.

MVC (Model-View-Controller)

Наверняка, 99% читателей знают что такое MVC, однако, на всякий случай, расскажу очень коротко, а подробнее можно посмотреть в википедии (русскоязычной или англоязычной) и приведенных в ней ссылках.

MVC – это шаблон проектирования (хотя часто под ним подразумевают фреймворки, использующие этот шаблон). Основным принципом MVC является разделение ответственности между тремя составляющими:

понедельник, 6 декабря 2010 г.

ASP.NET MVC 3 + Razor

После пары статей об эффективном написании кода в Visual Studio 2010, продолжаю разговор об использовании Razor. Теперь, после выхода ASP.NET MVC 3 Release Candidate, это стало более интересным и близким к реальной жизни. В этой статье речь пойдет о создании приложения на MVC 3 и возможностях Razor для поддержки целостной структуры страниц.

Для тех, кто не читал статью о синтаксисе Razor – крайне рекомендую, хотя и постараюсь здесь не использовать слишком много его “фишек”. Также дальнейшее повествование подразумевает некоторое знакомство с технологией ASP.NET MVC.

Установка ASP.NET MVC 3 RC

Для работы с MVC 3 Release Candidate потребуется, для начала, его установить. Из важных моментов – если установлен Async CTP, отладка работать не будет, сравнительно полный список известных проблем – в Release Notes (забыли, например, упомянуть замену параметра optional на required для RenderSection).

Если есть желание ознакомиться с исходным кодом для этой статьи – есть архив (всего 34KB) на google docs.

Для тех, кто пользуется ReSharper и его Intellisense есть не очень приятная новость. Пока (до выхода ReSharper 6) поддержка Intellisense в Razor ограничена (работает, когда в явном виде используешь Ctrl+Space, иногда требуется набрать первую букву). Тем, кого это сильно расстраивает, можно посоветовать переключиться в настройках ReSharper на Visual Studio Intellisense (Ctrl+Alt+Space будет по-прежнему вызывать ReSharper Intellisense).