2009-08-20 18 views
34

Wir beginnen ein neues Projekt mit Sitecore als unser CMS. Ich dachte daran, Sitecore als Content Authoring Tool zu verwenden und ASP.net MVC wie in der Content Delivery (CDA) -Seite zusammen mit Sitecore zu verwenden. Würde gerne Ihre Ideen und Gedanken dazu hören.Sitecore und ASP.net MVC

Hat jemand das versucht?

Konkurrieren Sitecore und MVC oder ergänzende Technologien?

Alle architektonischen Ideen sind willkommen.

+0

Es ist erwähnenswert, für jeden, der jetzt über diese kommt, dass Sitecore MVC als First-Class-Rahmen in einem späteren Release unterstützt. http://www.sitecore.net/Community/Business-Blogs/Technical-Trends/Posts/2012/06/MVC-and-Sitecore-651-Overview.aspx –

+1

Hier ist eine gute Sammlung von Inhalten, wenn Sie gerade erst anfangen out mit Sitecore und MVC: https://sitecore-community.github.io/docs/sitecore-mvc/ –

+0

Ich habe Erfahrung mit Sitecore v8 +, hier ist MVC eine Standardoption und vollständig unterstützt. –

Antwort

24

In bestimmten Fällen kann es sehr vorteilhaft sein, die beiden zusammenzuführen. MVC ist nicht so toll für Content-Driven-Sites. Allerdings profitieren Webanwendungen mit strukturiertem Fluss und mehrfacher Darstellung von Daten enorm davon. Sitecore hat eine gewisse Einschränkung, wenn es um Mehrfachpräsentationen von Daten geht - Sie können nur einen Satz von Designdetails für einen Artikel definieren. Wenn Sie keine Voraussetzungen für die WYSIWYG-Bearbeitung oder eine einfache Vorschau mit einem Klick haben, können Sie Sitecore als Datenrepository verwenden und einige der Kontextwerte aus der Pipeline (z. B. Sprache) nutzen.

Ein paar Änderungen sind auf die Sitecores HTTP-Pipeline notwendig, um diese Arbeit zu machen:

1) die aspx Erweiterung in IIS6 Bei der Verwendung von ASP.NET MVC zu bekommen Anfragen (zB /Controller.aspx/Action) zu handhaben , beheben Sie das FilePath-Parsen von Sitecore (es gibt einen Fehler in der Art, wie Sitecore den FilePath auflöst, der dazu führt, dass der Pfad zerlegt wird).

Um dies zu beheben, legen Sie einen neuen Prozessor am Anfang der httpRequestBegin-Pipeline.

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; 
     } 
    } 
} 

(Bearbeiten 2011.09.13: Ich habe nicht die oben fix in einiger Zeit verwenden musste.)

2) Sagen Sie Sitecores URLs zu ignorieren, die zu ASP.NET MVC weitergeleitet werden

Um dies zu erreichen, platzieren Sie einen neuen Prozessor in der httpRequestBegin-Pipeline nach dem 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(); 
     } 
    } 
} 

Wenn Sprachen in Ihrer Sitecores URLs verwenden, müssen Sie einige benutzerdefinierte Logik hinzufügen, die mit MVC Action Generation Sitecore Link Generation kombiniert, wird diese Sprache, um sicherzustellen, zu Beginn Ihrer MVC URL hinzugefügt. Bei den oben beschriebenen Pipeline-Änderungen sollte das Hinzufügen von Sprache zur URL jedoch keine Nebenwirkungen auf das MVC-Routing haben (da Sitecore die URL nach dem Lesen der Sprache neu schreibt).

Noch einmal, dieser Ansatz ist nur für bestimmte Arten von Anwendungen nützlich. In diesen Fällen erstellt Sitecore jedoch eine hervorragende Datenebene für Ihr Modell. Sehen Sie sich das Erstellen von benutzerdefinierten Item-Wrappern an, um basierend auf Sitecore-Elementen stark typisierte Domänenobjekte zu erstellen.

