Sitecore y ASP.net MVC


Estamos iniciando un nuevo proyecto con sitecore como nuestro CMS. Estaba pensando en usar Sitecore como Herramienta de Creación de Contenido y uso ASP.net MVC como en el lado de la entrega de contenido(CDA) junto con Sitecore. Me encantaría escuchar sus ideas y pensamientos sobre esto.

¿Alguien ha intentado esto?

¿Sitecore y MVC compiten o complementan tecnologías?

Cualquier idea arquitectónica es bienvenida.

Author: David Basarab, 2009-08-20

9 answers

Para ciertos casos, puede haber un gran beneficio al fusionar los dos. MVC no es muy adecuado para sitios basados en contenido. Sin embargo, las aplicaciones web con flujo estructurado y múltiples presentaciones de datos se benefician enormemente de ella. Sitecore tiene una cierta limitación cuando se trata de varias presentaciones de datos: solo puede definir un conjunto de detalles de diseño en un elemento. Si no tiene requisitos para la edición WYSIWYG o una vista previa sencilla con un solo clic, puede usar Sitecore como datos repositorio, y tomar ventaja de algunos de los valores de contexto que provienen de su canalización (como el lenguaje).

Se necesitan un par de modificaciones en la canalización HTTP de Sitecore para que esto funcione:

1) Si se utiliza la extensión aspx en IIS6 para obtener ASP.NET para manejar solicitudes MVC (por ejemplo, /Controller.aspx / Action), corrige el análisis de la ruta de archivo de Sitecore (hay un error en la forma en que Sitecore resuelve la ruta de archivo que provocará que la ruta se corte).

Para arreglar esto, coloque un nuevo procesador al inicio de la tubería 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's 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: No he tenido que usar la solución anterior en algún tiempo.)

2) Indicar a Sitecore que ignore las URL que se enrutan a ASP.NET MVC

Para lograr esto, coloque un nuevo procesador en la canalización httpRequestBegin después del 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();
        }
    }
}

Si utiliza idiomas en sus URL de Sitecore, deberá agregar alguna lógica personalizada que combine la generación de enlaces de Sitecore con MVC ActionLink generación, para asegurar que el idioma se agrega al inicio de su URL MVC. Sin embargo, con las modificaciones de canalización anteriores, la adición de idioma a la URL no debería tener efectos secundarios en el enrutamiento MVC (porque Sitecore reescribe la URL después de leer el idioma).

Una vez más, este enfoque solo es útil para ciertos tipos de aplicaciones. Sin embargo, en esos casos, Sitecore es una capa de datos excelente para su modelo. Mira en la creación de envoltorios de elementos personalizados para crear fuertemente tipeado objetos de dominio basados en elementos de Sitecore.

(Edit 9/13/2011: Custom Item Generator funciona muy bien para esto. http://blog.velir.com/index.php/2010/10/19/custom-item-generator/)

La mejor de las suertes.

 24
Author: techphoria414,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-13 07:34:01

Creo que la verdadera pregunta que debería hacerse aquí es: si ya tiene Sitecore en su lugar, ¿por qué querría la sobrecarga y complicatino de introducir MVC?

¿Tiene algún requisito comercial fuera del sitio web básico que requiera MVC?

 8
Author: Mark Cassidy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-21 10:55:49

Secundo el comentario de Mark sobre los requisitos. Vale la pena el riesgo? Lo más probable es que pierda las siguientes características de Sitecore si decide no utilizar la funcionalidad de renderizado nativa:

  1. OMS
  2. Formularios web para Marketers
  3. Representación condicional
  4. Editor de página
  5. Diseñador de páginas

Tal vez incluso más.

 6
Author: Alex Shyba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-31 23:12:19

Sé que los desarrolladores de Sitecore han considerado ASP.NET MVC, pero no se si lo han intentado. No se me ocurre ningún proyecto de Sitecore del que creo que se hubiera beneficiado ASP.NET MVC. El motor de respuesta dinámica de Sitecore, las canalizaciones, los manejadores, los comodines y otras características parecen proporcionar un superconjunto de lo que puede lograr con MVC. Historia similar con ASP.NET páginas maestras: puede utilizarlas con Sitecore, pero los detalles de diseño de Sitecore son superiores.

No estoy en contra ASP.NET MVC con o sin Sitecore, pero Sitecore parece proporcionar las características de un controlador (en realidad ASP.NET es el controlador y Sitecore solo se conecta), su arquitectura de información es el modelo y sus componentes de presentación son las vistas.

 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-21 14:38:37

Seguro que se pueden mezclar, y seguro que veo el valor de ello :) No se pierde ninguna funcionalidad nativa con el método que describo en mi entrada de blog aquí: http://www.chrisvandesteeg.nl/2012/02/26/sitecore-mvc /

 3
Author: Chris van de Steeg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-23 10:08:50

Por suerte, actualmente estoy trabajando en dos grandes proyectos que utilizan ambas tecnologías respectivamente. Y aunque soy un gran fan de ambos, no puedo ver ningún beneficio en la fusión de los dos.

En cuanto a Sitecore, hay una curva de aprendizaje, pero honestamente en mi caso, ya que realmente aprendí ASP.NET MVC "primero" a diferencia de los Formularios Web, la curva de aprendizaje también se ha atribuido ligeramente a mi inexperiencia con los Formularios Web. Dicho esto, todavía hay definitivamente un la curva de aprendizaje que implica Sitecore, pero hay una gran cantidad de materiales de formación y referencia disponibles para ayudar con eso. Además, los controles web que vienen con Sitecore hacen que se sienta mucho menos como construir una aplicación de formularios web recta. Además, existe la opción de usar XSLT como motor de renderizado que también es útil.

Si se trata solo de un proyecto en el que está pensando, yo diría que siga con Sitecore, ya que su sistema de presentación está bastante bien pensado. Y como Mark dijo anteriormente, realmente complicaría las cosas un poco yo y tampoco estoy seguro de lo que hay que ganar de ella, incluso. También haciéndose eco de los sentimientos de commodore73, construir cosas en Sitecore realmente parece que ya está utilizando MVC, simplemente utilizando un marco diferente.

 1
Author: Blair Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-12 00:26:01

MVC en Sitecore tiene potencial, pero creo que no está listo para la producción. Estás cubriendo terreno desconocido, como descubrí al crear este artículo de blog.

 1
Author: toovr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-23 13:04:53

Sé que esta publicación es bastante antigua, pero pensé que daría mi opinión sobre Sitecore MVC de todos modos. Hace unos meses empecé a trabajar en un proyecto utilizando exclusivamente Sitecore MVC. Hay muchas restricciones en lo que trabajo ya que este proyecto debe funcionar con o sin CMS y ser capaz de encajar con tantos CMS como sea posible (actualmente usamos 2).

ASP.NET MVC era una obviedad para nosotros. Estamos en 2015 y debemos seguir adelante con las nuevas tecnologías. Estamos usando Sitecore 8, y yo piense que Sitecore MVC ha madurado con Sitecore 7.

Aunque todavía hay algunos baches en el camino. Si planea usar Sitecore con publicaciones de formularios, asegúrese de que estén hechas con AJAX. Hacer una validación en un campo puede ser complicado si usas acciones POST regulares,pero hay soluciones.

 0
Author: gretro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-25 23:30:04

Ahora existe el proyecto Hábitat.

Sitecore Habitat es un proyecto de Sitecore bulit que utiliza la arquitectura modular. En su sitio web presentan un ejemplo completamente funcional para instalar y probar.

Proyecto Hábitat:

Https://github.com/Sitecore/Habitat

 -1
Author: SysDragon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-16 14:59:01