Pertanyaan CMS berbasis Java dengan layanan RESTful / API untuk mengakses konten [tertutup]


Bagi mereka yang mungkin memilih untuk menutup pertanyaan ini karena "tidak konstruktif - Karena saat ini berdiri, pertanyaan ini tidak cocok untuk format Tanya-Jawab kami." - Akan sangat bagus jika Anda menyarankan dimana haruskah saya memposting pertanyaan ini (https://softwareengineering.stackexchange.com/ ? atau forum yang berfokus pada CMS?)

Pertanyaan serupa telah ditanyakan sebelumnya:

Semuanya berumur beberapa tahun, jadi saya bertanya-tanya apakah ada rekomendasi / diskusi baru tentang hal ini.

Beberapa latar belakang: Kami adalah toko Java, kami membuat / memelihara situs web untuk klien kami, tumpukan teknologi kami adalah Java, Spring, SQL, JSP, HTML5, JQuery, Tomcat, JBoss, Maven, dll ... hal-hal yang biasa. Sejauh ini dalam hal "konten" kami memasukkannya ke dalam beberapa file properti yang dibaca oleh JSP untuk salinan (mis. Deskripsi produk X) atau layanan back-end yang menyediakan konten dinamis (misalnya, berapa nilai saat ini dari produk X ).

Sekarang kami memikirkan kembali pendekatan kami untuk mengelola konten karena kami mengelola lebih banyak properti untuk klien dengan konten yang sama (mis. Situs web, situs web seluler, aplikasi seluler, dll.), Jadi kami pasti ingin menghindari beberapa salinan dari konten yang sama tersebar di sekitar.

Beberapa hal yang sangat saya cari:

  1. Berbasis Java (karena kami adalah toko Java: 1) lebih ahli dalam menangani barang-barang berbasis Java dan 2) menghindari memperkenalkan teknologi lain ke tumpukan)

  2. Extensibility / kustomisasi. Perlu dapat menyesuaikan CMS (yang mengapa kami ingin tetap dalam keahlian Java kami) sehingga dapat diperpanjang untuk terhubung dengan layanan web lain untuk mengkonsumsi konten, dll.

  3. Fokus pada konten - kita perlu pemisahan yang jelas antara konten vs UI-render, kembali ke apa yang kita cari di mana kita perlu menyampaikan konten ke dalam properti terpisah.

  4. Layanan / API RESTful untuk mengakses konten - sama seperti di atas. Kami membutuhkan konten untuk dapat diakses secara langsung sebagai JSON / JSON-P /. Umpan XML.

  5. Harus memiliki UI yang layak untuk digunakan dan yang lebih intuitif lebih baik untuk pengguna bisnis karena beberapa klien kami yang mungkin dipindahkan ke platform mungkin ingin mengelola konten mereka sendiri

  6. Dukungan multibahasa

  7. Sumber terbuka / biaya rendah

Sejauh ini, beberapa opsi yang saya miliki adalah:

Adobe CQ - Tampaknya menjadi solusi paling ideal, tetapi sayangnya harganya mahal

Hippo CMS - Terlihat sesuai dengan apa yang kami cari, saya tidak yakin seberapa bagusnya didokumentasikan, tutorial / cara tampaknya cukup jarang, pangsa pasar mereka tampaknya lebih besar di Eropa daripada di Amerika Utara.

Liferay - Lebih fokus sebagai "portal" dibandingkan dengan CMS yang menyediakan konten

Di tempat terbuka - Lebih fokus pada "dokumen"

dotCMS - Seperti Hippo CMS, sepertinya yang satu ini mungkin sesuai dengan kebutuhan kita.

Magnolia CMS - Terlihat di sekitar gang yang sama dengan dotCMS dan Hippo juga. Dari komentar yang saya lihat sepertinya mereka lebih fokus pada satu situs web dan tidak memisahkan antara konten vs UI.

Saya pribadi tidak memiliki banyak pengalaman langsung bekerja dengan CMS sebelumnya.

Pendapat / komentar Anda tentang setiap opsi di atas, atau jika Anda memiliki solusi lain yang tidak disebutkan di sini, akan sangat dihargai! Salah satu tantangan saya adalah bahwa kita perlu membuat keputusan yang benar-benar sehat karena jalan mana pun yang kita pilih untuk dilalui, kita mungkin akan terjebak dengannya, keputusan bukanlah sesuatu yang dapat dengan mudah dibuang dan dimulai kembali.


