2009-08-05 35 views
6

Estamos configurando nuestra primera migración a Sitecore. Tenemos varios sitios multilingües con contenido almacenado en campos de base de datos con LCID. Los controles de usuario realizan llamadas a la base de datos para mostrar contenido de diferentes idiomas. Estamos migrando nuestro contenido a los elementos de Sitecore y nos gustaría aprovechar la API de Sitecore para obtener el contenido de nuestros controles de usuario para construir estructuras de datos.Mejores prácticas de Sitecore

Me gustaría saber cómo estructurar proyectos de Visual Studio para el desarrollo de Sitecore con el fin de utilizar las soluciones VS existentes. ¿Duplicamos .dlls y configuraciones de Sitecore a todas las soluciones, o compartimos una instalación de Sitecore?

Además, ¿cómo instalas los archivos necesarios en producción para admitir sitios múltiples que existen como sitios web separados en IIS? ¿Tenemos que tener copias duplicadas de todos los archivos .dlls y config necesarios en una carpeta separada /sitecore para cada sitio web, o compartimos una carpeta con una carpeta virtual en cada sitio que apunta a la misma carpeta física /sitecore?

Respuesta

4

En general, recomendamos ejecutar todo lo relacionado con el 1 sitio web de IIS. Esto ahorra muchos problemas de configuración e implementación. Además de eso, no es necesario para el rendimiento usar múltiples sitios web.

La configuración de los proyectos se puede realizar de forma bastante directa. Simplemente asegúrese de que los objetivos de compilación estén establecidos en la carpeta/Sitio/bin de la instalación de Sitecore. Si es así, puedes reutilizar cualquier cosa. Puede vincular el Sitecore.Kernel como un elemento de solución en Visual Studio.

En general, creo que debería consultar a su oficina local de Sitecore para que piense en configurar esta solución. Como tenemos experiencia con este tipo de migraciones, nos complace brindarle el asesoramiento adecuado y analizar todas las opciones.

6

En mi experiencia, el "todo bajo 1 Página web IIS" para múltiples sitios con Sitecore sólo funciona cuando no se tiene lo siguiente:

  1. certificados SSL diferente para cada sitio: IIS sólo permitirá un certificado SSL por combinación de dirección IP/puerto y solo uno por sitio web en IIS. Tenemos 4 certificaciones SSL de comodín diferentes (para 4 dominios base diferentes) y, por lo tanto, tenemos que tener al menos 4 sitios web de IIS separados.
  2. Diferentes directorios virtuales por sitio: Si desea que un directorio virtual esté disponible en un sitio web pero no en el otro, debe tener diferentes sitios web en IIS.

Si tiene alguno de estos requisitos, deben ser sitios web diferentes en IIS (o los requisitos se deben manejar fuera de IIS).

En cuanto a cómo configurar esto, una cosa a tener en cuenta es que nos dijeron que tener varias instalaciones de Sitecore en un servidor requiere una licencia diferente o múltiple.

