2009-08-20 32 views
34

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

¿Alguien ha intentado esto?

¿Están compitiendo las tecnologías Sitecore y MVC o complementando?

Cualquier idea arquitectónica es bienvenida.

+0

Vale la pena señalar a cualquiera que viene a través de este ahora que Sitecore apoyará MVC como un marco de primera clase en una versión posterior. http://www.sitecore.net/Community/Business-Blogs/Technical-Trends/Posts/2012/06/MVC-and-Sitecore-651-Overview.aspx –

+1

Aquí hay una buena colección de contenido si solo está comenzando con Sitecore y MVC: https://sitecore-community.github.io/docs/sitecore-mvc/ –

+0

Tengo experiencia con Sitecore v8 +, aquí MVC es una opción predeterminada y totalmente compatible. –

Respuesta

24

Para ciertos casos, puede haber un gran beneficio al fusionar los dos. MVC no es ideal para sitios basados ​​en contenido. Sin embargo, las aplicaciones web con flujo estructurado y múltiples presentaciones de datos se benefician enormemente de ello. Sitecore tiene una cierta limitación cuando se trata de presentaciones múltiples 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 clic, puede usar Sitecore como un repositorio de datos y aprovechar algunos de los valores de contexto que provienen de su canalización (como el idioma).

Un par de modificaciones son necesarias para la canalización HTTP Sitecore para hacer este trabajo:

1) Si se utiliza la extensión aspx en IIS6 para conseguir ASP.NET para manejar las solicitudes de MVC (por ejemplo /Controller.aspx/Action) , arregle el análisis FilePath de Sitecore (hay un error en cómo Sitecore resuelve el FilePath que dará lugar a que la ruta se corte).

Para arreglar esto, coloque un nuevo procesador al comienzo 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; 
     } 
    } 
} 

(9/13/2011 Edición: No he tenido que utilizar la corrección anterior en algún tiempo.)

2) Envía Sitecore hacer caso omiso de las direcciones URL que se enrutan a ASP.NET MVC

Para lograr esto, coloque un nuevo procesador en la tubería 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 utilizando lenguajes en su Sitecore URL, tendrá que añadir un poco de lógica personalizada que combina la generación de enlace con la generación de Sitecore MVC ActionLink, para asegurar que el lenguaje se añade al comienzo de la URL de su MVC. Sin embargo, con las modificaciones de la tubería arriba, la adición del 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 excelente capa de datos para su modelo. Observe la creación de envolturas de elementos personalizados para crear objetos de dominio fuertemente tipados en función de los elementos de Sitecore.

(9/13/2011 Edición: Custom Generador de artículos funciona muy bien para este http://blog.velir.com/index.php/2010/10/19/custom-item-generator/.)

mejor de la suerte.

+0

Gracias por la respuesta. Eso es exactamente lo que estaba pensando. ¿Alguna de las experiencias en el módulo de sitio del sitio DomainObjects para construir objetos de dominio fuertemente tipados? Estoy pensando en un híbrido de objetos de dominio que contenga los datos de mi dominio y los objetos de presentación que llevan los datos de los objetos de dominio + contenido multilingüe del sitecore a las vistas, que presentan los datos en diferentes formatos. Los objetos de presentación se crean en el controlador con la ayuda de una capa de servicio. Déjame si tiene algún sentido. – Vinod

+1

Me alegra oír que Sitecore admita MVC desde la versión 6.4. – Vinod

+0

¡Sí! Aunque no se incluye nada, se incluye el código de aborto de la tubería anterior, lo cual es extraño. Por cierto, para responder tardíamente a su pregunta, debe consultar el Generador de elementos personalizados de Velir en el repositorio de fuentes compartidas para crear sus objetos de dominio ... – techphoria414

8

Creo que la verdadera pregunta que debe hacerse aquí es; si ya tienes Sitecore en su lugar, ¿por qué querrías la sobrecarga y la complicación de introducir MVC?

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

+1

Porque los formularios web son horribles? –

+1

¿Cómo es esta una respuesta? Es una pregunta, como mucho una retórica. – magnattic

+0

"Me encantaría escuchar sus ideas y pensamientos en esto. tiene a nadie intentó esto? Es Sitecore y MVC competencia o complemento de las tecnologías? Todas las ideas arquitectónicas son bienvenidos." –

4

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

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

1

Por suerte, actualmente estoy trabajando en dos grandes proyectos utilizando ambas tecnologías, respectivamente. Y aunque soy un gran admirador de ambos, no veo ningún beneficio en fusionar los dos.

En lo que respecta a Sitecore, hay una curva de aprendizaje, pero sinceramente en mi caso, dado que realmente aprendí ASP.NET MVC "primero" en comparación con Web Forms, la curva de aprendizaje también se ha atribuido ligeramente a algunos de mi inexperiencia con las Formas Web. Dicho esto, definitivamente hay una curva de aprendizaje relacionada con Sitecore, pero hay muchos materiales de capacitación y referencia para ayudar con eso. Además, los controles web que vienen con Sitecore hacen que se sienta mucho menos como construir una aplicación Web Forms directa. Además, existe la opción de usar XSLT como motor de renderizado, que también es útil.

Si este es solo un proyecto en el que estás pensando, yo diría que simplemente te quedas con Sitecore ya que su sistema de presentación está bastante bien pensado. Y como dijo Mark arriba, realmente complicaría un poco las cosas y tampoco estoy seguro de qué ganar con eso. También haciendo eco de los sentimientos de commodore73, construir cosas en Sitecore en serio parece que estás usando MVC, simplemente usando un marco diferente.

6

I segundo Comentario de Mark sobre los requisitos. Vale la pena el riesgo? Lo más probable es perder las siguientes características de Sitecore si decide no utilizar la funcionalidad de representación nativa:

  1. OMS
  2. Web Forms para el marketing de
  3. condicional representación
  4. editor de páginas
  5. diseñador de páginas

quizás incluso más.

1

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

0

Sé que este post es bastante viejo, pero pensé en dar mi opinión sobre Sitecore MVC de todos modos. Empecé a trabajar en un proyecto hace unos meses usando exclusivamente Sitecore MVC.Hay muchas restricciones con respecto a las que trabajo, ya que este proyecto debe funcionar con o sin CMS y ser capaz de encajar con tantos CMS como sea posible (actualmente utilizamos 2).

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

Todavía hay algunos baches en la carretera. Si planea usar Sitecore con las publicaciones de formularios, asegúrese de que estén hechas usando AJAX. Hacer una validación en un campo puede ser complicado si usa acciones POST regulares, pero hay soluciones provisionales.

-1

Ahora hay un proyecto de Habitat.

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

proyecto Hábitat:

https://github.com/Sitecore/Habitat

+0

¿por qué los votos a favor? esto no es SPAM Ese proyecto es oficial de Sitecore y utiliza Helix para las mejores prácticas – SysDragon