32
2018-05-25 17:00


asal


Jawaban:


Secara pribadi saya memiliki pengalaman dengan Hippo dan banyak hal dengan dotCMS. Saya tahu sedikit tentang Alfresco, Liferay dan Magnolia tetapi saya belum pernah bekerja dengan mereka sebelumnya. Saya tidak memiliki pengalaman apa pun dengan Adobe CQ, karena saya tidak pernah mengambil waktu untuk menyelidiki. Ini karena biaya tinggi menjadi tidak masuk bagi banyak klien kami. Alfresco memang solusi yang lebih baik jika Anda mencari sistem manajemen dokumen online, yang saya pikir Anda tidak. Anda benar tentang Hippo, Magnolia dan dotCMS yang agak mirip, yang tidak aneh karena mereka mencoba memecahkan masalah yang sama: menjadi Sistem Manajemen Konten Web berbasis Java. Mereka sangat fokus pada pengelolaan konten yang dapat digunakan di halaman yang juga dikelola dengan CMS.

Sejujurnya: Saya memiliki bias terhadap dotCMS karena saya telah bekerja dengan sistem banyak dan tahu banyak tentang hal itu. Saya pikir saya akan menjelaskan mengapa itu berhasil bagi kami sehingga Anda dapat mempertimbangkannya. Saya bekerja di toko Java yang melakukan banyak pengembangan middleware untuk kliennya menggunakan JBoss dan seluruh EE stack. Kami menghubungkan sistem lama (Cobol) dan sistem baru bersama-sama dan memasang antarmuka web baru yang mengilap di atas middleware yang menargetkan admin dan konsumen. Untuk dapat membuat antarmuka ini, kami memerlukan CMS yang melakukan beberapa hal dengan baik:

  1. Berbasis Java (karena kami adalah toko Java ini memungkinkan kami untuk memiliki orang yang sama bekerja di CMS dan middleware)
  2. Skalabel horizontal ke puluhan server tanpa terlalu banyak kerumitan. Dalam kasus klasik ketika skala ke beberapa server, database dan folder aset dibagi antara node. Ini bisa menjadi masalah ketika Anda memiliki banyak node, tetapi dalam prakteknya itu bukan masalah besar karena sebagian besar beban akan memukul indeks dan bukan db atau disk. Dalam 2.5 dan lebih dotCMS menawarkan mode "berbagi apa-apa" di mana setiap node memiliki folder database dan aset sendiri, tetapi ini mengharuskan Anda untuk menggunakan server authoring tambahan (baca: berlisensi) yang mendorong konten ke setiap node. Saya belum bermain dengan pengaturan ini sendiri, tetapi kedengarannya menjanjikan, terutama karena setiap node dapat berupa kotak sederhana dan murah yang hanya menggunakan postgresql / mysql dan tomcat dan karena tidak ada satu pun titik kegagalan lagi. Dalam kasus klasik jika folder aset bersama atau db akan mati semua node akan turun juga, kecuali ketika Anda mengelompokkan db dan disk juga yang harus melakukan expensicv. Dengan pengaturan "berbagi apa-apa" ini, ini bukan lagi kasusnya. Seperti yang saya katakan: Saya tidak memiliki pengalaman dengan ini, tetapi kedengarannya seperti itu mungkin berhasil.
  3. Antarmuka admin dapat digunakan oleh pengguna daya dan orang non teknis (klien). Tidak semua orang "baik dengan komputer", tetapi mereka juga harus mampu mengelola konten (sangat sering orang-orang ini bekerja di departemen pemasaran klien kami). dotCMS menawarkan cara untuk membuat antarmuka admin yang hanya menampilkan beberapa fungsi yang ditawarkan dotCMS. Ini mencegah mereka karena harus memahami seluruh sistem yang mempercepat pelatihan dan penerimaan.
  4. Konten terstruktur. Ini masalah besar. Kami ingin dapat mendefinisikan banyak jenis konten semua dengan satu set bidang tetap, seperti tabel database. Semua tanpa harus membangun kembali atau me-restart sistem. Orang-orang yang akan menentukan konten berdasarkan struktur ini (nama dotCMS menggunakan untuk jenis ini) tidak dapat memasukkan data yang tidak valid karena sistem melindungi terhadap itu. Hal ini membuat situs web membangun lebih banyak bukti dan kenyamanan di masa depan. Khusus untuk pengembang.
  5. Fokus pada konten terlebih dahulu. Bulan-bulan pertama yang kami gunakan dotCMS kami sebenarnya hanya menggunakan dotCMS untuk mengelola konten itu sendiri dan mengeksposnya melalui JSON API. Kami tidak menggunakan fitur CMS seperti mendefinisikan template dan membuat halaman. Ini berfungsi dengan baik dan terdengar seperti hal yang Anda cari. dotCMS memiliki JSON / XML Webservice yang mengembalikan konten berdasarkan kueri. Kami menggunakan ini banyak di hampir semua proyek kami, lihat di sini untuk info lebih lanjut: http://dotcms.com/docs/latest/ContentAPI. Menggunakan dotCMS sendiri untuk seluruh frontend juga kemungkinan. Terutama dengan pengontrol Musim Semi yang didukungnya dan kerangka CSS agnostik perancang template baru itu adalah cara yang bagus untuk membangun sistem yang membutuhkan lebih dari sekedar beberapa konten.
  6. Multilingual. dotCMS menawarkan beberapa cara untuk melakukan ini. Anda dapat membuat konten dalam semua bahasa yang Anda butuhkan, bahkan konten non tekstual seperti gambar. Karena pendekatan "konten pertama" banyak hal yang konten dalam dotCMS, dan dapat diperlakukan seperti itu, termasuk membuat versi untuk setiap bahasa yang Anda butuhkan.
  7. Sumber terbuka. dotCMS menawarkan versi komunitas yang paling sering kami gunakan. Hanya untuk fitur pro seperti load balancing, menggunakan oracle untuk database, dll, versi berbayar diperlukan. Dan bahkan kemudian biayanya dapat dikelola. Lihat http://dotcms.com/products/editions/ untuk detail lebih lanjut tentang ini.
  8. Mekanisme cache internal. Karena beban yang tinggi, beberapa situs yang kami bangun perlu disembunyikan. DotCMS menggunakan Google Guava untuk caching mereka yang berfungsi dengan baik.
  9. Keteguhan, juga masalah besar. Kami harus dapat memperluas fungsi dotCMS untuk alasan yang jelas. DotCMS dulu hanya menawarkan cara lama di sekolah untuk melakukan plugin yang agak jelek dan didasarkan pada skrip semut yang menimpa kelas dotCMS dengan milik Anda sendiri. Ini berfungsi dengan baik, tapi saya selalu merasa kotor setelah menulis plugin seperti itu. Namun sejak versi 2 mereka menawarkan kerangka kerja plugin berbasis OSGi yang cukup manis dan jauh lebih ramah pengembang. Ini keluar dari beta dalam versi 2.5. Kami berencana untuk mem-port semua plugin kami ke kerangka kerja yang baru.
  10. Multi host. Kami harus dapat menghosting beberapa situs dalam CMS yang sama. DotCMS menyediakan ini secara asli. Ini juga cara yang bagus untuk berbagi hal-hal umum antara beberapa host yang kami gunakan banyak.

