2009-08-05 20 views
6

Stiamo impostando la nostra prima migrazione su Sitecore. Disponiamo di più siti multilingue con contenuto archiviato nei campi del database con LCID. I controlli utente effettuano chiamate al database per mostrare contenuti linguistici diversi. Stiamo migrando il nostro contenuto agli articoli Sitecore e vorremmo sfruttare l'API Sitecore per ottenere il contenuto dai nostri controlli utente per creare strutture dati.Best practice Sitecore

Mi piacerebbe sapere come strutturare i progetti di Visual Studio per lo sviluppo Sitecore al fine di utilizzare le soluzioni VS esistenti. Duplichiamo i file .dll e le configurazioni di Sitecore su tutte le soluzioni o condividiamo un'installazione Sitecore?

Inoltre, come si installano i file richiesti in produzione per supportare più siti che esistono come siti Web separati in IIS? Dobbiamo avere copie duplicate di tutti i file .dll e di configurazione richiesti in una cartella separata /sitecore per ogni sito Web oppure condividiamo una cartella con una cartella virtuale in ogni sito che punta alla stessa cartella fisica /sitecore?

risposta

4

In generale, si consiglia di eseguire tutto in 1 sito Web IIS. Ciò consente di risparmiare molti problemi di configurazione e distribuzione. Oltre a ciò, non è consigliabile sfruttare le prestazioni di più siti Web.

Le impostazioni dei progetti possono essere eseguite in modo molto semplice. Assicurati semplicemente che gli obiettivi di compilazione siano impostati sulla cartella/Website/bin dell'installazione di Sitecore. Se è così, sei in grado di riutilizzare qualsiasi cosa. È possibile collegare Sitecore.Kernel come elemento della soluzione in Visual Studio.

Nel complesso, penso che dovresti consultare il tuo ufficio Sitecore locale per pensare insieme a te a configurare questa soluzione. Poiché abbiamo esperienza con questo tipo di migrazione, siamo lieti di darti il ​​consiglio giusto e discutere tutte le opzioni.

6

Nella mia esperienza, il "tutto sotto 1 IIS sito web" per più siti con Sitecore funziona solo quando non si ha il seguente:

  1. diversi certificati SSL al sito: IIS consente solo un certificato SSL per combinazione indirizzo/porta IP e solo uno per sito Web in IIS. Abbiamo 4 certificati SSL wild card diversi (per 4 diversi domini di base) e quindi dobbiamo avere almeno 4 siti Web IIS separati.
  2. Directory virtuali diverse per sito: Se si desidera una directory virtuale disponibile su un sito Web ma non sull'altro, è necessario disporre di siti Web diversi in IIS.

