Подтвердить что ты не робот

Sitecore и ASP.net MVC

Мы начинаем новый проект с sitecore как наша CMS. Я думал использовать Sitecore как инструмент создания контента и использовать ASP.net MVC, как и на стороне доставки контента (CDA), вместе с Sitecore. Хотелось бы услышать ваши идеи и мысли об этом.

Кто-нибудь пробовал это?

Являются ли sitecore и MVC конкурирующие или дополняющие технологии?

Любые архитектурные идеи приветствуются.

4b9b3361

Ответ 1

В некоторых случаях может быть огромная польза для слияния двух. MVC не очень подходит для сайтов, ориентированных на контент. Тем не менее, веб-приложения со структурированным потоком и несколькими презентациями данных чрезвычайно полезны для него. Sitecore имеет несколько ограничения, когда речь идет о нескольких презентациях данных - вы можете определить только один набор деталей дизайна для элемента. Если у вас нет требований для редактирования WYSIWYG или простого предварительного просмотра одним кликом, вы можете использовать Sitecore в качестве хранилища данных и использовать некоторые из значений контекста, которые поступают из его конвейера (например, языка).

Для конвейера Sitecore HTTP необходимы две модификации:

1) Если вы используете расширение aspx в IIS6 для получения ASP.NET для обработки запросов MVC (например,/Controller.aspx/Action), исправьте синтаксический анализ Sitecore FilePath (есть ошибка в том, как Sitecore разрешает FilePath, что приведет к путь, который рубит).

Чтобы исправить это, поместите новый процессор в начале конвейера httpRequestBegin.

public class MvcFixHttpProcessor : Sitecore.Pipelines.HttpRequest.HttpRequestProcessor
{
    public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
    {
        //when using a path such as /Controller.aspx/Blahblahblah, Sitecore parsing of FilePath can break if Blahblahblah is too long
        RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(args.Context));
        if (routeData != null)
        {
            args.Url.FilePath = args.Context.Request.Url.LocalPath;
        }
    }
}

(Edit 9/13/2011: мне не нужно было использовать указанное исправление через некоторое время.)

2) Скажите Sitecore игнорировать URL-адреса, которые перенаправляются на ASP.NET MVC

Чтобы выполнить это, поместите новый процессор в конвейер httpRequestBegin после ItemResolver.

public class SystemWebRoutingResolver : Sitecore.Pipelines.HttpRequest.HttpRequestProcessor
{
    public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
    {
        RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(args.Context));
        if (routeData != null)
        {
            args.AbortPipeline();
        }
    }
}

Если вы используете языки в своих URL-адресах Sitecore, вам нужно будет добавить некоторую пользовательскую логику, которая объединяет создание канала Sitecore с генерацией MVC ActionLink, чтобы обеспечить добавление языка в начало вашего URL-адреса MVC. Однако с изменениями в конвейере выше, добавление языка к URL-адресу не должно иметь побочных эффектов при маршрутизации MVC (поскольку Sitecore перезаписывает URL-адрес после чтения языка).

И снова этот подход полезен только для определенных типов приложений. В этих случаях Sitecore создает отличный уровень данных для вашей модели. Изучите создание пользовательских оберток элементов для создания строго типизированных объектов домена на основе элементов Sitecore.

(Edit 9/13/2011: Пользовательский генератор элементов отлично работает для этого. http://blog.velir.com/index.php/2010/10/19/custom-item-generator/)

Желаем удачи.

Ответ 2

Я думаю, что настоящий вопрос, который вы должны задать здесь; если у вас уже есть Sitecore - зачем вам накладные расходы и сложность внедрения MVC?

Есть ли у вас какие-либо бизнес-требования за пределами основного веб-сайта, что потребует MVC?

Ответ 3

I second Отметьте комментарий о требованиях. Стоит ли рисковать? Скорее всего, вы потеряете следующие возможности Sitecore, если вы решите не использовать встроенные функции рендеринга:

  • OMS
  • Веб-формы для маркетологов
  • Условный рендеринг
  • Редактор страниц
  • Дизайнер страниц

может быть даже больше.

Ответ 4

Я знаю, что разработчики Sitecore считают ASP.NET MVC, но я не знаю, пробовали ли они это. Я не могу думать о каких-либо проектах Sitecore, которые, я думаю, выиграли бы от ASP.NET MVC. Механизм динамического ответа Sitecore, конвейеры, обработчики, подстановочные знаки и другие функции, похоже, обеспечивают надмножество того, что вы можете выполнить с помощью MVC. Аналогичная история с основными страницами ASP.NET - вы можете использовать их с Sitecore, но подробности компоновки Sitecore превосходят.

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

Ответ 5

Они уверены, что могут быть смешаны, и я уверен, что вижу его значение:) Никакая нативная функциональность не потеряна с помощью метода, который я описываю в своем сообщении в блоге: http://www.chrisvandesteeg.nl/2012/02/26/sitecore-mvc/

Ответ 6

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

Что касается Sitecore, есть кривая обучения, но, честно говоря, в моем случае, поскольку я на самом деле изучил ASP.NET MVC "первым", а не Web Forms, кривая обучения также была слегка приписана некоторым из моя неопытность с веб-формами. Тем не менее, по-прежнему существует определенная кривая обучения, связанная с Sitecore, но есть много учебных и справочных материалов, плавающих вокруг, чтобы помочь с этим. Кроме того, веб-элементы управления, которые поставляются с Sitecore, заставляют его чувствовать себя намного меньше, как создание прямого приложения Web Forms. Кроме того, есть возможность использовать XSLT как механизм рендеринга, который также пригодится.

Если это всего лишь один проект, о котором вы думаете, я бы сказал, просто придерживайтесь Sitecore, поскольку система презентации хорошо продумана. И, как сказал Марк, это очень усложнит ситуацию, и я тоже не уверен, что от этого выиграть. Также, повторяя чувства коммодора73, строительный материал Sitecore всерьез чувствует, что вы уже используете MVC, просто используя другую структуру.

Ответ 7

MVC в Sitecore имеет потенциал, но я не готов к производству. Вы закрываете неизвестную землю, как я обнаружил при создании этой статьи в блоге.

Ответ 8

Я знаю, что этот пост довольно старый, но, хотя я бы сказал свое мнение о Sitecore MVC в любом случае. Я начал работать над проектом несколько месяцев назад, используя исключительно Sitecore MVC. Есть много ограничений на то, с чем я работаю, поскольку этот проект должен работать с CMS или без него и быть в состоянии вписаться в максимально возможное количество CMS (в настоящее время мы используем 2).

ASP.NET MVC для нас не было проблемой. Это 2015 год, и мы должны продолжить новые технологии. Мы используем Sitecore 8, и я думаю, что Sitecore MVC стал зрелым с Sitecore 7.

Однако на дороге все еще несколько ударов. Если вы планируете использовать Sitecore с сообщениями о форме, убедитесь, что они созданы с использованием AJAX. Выполнение проверки в поле может быть сложным, если вы используете регулярные действия POST, но есть обходные пути.

Ответ 9

Теперь есть проект Хабитат.

Sitecore Habitat - это проект Sitecore, который используется с использованием модульной архитектуры. На своем веб-сайте они представляют полностью рабочий пример для установки и тестирования.

Проект Хабитат:

https://github.com/Sitecore/Habitat