(Edit 2011.09.13: Benutzerdefinierte Artikel Generator funktioniert gut für diese http://blog.velir.com/index.php/2010/10/19/custom-item-generator/.)

Best of luck.

+0

Danke für die Antwort. Genau das habe ich mir gedacht. Haben Sie Erfahrungen mit dem Sitecore-Modul DomainObjects, um stark typisierte Domain-Objekte zu erstellen? Ich denke an eine Mischung aus Domain-Objekten, die meine Domain-Daten und Präsentationsobjekte enthalten, welche die Daten von den Domain-Objekten + mehrsprachigem Content von Sitecore zu den Views transportieren, die die Daten in verschiedenen Formaten darstellen. Die Präsentationsobjekte werden in der Steuerung mit Hilfe einer Service-Schicht erstellt. Lass mich, wenn es überhaupt Sinn macht. – Vinod

+1

Großartig zu hören Sitecore wird MVC ab Version 6.4 unterstützen. – Vinod

+0

Ja! Obwohl nichts den Pipeline Abbruchcode oben enthält, ist das seltsam. BTW, um später Ihre Frage zu beantworten, sollten Sie den Custom Item Generator von Velir im Shared Source-Repository für die Erstellung Ihrer Domain-Objekte überprüfen ... – techphoria414

8

Ich denke, die wirkliche Frage, die Sie hier stellen sollten, ist; Wenn Sie Sitecore bereits installiert haben - warum sollten Sie den Overhead und die Kompliziertheit von MVC einführen?

Haben Sie geschäftliche Anforderungen außerhalb der Basis-Website, die MVC erfordern würde?

+1

Weil Webformulare schrecklich sind? –

+1

Wie ist das eine Antwort? Es ist eine Frage, bestenfalls eine rhetorische Frage. – magnattic

+0

„Würde gerne Ihre Ideen und Gedanken auf das hören. Haben jemand versucht das? Ist Sitecores und MVC konkurrierende oder ergänzende Technologien? Alle architektonischen Ideen sind willkommen.“ –

4

Ich weiß, dass Sitecore-Entwickler ASP.NET MVC berücksichtigt haben, aber ich weiß nicht, ob sie es versucht haben. Ich kann mir keine Sitecore-Projekte vorstellen, die meiner Meinung nach von ASP.NET MVC profitiert hätten. Die Sitecore Dynamic Response Engine, Pipelines, Handler, Wildcards und andere Features scheinen eine Obermenge dessen zu bieten, was Sie mit MVC erreichen können. Ähnliche Geschichte mit ASP.NET-Masterseiten - Sie könnten sie mit Sitecore verwenden, aber die Layoutdetails von Sitecore sind besser.

Ich bin nicht gegen ASP.NET MVC mit oder ohne Sitecore, aber Sitecore scheint die Funktionen eines Controllers bieten (wirklich ASP.NET ist der Controller, und Sitecore nur eingesteckt), Ihre Informationsarchitektur ist das Modell und Ihre Präsentationskomponenten sind die Ansichten.

1

Wie der Zufall es möchte, arbeite ich gerade an zwei großen Projekten mit beiden Technologien. Und obwohl ich ein großer Fan von beiden bin, sehe ich keine Vorteile darin, die beiden zusammenzuführen. Wenn es um Sitecore geht, gibt es eine Lernkurve, aber ganz ehrlich in meinem Fall, da ich ASP.NET MVC "zuerst" gelernt habe, im Gegensatz zu Web Forms, wurde die Lernkurve auch leicht etwas zugeschrieben meiner Unerfahrenheit mit Web Forms. Dennoch ist definitiv eine Lernkurve mit Sitecore verbunden, aber es gibt viele Trainings- und Referenzmaterialien, die dabei helfen. Mit den Web-Steuerelementen, die mit Sitecore geliefert werden, ist das Gefühl weit geringer als beim Erstellen einer Web Forms App. Außerdem gibt es die Möglichkeit, XSLT als Rendering-Engine zu verwenden.

Wenn dies nur ein Projekt ist, über das Sie nachdenken, würde ich sagen, bleiben Sie einfach bei Sitecore, da das Präsentationssystem ziemlich gut durchdacht ist. Und wie Mark oben gesagt hat, würde es die Dinge wirklich ein wenig komplizieren, und ich bin mir auch nicht sicher, was es davon überhaupt zu gewinnen gibt. Auch wenn man die Gefühle von Commodore73 nachempfindet, fühlt man sich bei Baustellen in Sitecore ernsthaft, als würde man MVC schon benutzen, nur mit einem anderen Framework.

6

Ich zweite Marks Kommentar zu den Anforderungen. Ist es das Risiko wert? Sie werden höchstwahrscheinlich die folgenden Features von Sitecores verlieren, wenn Sie sich entscheiden, keine native Rendering-Funktionalität zu verwenden:

  1. OMS
  2. Web Forms für Marketer
  3. Conditional Rendering
  4. Seiteneditor
  5. Seite Designer

vielleicht noch mehr.

1

MVC in Sitecore hat Potenzial, aber ist nicht produktionsreif, denke ich. Sie decken unbekannten Boden ab, wie ich bei der Erstellung des Blog-Artikels this entdeckte.

0

Ich weiß, dass dieser Beitrag ist ziemlich alt, aber ich würde trotzdem meine Meinung über Sitecore MVC geben. Ich habe vor ein paar Monaten begonnen, an einem Projekt mit ausschließlich Sitecore MVC zu arbeiten.Es gibt eine Menge Einschränkungen für meine Arbeit, da dieses Projekt mit oder ohne CMS funktionieren muss und in der Lage sein muss, mit so vielen CMS wie möglich zu arbeiten (Wir verwenden derzeit 2).

ASP.NET MVC war ein Klacks für uns. Es ist 2015 und wir müssen mit den neuen Technologien fortfahren. Wir verwenden Sitecore 8 und ich denke, dass Sitecore MVC mit Sitecore 7 ausgereift ist.

Es gibt jedoch noch ein paar Unebenheiten auf der Straße. Wenn Sie Sitecore mit Formular-Posts verwenden möchten, stellen Sie sicher, dass diese mit AJAX erstellt wurden. Eine Überprüfung auf einem Feld kann schwierig sein, wenn Sie normale POST-Aktionen verwenden, aber es gibt Problemumgehungen.

-1

Jetzt gibt es Habitat Projekt.

Sitecore Habitat ist ein Sitecore-Projekt, das die modulare Architektur verwendet. Auf ihrer Website präsentieren sie ein voll funktionsfähiges Beispiel zum Installieren und Testen.

Habitat Projekt:

https://github.com/Sitecore/Habitat

+0

warum die downvotes? Das ist kein Spam. Dieses Projekt ist offiziell von Sitecore und verwendet Helix für Best Practices – SysDragon