Типичная начинка моих MVC-проектов

В прошлом посте я описал несколько стандартных вещей которые я делаю при создании нового Asp.Net MVC проекта, и узнал для себя много полезного из комментариев. В этом посте я хочу рассказать про тот стек контролов и библиотек который фигурирует в большинстве моих MVC приложений, независимо от тематики. Так уж получается, что один раз попробовав один каз какую-нибудь вещь, я часто возвращаюсь к прошлым проектам чтобы посмотреть как ее использовать.

Начнем с прелестей на стороне сервера:

  • Spark ViewEngine – я не могу сказать что у меня часто бывает шанс использовать этот ViewEngine, но без него я очень часто начинаю злиться на FormsViewEngine, в основном за то, как мне приходится обходить коллекции и писать вещи вроде <% if (condition) { %> HTML <% } %>. Spark VE намного гуманней в этом плане.

  • Unity так или иначе появляется в проектах. Например, если в проекте фигурирует база, то хочется иметь возможость быстро переключаться между фейковыми и настоящими сервисами или компонентами.

  • xVal – вообще валидация везде где не смотришь переходит на аттрибуты, в MVC это тоже так, но пока у меня еще большинство проектов в MVC1, я использую стандартный вариант с jQuery Validate. И не смотря что я стараюсь использовать jquery-валидацию на клиенте, последнее время меня тянет все делать через AJAX. Наверное я пишу слишком слабонагруженные сайты.

  • AntiXSS – незаменимая библиотека когда нужно дать пользователям возможность вводить свой текст с содержанием HTML.

  • Telerik MVC – это конечно в основном client-side библиотека (в плане генерации HTML/JavaScript через C#), но я решил вставить ее сюда. Telerik MVC – это моя рабочая лошадка, которая позволяет моментально делать таблицы и тэбы – меню и panelbar я пока не использовал. Знаю что в принципе есть jqGrid, на котором основана таблица из Telerik MVC, но что поделать, это уже привычка.

Теперь поговорим про то, что приходится часто подключать на стороне клиента.

  • jQuery – конечно поддержка встроена в MVC-шаблон, но так получилось что тот же Telerik MVC требует самую свежию версию jQuery. Что касается vsdoc-файла (тот, который дает jQuery IntelliSense в Visual Studio), то опять же я стараюсь держать его последнюю версию.

  • jQuery UI – для jQuery нужен пользовательский интерфейс, и сайт позволяет генерировать для него разные темы. Обычно я генерирую только одну, в зависимости от цвета сайта. Мне особенно нравятся темные раскладки – именно в такой я в свое время написал наш корпоративный сайт.

  • WMD – это редактор с предпросмотром. Тот, который используется на StackOverflow. Вместе с AntiXSS на стороне сервера это все, что нужно для того чтобы позволять пользователям печатать форматированный текст.

  • Flot – это мой избранный метод рисования графиков. Изначально я делал графики в качестве нарисованных картинок, потом начал использовать flot с данными переданными из контроллера. Сейчас я все делаю через AJAX, и доволен результатом.

  • Popup-контрол для jQuery. Затемнение фона и показ popup-окошка – это визитная карточка jQuery. Я точно не помню какой из скриптов я использую, но я доволен результатом, и пользователи тоже. Главное не забыть добавить в окошко кнопку «закрыть».

  • Google Analytics скрипт – это вообще следует оставить без комментариев. GA я использую для трекинга всех моих сайтов.

А теперь несколько вещей которые я хотел бы использовать в ближайшем будущем.

  • Telerik Asp.Net AJAX – отсюда мне нужны отдельные контролы, например тот же рейтинг и тултип. На данный момент я даже не знаю как их подвязывать к MVC-сайту, но уверен что это не проблема.

  • Переключатели в стиле iPhone (jQuery) – просто прикольные контролы которые я обязательно прикручу к какому-нибудь сайту.

  • Coda popup bubble – мне кажется что в плане popup/tooltip контролов, это идеал. Обязательно надо будет попробовать.

Такой вот у меня список. Если у вас есть что-то, что вы можете порекоммендовать, пишете комментарий! Спасибо.

6 responses to “Типичная начинка моих MVC-проектов”

  1. Спасибо за описание, ваших инструментов, некоторые нашел полезными для себя.

    Хотелось бы узнать, используете ли вы какие либо CMS для редактирования контента, я про добавление нового функционала, страниц и тд.

    1. Нет, не использую. Иногда сталкиваюсь с DotNetNuke, но эта CMS мне не очень нравится. Имхо, если чем и заниматься в плане CMS, то нужно смотреть в первую очередь на EPIserver (это если про .Net стек говорить).

      И вообще, мне вот кажется что WordPress очень даже ничего в плане CMS-системы. :)

  2. а можно увидеть пример, как вы используете Unity для переключения между фейковыми и настоящими?

    1. Для этого наверное нужен отдельный пост, но на самом деле это достатночно просто – есть rootContainer который содержит все неотъемлимые фичи, и есть субконтейнеры fake/integration/release/whatever. В них зарегены разные репозитарии, например.

      А дальше можно по-разному между ними переключаться. Например вот так:

      public T Get<T>()
      {
        #if DEBUG
        return fakeContainer.Resolve<T>();
        #else
        return realContainer.Resolve<T>();
        #endif
      }
      
  3. Спасибо за подборку, некоторые вещи стоит пощупать

  4. Уважаемый Дмитрий! Прокоментируйте плз 2 насущных вопроса по asp.net mvc3
    1. mvc3 уже достаточно зрелый продукт чтобы на нём делать сайты с достаточно навороченными и сложными GUI? Или всё ещё пост-бета версия пригодная только для простеньких сайтов?
    2. Есть ли в mvc3 нечто подобное struts в jsp – то есть на страницу из контороллера забрасывается объект-entity, а уже на странице некий движок разбрасывает значения из полей объекта по текстовым полям на странице. И наоборот при обновлении данных в бд движок собирает значения из полей на странице и переносит их в поля объекта. Я смотрел в инете но не могу понять есть ли что подобное уже в использовании.
    Зараннее благодарен за ответ. Алексей

Оставить комментарий