Выбираем технологии и инструменты для разработки веб приложений.

1 Выбор и настройка инструментов для разработки фронтенда (только самые важные):

1.1 Twitter bootstrap — фреймворк позволяет писать качественную верстку и делать адаптивный дизайн. Сайт можно будет смотреть на разных устройствах.

1.2 requirejs — служит для написания js модулей по принципу amd и для асинхронной загрузки скриптов

1.3 globaljs — позволяет делать локализацию на клиенте. Пользователи могут заполнять формы(даты, числа, валюту и тп) в том виде в котором привыкли, на своем языке.

1.4 smartformatjs — позволяет делать плюаризацию слов на клиенте.

1.5 less — css препроцессорв, позволяет создать браузерно совместимый css и позволяет делать код более модульным и поддерживаемым.

1.6 jquerytmpl — шаблонизотор для генерации html на клиенте.

1.7 jquery.validate.unobtrusive — для валидации форм на клиенте. Поддерживает привязку атрибутов валидации от моделей от сервера.

2 Выбор и настройка инструментов для разработки бэканда (только самые важные):

2.1 фреймворк asp.net mvc5.

2.2 Entity Framework(ORM) — фреймворк для работы с моделями данных, что позволяет абстрагироваться от sql запросов. Данный фреймворк имеет еще реализацию code first и migration.

2.2 Ninject ( реализует механизмы Dependency Injection) — внедрение зависемостей. Позволяет писать код более независимый друг от друга. Что позволит с легкостью внедрять сервисы в другие сервисы. А так же заменять один сервис другим.

2.3 Ninject.Extensions.Interception (для поддержки AOP)- позволяет вынести сквозную функциональность в отдельные модули, что важно при организации sql транзакций, логировании, кэшировании и др.

2.4 Automapper (object to object) — позволяет избавиться от рутиной работы и не допускать баги при конвертировании одних объектов в другие. Automapper улучшает читаемость кода и повышает скорость разработки.

2.5 Elmah и Nlog — Логирование позволяет следить за работой пользователей сайта. Обнаруживать ошибки которые могут возникнуть при работе пользователя на сайте и представлять их в нужном формате. Elmah — имеет веб интерфейс и позволяет читать логи прям на сайте. Так же настройки elmah позволяют отправлять логи на почту или смс. Nlog может представить более подробный лог. Nlog не имеет веб интерфейс и представляет все логи в текстовом файле.

2.6 ASP.NET Identity — модуль авторизации пользователей. Данный модудь позволяет сделать как авторизацию на сайте(регистрацию, вход, выход, восстановления пароля), так и интеграцию с другими социальными сетями — авторизацию через facebook, вконтакте, google+ и тп.

2.7 SmartFormat — позволяет делать плюаризацию слов на сервере.

2.8 System.Linq.Dynamic — позволяет писать динамические линкью запросы для составления сложных запросов.

2.9 MvcDonutCaching — используется для кэширования html страниц. Позволяет настроить кэширование для частей html страницы. Например закэшировать шапку сайта, список товаров, а пользовательские данные такие, как виджет авторизации, кнопки и ссылки, доступные только менеджерам сайта не кэшировать.