Tentu saja ada juga sisi bawah. Berikut beberapa di antaranya:

  1. Web CMSes seperti dotCMS menyimpan kontennya dalam database dan aset sebagai file pada disk. Ini membuat versi dan sinkronisasi antara server yang berbeda menjadi sakit di pantat. Mulai dari 2.5 versi dotCMS menawarkan alat sinkronisasi yang memungkinkan Anda untuk mendorong konten dari satu lingkungan (misalnya UAT) ke yang lain (misalnya PROD), yang membantu. Tetapi tidak dapat checkout satu versi konten dari sesuatu seperti GIT atau SVN sangat menjengkelkan. Terutama karena kami sebagai pengembang Java terbiasa dengan hal-hal seperti pengujian otomatis dalam lingkungan integrasi yang berkelanjutan. Tentu saja Anda dapat menyimpan database sebagai pernyataan SQL dan direktori aset tetapi itu lambat dan tidak begitu "bagus". Tetapi sekali lagi semua sistem yang menyimpan negara dalam database memiliki cacat ini.
  2. DotCMS membutuhkan waktu untuk belajar. Ini bukan CMS kecil seperti Wordpress yang akan Anda pahami di suatu sore. Ini memiliki banyak fitur dan sangat kuat, tetapi Anda kemungkinan besar akan membutuhkan satu atau dua hari untuk memahami cara dotCMS dan kemudian beberapa hari lagi untuk memahami semua API. Saya mendorong Anda untuk terlebih dahulu membaca beberapa dokumen dan mengotak-atiknya sebelum membangun situs produksi nyata: banyak cara mengarah ke Roma, tetapi beberapa di antaranya terdiri dari pasir hisap. :)
  3. DotCMS adalah RAM lapar. Untuk menjaga agar semuanya cepat di-cache semuanya, jadi jika Anda memiliki banyak konten itu akan menggerogoti RAM yang Anda miliki. Anda dapat men-tweak ini tetapi lebih mudah untuk hanya memberikan RAM yang cukup yang kami temukan.
  4. Tidak semua konfigurasi klien pengeditan WebDAV + kompatibel dengan dotCMS. Misalnya pada mac saya telah menemukan bahwa Anda paling baik menggunakan Cyberduck sebagai klien WebDAV dan Aptana sebagai editor teks. Pengaturan lain melakukan hal-hal aneh yang dotCMS tidak suka banyak. Anda harus bermain sedikit untuk mengetahui pengaturan terbaik untuk Anda. Saya menemukan bahwa jika Anda mengajukan bug pada mereka github mereka memperbaikinya di rilis berikutnya. Mereka mengatakan kepada saya bahwa WebDAV sulit untuk mendapatkan yang benar karena itu bukan standar tetap yang saya mengerti tetapi masih bisa menjadi sakit di pantat.