Se si dispone di uno di questi requisiti, devono essere siti Web diversi in IIS (oppure i requisiti devono essere gestiti all'esterno di IIS).

Per quanto riguarda come impostare questo, una cosa da tenere a mente è che ci è stato detto che avere più installazioni di Sitecore su un server richiede licenze diverse/multiple.

Quindi per noi, abbiamo dovuto condividere la stessa installazione con più siti in IIS perché avevamo entrambi questi requisiti (e solo una licenza). Tutti i siti Web condividono la stessa installazione Sitecore (tutti i file condivisi, comprese le DLL e web.config).Le spalle di disegnare a questo sono:

  • che tutte le modifiche di configurazione o DLL causano riavvio per tutti i siti web
  • che ogni sito ha il suo dominio di applicazione (in modo che moltiplica i requisiti di memoria, e in memoria cache di isn' t condiviso)
  • il dominio dell'applicazione è fondamentalmente un processo separato, quindi qualsiasi operazione di manutenzione o programmata (ad esempio la cancellazione della cache multimediale) viene eseguita su ogni sito Web e accede agli stessi file. Ciò può causare problemi di prestazioni e concorrenza. Abbiamo dovuto avviare alcuni di questi processi da attività pianificate esternamente e solo sul nostro sito Web di modifica per evitare conflitti.
  • poiché abbiamo un solo file di configurazione, non è possibile disattivare le funzionalità di modifica per i siti Web di consegna contenuto. Ciò significa che dovevamo utilizzare le funzionalità di IIS per impedire la modifica sui siti Web di consegna dei contenuti.
  • abbiamo dovuto considerarlo come un'installazione multi-server di sitecore, il che significa che dovevamo impostare uno stager per svuotare la cache durante la pubblicazione. abbiamo usato lo stager disponibile nella libreria di condivisioni condivise.
2
  • Si dovrebbe iniziare con una soluzione di web application in bianco con nessun file/Sitecore a tutti. Se è necessario aggiungere un file o modificare un file sitcore, creare la struttura della cartella nel progetto in modo tale da distribuirlo, sovrascriverà il file del sitecore esistente.
  • Tutte le modifiche di configurazione di Sitecore devono trovarsi nella soluzione, in una cartella/App_Confif/Include/z_ [Client].
  • Tutte le DLL per Sitecore dovrebbero provenire dal sitecore ufficiale NuGet feed dove si specifica la versione del sitecore, non si utilizza "l'ultima" in NuGet.
  • Il tuo web.config dovrebbe essere un sitecore web.config e usare trasformazioni per rendere web.config in quello che deve essere sulla build.
  • È necessario sviluppare con il numero Helix guidelines per la struttura del progetto.
  • Tutte le modifiche degli articoli Sitecore devono essere tracciabili nella scelta del software di serializzazione. Se è il suo TDS o Unicorn.

La mia cartina di tornasole è se riesco a creare un sito con uno strumento Sim e distribuire il mio codice progetto e gli elementi, il mio sito funziona? In alcune situazioni, preleviamo contenuti di produzione/stage da Sitecore using PowerShell, copia il pacchetto su un server Nuget e lo distribuiamo allo sviluppo/CI con PowerShell.

Per creare un sito, ho utilizzato gli strumenti di Sim con la riga di comando o questo Powershell script.

Non sei solo nella tua frustrazione. Ho incontrato diversi clienti che hanno il sito web di Sitecore interamente nella loro soluzione. Le implementazioni e gli aggiornamenti sono sempre molto difficili. Ma se si progetta una soluzione che non include file Sitecore reali e può essere distribuita in un sito vuoto tramite CI. Allora sarai in ottima forma.

1

Per la domanda numero 2:

Usiamo Helix guidelines/Habitat, sembra essere la fonte per Sitecore migliori pratiche. Tutti gli allenamenti di sitecore dicono di creare un progetto al di fuori di Sitecore e di importare le cose solo quando ne hai bisogno. Per la configurazione suggerisco di leggere rapidamente this

È vero che SSL e pool di applicazioni possono diventare un problema.La distribuzione sul sito di un cliente farà cadere tutto, a seconda della configurazione.

Se si esegue un'istanza multipla, sarà necessario esaminare le licenze del sitecore.

0

Per la mia comprensione, posso vedere che si hanno due preoccupazioni qui:

1. Come strutturare il progetto Sitecore

Sono uno sviluppatore di Sitecore per più di 3 anni, in base alla mia esperienza, la soluzione migliore è creare un singolo progetto Sitecore che sia lo strato più alto della soluzione. Non è necessario installare sitecore dll per tutti i progetti, basta mantenere il vecchio codice così com'è e trasformarlo nel codice base. Per esempio, ho appena finito un progetto che il cliente vuole passare all'utilizzo di Sitecore, la soluzione era già lì, ha 4 progetti:

  1. ABC.Web ==> più alto livello
  2. ABC.Data ==> lavorando con livello di Data
  3. ABC.Services => strato di gestione aziendale
  4. ABC.Domain ==> strato comune

abbiamo creato un nuovo progetto che dovrebbe essere installa DLL Sitecore, che in realtà sostituiscono ABC.Web (livello più alto) che conterrà tutto il codice MVC Sitecore e non ha modificato nulla al vecchio codice. Da quel punto, possiamo lavorare con entrambi i dati dal vecchio sistema (facendo riferimento alle DLL di ABC.Services) e da Sitecore.

2. Come si installano i file richiesti in produzione per supportare più siti?

Sitecore supporta il multisite strutturando l'albero di contenuto Sitecore e una configurazione litte. NON è necessario creare siti Web separati in IIS, in realtà sono UN sito Web con domini diversi. Nel file di configurazione denominato SiteDefinition.config (o è possibile aggiungere il proprio file di configurazione), si imposta fondamentalmente un dominio con un elemento iniziale Sitecore riconosce il dominio che corrisponde a quello nel file di configurazione e reindirizzerà a l'elemento iniziale in modo corrispondente, ad esempio Nell'immagine, ho creato 2 siti (in sostanza, sono 2 rami di albero contenuto sitecore) con elementi iniziali (miosito1 e MySite2)

enter image description here

questo è il mio config

<sites> 
     <site name="MySite1" patch:before="site[@name='website']" 
      virtualFolder="/" 
      physicalFolder="/" 
      rootPath="/sitecore/content" 
      startItem="/content/MySite1/home" 
      database="web" 
      domain="extranet" 
      allowDebug="true" 
      cacheHtml="true" 
      htmlCacheSize="50MB" 
      enablePreview="true" 
      enableWebEdit="true" 
      enableDebugger="true" 
      disableClientData="false"/> 
     <site name="MySite2" patch:before="site[@name='website']" 
      virtualFolder="/" 
      physicalFolder="/" 
      rootPath="/sitecore/content" 
      startItem="/content/MySite2/home" 
      database="web" 
      domain="extranet" 
      allowDebug="true" 
      cacheHtml="true" 
      htmlCacheSize="50MB" 
      enablePreview="true" 
      enableWebEdit="true" 
      enableDebugger="true" 
      disableClientData="false"/> 
    </sites> 
.210

È possibile fare riferimento a questo tutorial per maggiori dettagli

https://briancaos.wordpress.com/2010/03/01/working-with-multiple-sites-in-sitecore/