company_banner

nopCommerce CMS на ASP.NET MVC: обзор функционала новой версии

    nopCommerce – это движок для создания интернет-магазинов с открытым исходным кодом и написанный на ASP.NET MVC. Разрабатывается проект нашими соотечественниками из города Ярославль, и на сегодняйшний день на его основе работает более 20,000 сайтов, включая такие бренды как Volvo, Turkish Airlines, Reebok.


    Несколько дней назад вышла новая версия продукта 3.70, в которой разработчики добавли полную поддержку Windows Azure. В предыдущих версий владельцы магазинов могли использовать только один instance в Azure, теперь же была добавлена поддержка нескольких. Следовательно, по сути этот функционал можно использовать на веб фермах. Это открываем нам отличные возможности для масштабирования приложения.

    Предположим, что вы уже скачали (http://www.nopcommerce.com/downloads.aspx) и установили (http://docs.nopcommerce.com/display/nc/Installing+nopCommerce) nopCommerce в Azure. Итак, что же было сделано для поддержки Azure, и как все это настроить и включить:

    Хранилище BLOB-объектов


    Теперь вы можете настроить хранение ресурсов (например, изображения продуктов и категорий) как BLOB-объектов, а не просто хранить на файловой системе, как это сделано по-умолчанию. Более подробно о службе хранилищ в Azure можно почитать тут (https://azure.microsoft.com/ru-ru/documentation/articles/storage-introduction/).

    Как настроить в nopCommerce:

    • Разумеется, сначала вам необходимо создать учетную запись BLOB хранилища в Windows Azure. Эта процедура хороша описана тут (https://azure.microsoft.com/ru-ru/documentation/articles/storage-create-storage-account/)


    • После этого вы сможете получить connection string, container и endpoint от этого хранилища.
    • Теперь необходимо открыть файл web.config в nopCommerce. Найдите XML элемент AzureBlobStorage и введите туда полученные ранее connection string, container и endpoint
    • Как только это будет сделано, ваши ресурсы будут храниться в Azure BLOB

    Кеширование и распределенные сессии


    Разумеется, в любом распределенном приложении нам надо иметь поддержку распределенного кеширования и сессий. Иначе различные экземпляры приложения будут использовать разные данные. Мы выбрали Redis (http://redis.io/) для реализации этого функционала, так как Azure и многие другие облачные сервисы уже поддерживают его.

    Как настроить в nopCommerce:

    • Сначала установим Redis. О том, как использовать Redis в Azure хорошо написано тут (https://azure.microsoft.com/ru-ru/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/).


    • Как только предыдущий шаг завершен, нам надо скопировать и указан connection string от Redis в web.config файле в nopCommerce. Найдите XML элемент «RedisCaching», установите атрибут «Enabled” в «True», а потом укажите в следующем атрибуте сам connection string к Redis. Теперь все кешированные данные хранятся в Redis
    • Теперь проделаем тоже самое для сессий. Снова откройте web.config файл, раскомметируйте элемент «sessionState» и укажите в нем ту жу самую connection string, что использовалась на предыдуем шаге

    <sessionState mode="Custom" customProvider="MySessionStateStore">
          <providers>
            <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="localhost" accessKey="" ssl="true" /> 
         </providers>
    </sessionState>
    

    Фоновые задачи (schedule tasks)


    И последний шаг. nopCommerce использует фоновые задачи для различные действий, которые должны выполняться автоматически. Например, отправка почты или обновление курсов валют. Разумеется, когда у нас несколько экземпляров (instance) приложения, то такие задачи должны выполняться только на одном из них. Иначе может случиться ситуация, когда одно и тоже письмо придет покупателю дважды (от каждого из экземляра приложения).

    nopCommerce

    Все также откроем web.config файл. Найдем XML элемент «WebFarms” и установим его атрибут “MultipleInstancesEnabled” в “True”. Для веб фермы этого будет достаточно, но в Windows Azure там же потребуется установить атрибут «RunOnAzureWebsites» в «True»

    Вот и все. Теперь nopCommerce готов в полноценной работе в Azure на нескольких экземплярах (instance). Вы больше не должны думать о том, хватит ли серверной мощности, чтобы обслуживать большое количество покупателей.
    • +12
    • 12,5k
    • 5
    Microsoft
    418,97
    Microsoft — мировой лидер в области ПО и ИТ-услуг
    Поделиться публикацией

    Комментарии 5

      +2
      Главное в ЦМСке, на мой взгляд — лёгкость её пиления под себя. Например в Orchard CMS нужно изменить\добавить помойму 8 файлов, чтобы заработал кастомный контентный тип. Всякие кентики и сайткоры тоже мрак, там даже MVC не было до недавнего времени. CQRS днем с огнем не сыскать Мы больше склоняемся к написанию кастомных решений под каждый новый проект, в итоге получается гораздо меньше гемора.
        +1
        Спасибо за статью. А мы, в команде nopCommerce, в свою очередь обещаем, что продолжим и дальше улучшать и совершенствовать продукт!
          0
          планируется переезд NopCommerce на .Net Core?
            0
            Конечно, в следующей версии. Мы уже используем ASP.NET Core на .NET Framework 4.6.

            На .NET Core пока не перешли только из-за того, что EF Core не поддерживает нормально навигационные свойства. Скоро они это сделают, и мы за ними сразу двинем на .NET Core
          0
          В предыдущих версиЯХ владельцы
          раскоммеНтируйте элемент
          фоновые задачи для различныХ действий

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

          Самое читаемое