2009-08-20 23 views
34

Stiamo iniziando un nuovo progetto con sitecore come nostro CMS. Stavo pensando di utilizzare Sitecore come Content Authoring Tool e utilizzare ASP.net MVC come nel lato Content Delivery (CDA) insieme a Sitecore. Mi piacerebbe sentire le tue idee e pensieri su questo.Sitecore e ASP.net MVC

Qualcuno ha provato questo?

Sitecore e MVC in competizione o tecnologie complementari?

Tutte le idee architettoniche sono benvenute.

+0

Vale la pena notare a tutti coloro che si imbatte in questa ora che Sitecore sosterrà MVC come un quadro di prima classe in una versione successiva. http://www.sitecore.net/Community/Business-Blogs/Technical-Trends/Posts/2012/06/MVC-and-Sitecore-651-Overview.aspx –

+1

Ecco una buona raccolta di contenuti se stai appena iniziando con Sitecore e MVC: https://sitecore-community.github.io/docs/sitecore-mvc/ –

+0

Ho esperienza con Sitecore v8 +, qui MVC è un'opzione predefinita e completamente supportata. –

risposta

24

Per alcuni casi, può esserci un enorme vantaggio nell'unire i due. MVC non è eccezionale per i siti basati sui contenuti. Tuttavia, le applicazioni web con flusso strutturato e presentazioni multiple di dati ne traggono enorme beneficio. Sitecore ha un po 'di limitazione quando si tratta di presentazioni multiple di dati - è possibile definire un solo set di dettagli di progettazione su un oggetto. Se non hai i requisiti per la modifica WYSIWYG o per un'anteprima con un solo clic, puoi utilizzare Sitecore come repository di dati e sfruttare alcuni dei valori di contesto che provengono dalla sua pipeline (come la lingua).

Un paio di modifiche sono necessarie per la pipeline HTTP Sitecore per fare questo lavoro:

1) Se si utilizza l'estensione aspx in IIS6 per arrivare ASP.NET per gestire le richieste MVC (ad es /Controller.aspx/Action) , correggi l'analisi FilePath di Sitecore (c'è un bug nel modo in cui Sitecore risolve il FilePath che risulterà nel percorso che si spezzerà).

Per risolvere questo problema, posizionare un nuovo processore all'inizio della pipeline 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 2011/09/13: non ho dovuto usare la correzione di cui sopra in un certo tempo.)

2) Dillo Sitecore di ignorare gli URL che vengono instradati a ASP.NET MVC

Per fare ciò, posizionare un nuovo processore nella pipeline httpRequestBegin dopo 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(); 
     } 
    } 
} 

