invocar - CMS basado en Java con servicio RESTful/API para acceder al contenido
java rest client json (2)
Para aquellos que podrían votar para cerrar esta pregunta debido a "no constructivo: tal como está actualmente, esta pregunta no es adecuada para nuestro formato de preguntas y respuestas". - Sería genial si sugirieras dónde debería publicar esta pregunta ( https://softwareengineering.stackexchange.com/ ? o cualquier foro centrado en CMS?)
Preguntas similares se han hecho antes:
- https://stackoverflow.com/questions/918722/java-or-php-for-homegrown-cms
- https://stackoverflow.com/questions/4005811/is-there-a-good-cms-for-java
- https://stackoverflow.com/questions/8298790/java-web-cms-recommendations
- https://stackoverflow.com/questions/4837502/recommendations-for-a-lightweight-java-web-cms
- https://stackoverflow.com/questions/1939238/can-you-recommend-an-easy-to-use-easy-to-develop-cms
Todos tienen algunos años, así que me pregunto si hay nuevas recomendaciones / discusiones al respecto.
Algunos antecedentes: somos una tienda de Java, creamos / mantenemos sitios web para nuestros clientes, nuestra pila de tecnología son Java, Spring, SQL, JSP, HTML5, JQuery, Tomcat, JBoss, Maven, etc ... lo de siempre. Hasta ahora, en términos de "contenido" lo ponemos en algún archivo de propiedades leído por el JSP para copias (por ejemplo, descripción del producto X) o servicio de fondo que proporciona contenido dinámico (por ejemplo, ¿cuál es el valor actual del producto X? )
Ahora estamos reconsiderando nuestro enfoque para administrar el contenido porque estamos administrando más y más propiedades para el cliente con el mismo contenido (por ejemplo, un sitio web, un sitio web móvil, una aplicación móvil, etc.), así que definitivamente queremos evitar tener copias múltiples del mismo contenido distribuido.
Algunas cosas que estoy buscando particularmente:
Basado en Java (porque somos Java Shop: 1) más experiencia en el manejo de material basado en Java y 2) evitar introducir otra tecnología en la pila)
Extensibilidad / personalización. Necesitamos poder personalizar el CMS (por lo que queremos mantener nuestra experiencia en Java) para que pueda extenderse y conectarse con otros servicios web para consumir contenido, etc.
Centrarse en el contenido : necesitamos una separación clara entre el contenido y el procesamiento de la interfaz de usuario, volviendo a lo que estamos buscando donde tendremos que entregar el contenido en propiedades separadas.
Servicio / API RESTful para acceder al contenido, igual que el anterior. Necesitamos que el contenido sea accesible directamente como JSON / JSON-P /. XML feed
Necesitamos tener una IU decente con la que trabajar y, cuanto más intuitiva, mejor será para el usuario comercial, ya que es probable que algunos de nuestros clientes que se trasladan a la plataforma quieran administrar su propio contenido
Soporte multilingüe
Código abierto / bajo costo
Hasta ahora, varias opciones que tengo son:
Adobe CQ : parece ser la solución más ideal, pero desafortunadamente tiene un costo prohibitivo
Hippo CMS : parece encajar con lo que estamos buscando, no estoy seguro de qué tan bien está documentado, los tutoriales / procedimientos parecen ser bastante escasos, su cuota de mercado parece ser mayor en Europa que en América del Norte.
Liferay : más centrado como "portal" en comparación con CMS que proporciona contenido
Alfresco - Más centrado en "documentos"
dotCMS : al igual que Hippo CMS, parece que este podría adaptarse a nuestras necesidades.
Magnolia CMS : busca el mismo callejón que dotCMS e Hippo también. De los comentarios que he visto parece que están más centrados en un único sitio web y no en la separación clara entre el contenido y la interfaz de usuario.
Personalmente, no tengo mucha experiencia directa trabajando con CMS antes.
Sus comentarios / comentarios sobre cada una de las opciones anteriores, o si tiene otras soluciones en mente que no se mencionan aquí, serán muy apreciadas. Uno de mis desafíos es que tenemos que tomar una decisión realmente acertada, ya que, con independencia del camino que decidamos seguir, probablemente nos quedemos con él, la decisión no es algo que pueda descartarse fácilmente y comenzar de nuevo.
Personalmente tengo algo de experiencia con Hippo y mucho con dotCMS. Sé un poco sobre Alfresco, Liferay y Magnolia, pero no he trabajado con ellos antes. No tengo ninguna experiencia con Adobe CQ, porque nunca me tomé el tiempo para investigar. Esto se debe a que los altos costos son un obstáculo para muchos de nuestros clientes. Alfresco es de hecho una mejor solución si está buscando un sistema de gestión de documentos en línea, que creo que no es. Tiene razón acerca de que Hippo, Magnolia y dotCMS son algo similares, lo que no es extraño porque intentan resolver el mismo problema: ser un sistema de gestión de contenido web basado en Java de clase empresarial. Se centran en gran medida en la gestión del contenido que se puede utilizar en páginas que también son manejables con el CMS.
Para ser sincero: tengo un sesgo hacia dotCMS porque he trabajado mucho con los sistemas y sé mucho al respecto. Pensé en explicar por qué funciona para nosotros, así que puedes tomar eso en consideración. Trabajo en una tienda de Java que desarrolla mucho middleware para sus clientes utilizando JBoss y toda la pila de EE. Conectamos los sistemas antiguos (Cobol) y los nuevos juntos y ponemos una nueva interfaz web brillante encima de ese middleware que se dirige tanto a los administradores como a los consumidores. Para poder crear estas interfaces, necesitamos un CMS que haga bien algunas cosas:
- Basado en Java (porque somos una tienda de Java, esto nos permite tener a las mismas personas trabajando en el CMS y el middleware)
- Escalable horizontalmente a decenas de servidores sin demasiada molestia. En el caso clásico cuando se amplía a varios servidores, la base de datos y la carpeta de activos se comparten entre los nodos. Esto podría ser un problema cuando tienes muchos nodos, pero en la práctica no es un problema tan grande porque la mayor parte de la carga llegará al índice y no a la base de datos o al disco. En 2.5 y posteriores, dotCMS ofrece un modo de "compartir nada" donde cada nodo tiene su propia base de datos y carpeta de activos, pero esto requiere que use un servidor de creación adicional (leer: con licencia) que envía el contenido a cada uno de los nodos. No he jugado con esta configuración yo mismo, pero suena prometedor, especialmente porque cada nodo puede ser una caja simple y barata que solo usa postgresql / mysql y tomcat y porque ya no existe un solo punto de falla. En el caso clásico, si la carpeta de recursos compartidos o el archivo db se mueren, todos los nodos también estarían caídos, excepto cuando agrupe el archivo db y el disco, lo que es costoso hacer. Con esta configuración de "no compartir nada", este ya no es el caso. Como dije: no tengo experiencia con esto, pero parece que podría funcionar.
- Interfaz de administración utilizable por usuarios avanzados y personas no tecnológicas (clientes). No todo el mundo es "bueno con las computadoras", pero ellos también deben ser capaces de gestionar el contenido (muy a menudo estas personas trabajan en el departamento de marketing de nuestros clientes). dotCMS ofrece formas de crear interfaces de administración que muestran solo algunas de las funcionalidades que ofrece dotCMS. Esto les impide tener que entender todo el sistema, lo que acelera el entrenamiento y la aceptación.
- Contenido estructurado Esto es grandioso. Queremos ser capaces de definir muchos tipos de contenido, todos con un conjunto fijo de campos, al igual que una tabla de base de datos. Todo sin tener que reconstruir o reiniciar el sistema. Las personas que definirían contenido basado en esta estructura (el nombre que dotCMS usa para estos tipos) no pueden ingresar datos no válidos porque el sistema protege contra eso. Esto hace que construir sitios web sea mucho más a prueba de futuro y conveniente. Especialmente para desarrolladores.
- Enfócate en el contenido primero. Los primeros meses que utilizamos dotCMS, en realidad solo usamos dotCMS para administrar el contenido y exponerlo a través de las API de JSON. No usamos funciones de CMS, como definir plantillas y crear páginas. Esto funciona bien y suena como lo que estás buscando. dotCMS tiene un servicio web JSON / XML que devuelve contenido basado en consultas. Usamos esto mucho en casi todos nuestros proyectos, mira aquí para más información: http://dotcms.com/docs/latest/ContentAPI . Usar dotCMS para toda la interfaz también es una posibilidad. Especialmente con los controladores Spring que admite y el diseñador de plantilla nuevo agnóstico de CSS-framework, es una buena forma de crear sistemas que requieren algo más que solo un poco de contenido.
- Plurilingüe. dotCMS ofrece algunas formas de hacerlo. Puede crear contenido en todos los idiomas que necesite, incluso contenido no textual como imágenes. Debido al enfoque de "contenido primero", muchas cosas se contentan en dotCMS y se pueden tratar como tales, incluida la creación de una versión para cada idioma que necesite.
- Fuente abierta. dotCMS ofrece una versión de comunidad que utilizamos la mayor parte del tiempo. Solo para las funciones pro como el equilibrio de carga, el uso de Oracle para la base de datos, etc., es necesaria una versión paga. E incluso entonces, los costos son manejables. Consulte http://dotcms.com/products/editions/ para obtener más detalles sobre esto.
- Mecanismo de almacenamiento en caché interno Debido a la gran carga, algunos de los sitios que tenemos compilados necesitan almacenamiento en caché. DotCMS usa Google Guava para su almacenamiento en caché, que funciona bastante bien.
- Extendability, también un biggie. Necesitábamos poder ampliar la funcionalidad de dotCMS por razones obvias. DotCMS solía ofrecer solo una manera de hacer plugins de la vieja escuela que es fea y se basa en un script ant que sobrescribe las clases de dotCMS con las suyas propias. Funciona bien, pero siempre me siento sucio después de escribir un plugin. Sin embargo, desde la versión 2 ofrecen un marco de plugin basado en OSGi que es bastante agradable y mucho más amigable para los desarrolladores. Salió de beta en la versión 2.5. Estamos planeando transferir todos nuestros complementos al nuevo marco.
- Multi host Necesitamos poder alojar múltiples sitios dentro del mismo CMS. DotCMS proporciona esto de forma nativa. También es una buena forma de compartir cosas comunes entre múltiples hosts que usamos mucho.
Por supuesto, también hay desventajas. Aquí hay algunos:
- Los CMS web como dotCMS almacenan su contenido en una base de datos y los activos como archivos en el disco. Esto hace que el control de versiones y la sincronización entre diferentes servidores sea un problema. A partir de la versión 2.5, dotCMS ofrece herramientas de sincronización que le permiten enviar contenido de un entorno (por ejemplo, UAT) a otro (por ejemplo, PROD), lo que ayuda. Pero no poder pagar una sola versión del contenido de algo como GIT o SVN es muy molesto. Especialmente porque nosotros, como desarrolladores de Java, estamos acostumbrados a cosas como las pruebas automatizadas en un entorno de integración continua. Por supuesto, puede almacenar la base de datos como una declaración SQL y el directorio de activos, pero eso es lento y no tan "agradable". Pero, de nuevo, todos los sistemas que almacenan estados en una base de datos tienen este defecto.
- DotCMS toma algo de tiempo para aprender. No es un CMS pequeño como Wordpress lo que entenderás en una tarde. Tiene muchas características y es muy potente, pero lo más probable es que necesite un día más o menos para comprender la forma de dotCMS y luego otro par de días para comprender todas las API. Te recomiendo que primero leas algunos documentos y los pruebes antes de construir un sitio de producción real: de muchas maneras conducen a Roma, pero algunos de ellos consisten en arenas movedizas. :)
- DotCMS tiene mucha memoria RAM. Para mantener las cosas rápido, almacena todo en caché, por lo que si tienes mucho contenido, comerá en la RAM que tienes disponible. Puede ajustar esto, pero es más fácil darle suficiente RAM que hemos encontrado.
- No todas las configuraciones del cliente de edición WebDAV + son compatibles con dotCMS. Por ejemplo, en un Mac, he descubierto que es mejor utilizar Cyberduck como cliente WebDAV y Aptana como editor de texto. Otras configuraciones hacen cosas raras que a dotCMS no le gusta mucho. Tienes que jugar un poco para descubrir cuál es la mejor configuración para ti. Descubrí que si github un error en su github , lo arreglan en el próximo lanzamiento. Me dijeron que WebDAV es difícil de corregir porque no es un estándar fijo que yo entiendo, pero todavía puede ser un dolor en el trasero.
Si desea aprender dotCMS lea su documentación, no tan mala: http://dotcms.com/docs/latest/TableOfContents y también eche un vistazo a su sitio de demostración ( http://dotcms.com/products/demo/ ) En el sitio de demostración, encontrará ejemplos de todos los conceptos que ofrece dotCMS. Ah, y mira nuestros propios complementos dotCMS gratuitos también. Especialmente el minificador de JavaScript y CSS es muy útil: http://geekyplugins.com/ .
Espero que esto ayude un poco. Avísame si quieres saber más.
Descargo de responsabilidad: yo trabajo para Hippo, así que trataré de responder solo con hechos y sin opinión :-)
Hippo está completamente basado en Java, el front-end es independiente del lenguaje, pero está orientado a JSP o Freemarker, opcionalmente puedes usar una interfaz REST y usar lo que sea.
Se crean y recogen muchos complementos en la forja del hipopótamo .
El diseño centrado en el contenido ha sido un elemento básico del desarrollo de hipopótamos, no debería plantear ningún problema.
Sí, por defecto todas las llamadas JCR están disponibles. Además de eso, puede definir su propia interfaz REST para satisfacer sus necesidades, ejemplo en la demostración , documentado aquí .
Me atrevo a decir que sí, según mi experiencia, la mayoría de los usuarios que no son expertos en tecnología consideran que la interfaz es fácil de entender.
Multilingüe es fácil, parte de la configuración predeterminada multicanal .
La edición de la comunidad (que está completa, sin cebo y cambio) es de código abierto, hay alguna funcionalidad empresarial detrás de una licencia propietaria . La licencia también abre vías de soporte, además de Google Group y .
Ahora, en su comentario sobre la documentación incompleta, permítame ofrecer mi opinión: tiene razón, la documentación es una lucha continua. La mayoría de las cosas están documentadas, pero es difícil de encontrar. Estamos trabajando para mejorar los resúmenes, las presentaciones y los tutoriales, pero obviamente todavía no hemos terminado. Si no puede encontrar nada, generalmente la comunidad puede ayudarlo y orientarlo en la dirección correcta.