Jika Anda ingin belajar dotCMS, baca dokumentasi mereka yang tidak terlalu buruk: http://dotcms.com/docs/latest/TableOfContents dan juga lihat di situs demo mereka (http://dotcms.com/products/demo/). Di situs demo, Anda akan menemukan contoh semua konsep yang ditawarkan dotCMS. Oh dan periksa plugin dotCMS gratis kami sendiri juga. Terutama minifier JavaScript dan CSS sangat berguna: http://geekyplugins.com/.

Semoga ini membantu sedikit. Beri tahu saya jika Anda ingin tahu lebih banyak.


35
2018-05-26 15:41



Disclaimer: Saya bekerja untuk Hippo, jadi saya akan mencoba hanya menjawab dengan fakta dan bukan opini :-)

  1. Hippo sepenuhnya berbasis Java, front end adalah bahasa independen, tetapi diarahkan JSP atau Freemarker, Anda dapat menggunakan REST-interface dan menggunakan apa pun.

  2. Banyak plugin dibuat dan dikumpulkan di Hippo menempa.

  3. Desain konten-sentris telah menjadi pokok pengembangan Hippo, seharusnya tidak menimbulkan masalah.

  4. Ya, secara default semua panggilan JCR tersedia. Selain itu Anda dapat mendefinisikan antarmuka REST sendiri sesuai dengan kebutuhan Anda, contoh di demo, didokumentasikan di sini.

  5. Saya berani mengatakan ya, dalam pengalaman saya, sebagian besar pengguna non-tech menemukan antarmuka yang mudah dimengerti.

  6. Multilingual itu mudah, bagian dari pengaturan multi-saluran default.

  7. Edisi komunitas (yang lengkap, tidak ada umpan-dan-saklar) bersifat open source, ada beberapa fungsi perusahaan balik a lisensi kepemilikan. Lisensi juga membuka jalan dukungan, selain itu Grup Google dan Stack Overflow.

Sekarang, pada komentar Anda tentang dokumentasi yang tidak lengkap, izinkan saya menawarkan pendapat saya: Anda benar, dokumentasi adalah perjuangan yang berkelanjutan. Kebanyakan barang didokumentasikan, tetapi sulit ditemukan. Kami sedang berusaha meningkatkan ikhtisar, perkenalan, dan tutorial, tetapi kami jelas belum selesai. Jika Anda tidak dapat menemukan apa pun, biasanya komunitas dapat membantu dan mengarahkan Anda ke arah yang benar.


6
2018-05-27 08:50