Se utilizzando linguaggi nel vostro Sitecore URL, è necessario aggiungere un po 'di logica personalizzata che combina Sitecore generazione legame con generazione MVC ActionLink, al fine di garantire che il linguaggio si aggiunge l'inizio della vostra MVC URL. Tuttavia con le modifiche alla pipeline di cui sopra, l'aggiunta della lingua all'URL non dovrebbe avere effetti collaterali sul routing MVC (perché Sitecore riscrive l'URL dopo aver letto la lingua).

Ancora una volta, questo approccio è utile solo per determinati tipi di applicazioni. In questi casi però, Sitecore crea un eccellente livello di dati per il tuo modello. Cerca nella creazione di wrapper di articoli personalizzati per creare oggetti di dominio fortemente tipizzati basati su elementi Sitecore.

(Edit 2011/09/13: personalizzato Generator Articolo grandi opere per questo http://blog.velir.com/index.php/2010/10/19/custom-item-generator/.)

Buona fortuna.

+0

Grazie per la risposta. Questo è esattamente quello che stavo pensando. Hai qualche esperienza sul modulo sitecore DomainObjects per creare oggetti di dominio fortemente tipizzati. Sto pensando a un ibrido di oggetti di dominio contenenti i miei dati di dominio e oggetti di presentazione che trasportano i dati dagli oggetti dominio + contenuti multilingue da sitecore alle viste, che presentano i dati in diversi formati. Gli oggetti di presentazione vengono creati nel controller con l'aiuto di un livello di servizio. Fammi sapere se ha senso. – Vinod

+1

È bello sentire che Sitecore supporterà MVC dalla versione 6.4. – Vinod

+0

Sì! Anche se non è incluso il codice di interruzione della pipeline sopra, il che è strano. btw, per rispondere in ritardo alla tua domanda, dovresti dare un'occhiata al Custom Item Generator di Velir nel repository Shared Source per creare i tuoi oggetti di dominio ... – techphoria414

8

Penso che la vera domanda che dovresti fare qui sia; se hai già Sitecore sul posto - perché vorresti il ​​sovraccarico e il complicatino dell'introduzione di MVC?

Avete esigenze di business al di fuori del sito Web di base che richiederebbero MVC?

+1

Perché i moduli Web sono orribili? –

+1

Come è questa una risposta? È una domanda, nel migliore dei casi retorica. – magnattic

+0

"Piacerebbe sentire le vostre idee e pensieri su questo. ho nessuno ha provato questo? È Sitecore e MVC in competizione o integrando tecnologie? Tutte le idee architettoniche sono i benvenuti." –

4

So che gli sviluppatori Sitecore hanno considerato ASP.NET MVC, ma non so se l'hanno provato. Non riesco a pensare a nessun progetto Sitecore che penso possa aver tratto beneficio da ASP.NET MVC. Il motore di risposta dinamica Sitecore, pipeline, gestori, caratteri jolly e altre funzionalità sembrano fornire un superset di ciò che è possibile ottenere con MVC. Storia simile con le pagine master di ASP.NET: potresti usarle con Sitecore, ma i dettagli di layout di Sitecore sono superiori.

Io non sono contro ASP.NET MVC con o senza Sitecore, ma Sitecore sembra fornire le funzionalità di un controller (in realtà ASP.NET è il controller e Sitecore si collega semplicemente), l'architettura delle informazioni è il modello e i componenti della presentazione sono le visualizzazioni.

1

Per fortuna, sto attualmente lavorando a due grandi progetti che utilizzano rispettivamente entrambe le tecnologie. E mentre sono un grande fan di entrambi, non riesco a vedere alcun vantaggio nell'unire i due.

Per quanto riguarda Sitecore va, c'è una curva di apprendimento, ma onestamente nel mio caso, dal momento che in realtà ho imparato ASP.NET MVC "prima" al contrario di Web Forms, la curva di apprendimento è stato anche un po 'attribuita ad un certo della mia inesperienza con Web Forms. Detto questo, c'è ancora sicuramente una curva di apprendimento coinvolta con Sitecore, ma ci sono molti materiali di riferimento e di formazione che girano per aiutarci. Inoltre, i controlli web forniti con Sitecore lo rendono molto meno simile alla creazione di un'app Web Form diretta. Inoltre, c'è la possibilità di utilizzare XSLT come motore di rendering che è altrettanto utile.

Se questo è solo un progetto a cui stai pensando, direi semplicemente attenersi a Sitecore in quanto il suo sistema di presentazione è abbastanza ben pensato. E come diceva Marco sopra, complicherebbe davvero un bel po 'le cose e non sono nemmeno sicuro di cosa ci sia da guadagnare. Anche riecheggiando i sentimenti di commodore73, la creazione di materiale in Sitecore sul serio sembra che tu stia già utilizzando MVC, semplicemente usando un framework diverso.

6

I secondo commento di Mark sui requisiti. Vale la pena correre il rischio? È molto probabile che sciogliere le seguenti caratteristiche di Sitecore, se si decide di non utilizzare la funzionalità di rendering origini:

  1. OMS
  2. Forms web per il marketing
  3. condizionale rendering
  4. Editor di
  5. Page Designer

forse anche di più.

1

MVC in Sitecore ha potenziale, ma non è pronto per la produzione, penso. Stai coprendo un terreno sconosciuto, come ho scoperto durante la creazione dell'articolo del blog this.

0

So che questo post è abbastanza vecchio, ma io comunque darei la mia opinione su Sitecore MVC. Ho iniziato a lavorare su un progetto alcuni mesi fa usando esclusivamente Sitecore MVC.Ci sono molte restrizioni su ciò con cui lavoro, dal momento che questo progetto deve funzionare con o senza CMS ed essere in grado di adattarsi al maggior numero possibile di CMS (Attualmente ne usiamo 2).

ASP.NET MVC è stato un gioco da ragazzi per noi. È il 2015 e dobbiamo andare avanti con le nuove tecnologie. Usiamo Sitecore 8 e penso che Sitecore MVC sia diventato maturo con Sitecore 7.

Tuttavia, ci sono ancora alcuni sobbalzi sulla strada. Se prevedi di utilizzare Sitecore con i post dei moduli, assicurati che vengano creati utilizzando AJAX. Effettuare una convalida su un campo può essere complicato se si utilizzano azioni POST regolari, ma esistono soluzioni alternative.

-1

Ora c'è il progetto Habitat.

Sitecore Habitat è un progetto Sitecore che utilizza il bulit dell'architettura modulare. Nel loro sito web presentano un esempio pienamente funzionante da installare e testare.

progetto Habitat:

https://github.com/Sitecore/Habitat

+0

perché i downvotes? questo non è SPAM. Questo progetto è ufficiale di Sitecore e utilizza Helix per le migliori pratiche – SysDragon