Para nosotros, tuvimos que compartir la misma instalación con varios sitios en IIS porque teníamos ambos requisitos (y solo una licencia). Todos los sitios web compartían la misma instalación de Sitecore (todos los archivos compartidos, incluidos los archivos DLL y web.config).Las pegas a esto son:

  • que cualquier cambio de configuración o DLL causan reinicia para todos los sitios web
  • que cada sitio tiene su propio dominio de aplicación (por lo que multiplica los requisitos de memoria, y en memoria caché ISN' t compartido)
  • ese dominio de aplicación es básicamente un proceso separado, por lo que cualquier mantenimiento u operación programada (es decir, borrar la memoria caché de medios) se ejecuta en todos los sitios web y accede a los mismos archivos. Esto puede causar problemas de rendimiento y concurrencia. Tuvimos que iniciar algunos de estos procesos desde tareas programadas externamente y solo en nuestro sitio web de edición para evitar conflictos.
  • ya que solo tenemos un archivo de configuración, no pudimos desactivar las funciones de edición para los sitios web de entrega de contenido. Esto significa que tuvimos que usar las funciones de IIS para evitar la edición en los sitios web de entrega de contenido.
  • tuvimos que tratarlo como una instalación multiservidor de sitecore, lo que significa que teníamos que configurar un stager para borrar el caché en la publicación. utilizamos el stager disponible en la Biblioteca de fuentes compartidas.
2
  • Usted debe comenzar con una solución de aplicación Web en blanco sin archivos/Sitecore en absoluto. Si necesita agregar un archivo o modificar un archivo sitcore, cree la estructura de la carpeta en su proyecto para que, al implementarlo, sobrescriba el archivo del sitecore existente.
  • Todos los cambios de configuración de Sitecore deben estar en la solución, en una carpeta/App_Confif/Include/z_ [Client].
  • Todos sus dlls para Sitecore deben provenir del sitecore oficial NuGet feed donde especifica la versión del sitecore, no utiliza "lo último" en NuGet.
  • Su web.config debe estar fuera de la caja Sitecore web.config y usar transformaciones para hacer del web.config lo que necesita en la compilación.
  • Debe desarrollar con en el Helix guidelines para la estructura de su proyecto.
  • Todos los cambios de elementos de Sitecore deben rastrearse en su elección de software de serialización. Si es TDS o Unicorn.

Mi prueba de fuego es si puedo crear un sitio con una herramienta Sim y desplegar mi código de proyecto y elementos, ¿funciona mi sitio? En algunas situaciones, extraemos contenido de producción/etapa de Sitecore using PowerShell, copiamos el paquete en un servidor Nuget y lo implementamos en desarrollo/CI con PowerShell.

Para crear un sitio, he usado herramientas Sim con la línea de comandos o este Powershell script.

No está solo en su frustración. Me he encontrado con varios clientes que tienen el sitio web entier Sitecore en su solución. Las implementaciones y actualizaciones son siempre muy difíciles. Pero si diseña una solución que no incluye archivos reales de Sitecore y puede implementarse en un sitio en blanco a través de CI. Entonces estarás en gran forma.

1

Para la pregunta número 2:

Utilizamos Helix guidelines/Habitat, parece ser la fuente de Sitecore las mejores prácticas. Toda la capacitación de Sitecore dice que se debe crear un proyecto fuera de Sitecore y solo importar cosas cuando las necesite. Para la configuración Sugeriría leer rápidamente this

Es cierto acerca de SSL y los grupos de aplicaciones pueden convertirse en un problema.La implementación en el sitio de un cliente reducirá todo, dependiendo de la configuración.

Si va a realizar varias instancias, deberá consultar su licencia de sitecore.

0

Para mi entender, puedo ver que tiene dos preocupaciones aquí:

1. Cómo estructurar el proyecto Sitecore

Soy un desarrollador de Sitecore durante más de 3 años, basado en mi experiencia, la mejor práctica es crear un único proyecto de Sitecore que sea la capa más alta de su solución No necesita instalar dlls de sitecore para todo el proyecto, simplemente mantenga su código anterior tal como estaba y gírelo al código base. Por ejemplo, acabo de terminar un proyecto que el cliente quiere mover a la utilización de Sitecore, la solución ya estaba allí, cuenta con 4 proyectos:

  1. ABC.Web ==> más alta capa
  2. ABC.Data ==> trabajar con capas de datos
  3. ABC.Services => capa de manipulación de negocio
  4. ABC.Domain ==> capa común

Hemos creado un nuevo proyecto que se deben instalar archivos DLL Sitecore, que en realidad sustituir ABC.Web (capa más alta) que contiene todo el código de Sitecore MVC y no cambió nada al código anterior. A partir de ese punto, podemos trabajar tanto con los datos del sistema anterior (haciendo referencia a los dlls ABC.Services) como desde Sitecore también.

2. ¿Cómo se instalan los archivos necesarios en producción para admitir varios sitios?

Sitecore admite multisitio estructurando el árbol de contenido de Sitecore y una pequeña configuración. NO DEBES crear sitios web separados en IIS, , en realidad son UN sitio web con diferentes dominios. En el archivo de configuración llamado SiteDefinition.config (o puedes agregar tu propio archivo de configuración), básicamente configuras un dominio con un elemento de inicio Sitecore reconoce el dominio que coincide con el archivo de configuración y redireccionará al el elemento de inicio correspondiente. Por ejemplo, en la imagen, creé 2 sitios (esencialmente, son 2 ramas del árbol de contenido del sitecore) con los elementos de inicio son (misitio1 y MySite2)

enter image description here

esta es mi 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> 

Puede hacer referencia a este tutorial para más detalles

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