web-dev-qa-db-ja.com

コンテンツにアクセスするためのRESTfulサービス/ APIを備えたJavaベースのCMS

「建設的でない-現在のところ、この質問は私たちのQ&A形式には適さない」という理由でこの質問を閉じるために投票する可能性のある人にとって-どこに私がこの質問を投稿するべきかを提案するなら、素晴らしいでしょう( https://softwareengineering.stackexchange.com/ ?またはCMSに焦点を当てたフォーラム?)

同様の質問が以前に尋ねられました:

それらはすべて数年前のものなので、これに関する新しい推奨事項や議論があるかどうか疑問に思っています。

いくつかの背景:私たちはJavaショップです。クライアントのためにWebサイトを作成/維持しています。技術スタックはJava、Spring、SQL、JSP、HTML5、JQuery、Tomcat、JBoss、Mavenなどです。 ...通常のもの。これまでのところ、「コンテンツ」に関しては、JSPがコピー(たとえば、製品Xの説明)のために読み込むプロパティファイル、または動的コンテンツを提供するバックエンドサービス(たとえば、製品Xの現在の値は何ですか)。

同じコンテンツ(例:Webサイト、モバイルWebサイト、モバイルアプリなど)を使用してクライアントのプロパティをますます管理するため、コンテンツの管理方法を再考しているため、同じコンテンツが広がっています。

私が特に探しているいくつかのこと:

  1. Javaベース(私たちはJavaショップ:1)Javaベースのものを処理するための専門知識と2)スタックに別の技術を導入しないため)

  2. 拡張性/カスタマイズ。 CMSをカスタマイズできる必要があります(これがJava専門知識)内に固執したいので、他のWebサービスに接続してコンテンツを利用するように拡張できるようにします。

  3. contentに焦点を当てます-コンテンツとUIレンダーを明確に区別する必要があります。コンテンツを配信する必要がある場所を探します。別のプロパティ。

  4. コンテンツにアクセスするためのRESTfulサービス/ API-上記と同じ。コンテンツには、JSON/JSON-P /として直接アクセスできる必要があります。 XMLフィード。

  5. プラットフォームに移行する可能性のあるクライアントの一部は独自のコンテンツを管理する必要がある可能性が高いため、適切なUIを使用し、より直感的にビジネスユーザーに適している必要があります。

  6. 多言語サポート

  7. オープンソース/低コスト

これまでのところ、私が持っているいくつかのオプションは次のとおりです。

Adobe CQ-最も理想的なソリューションであるように見えますが、残念ながらそれは法外なコストです

Hippo CMS-私たちが探しているものに合うように見えます、それがどれだけうまく文書化されているかわかりません、チュートリアル/ハウツーはかなりまばらに見えます、彼らの市場シェアは北米よりヨーロッパの方が大きいようです。

Liferay-CMSがコンテンツを提供するのではなく、「ポータル」としてより集中

Alfresco-「ドキュメント」により重点を置く

dotCMS-Hippo CMSのように、これは私たちのニーズに合うかもしれません。

Magnolia CMS-dotCMSやHippoと同じ路地を見回します。私が見たコメントから、それらは単一のWebサイトに集中しており、コンテンツとUIの明確な分離ではないようです。

個人的には、以前はCMSを使った直接的な経験はあまりありません。

上記の各オプションについてのあなたの考え/コメント、またはここで言及されていない他の解決策がある場合は、大歓迎です!私が挑戦することの1つは、どちらの方法を選択するにしても、行き詰まってしまう可能性があり、決定を簡単に破棄してやり直すことができないため、本当に健全な決定を下す必要があるということです。

33
TS-

個人的には、HippoとdotCMSで多くの経験があります。私は、Alfresco、Liferay、およびMagnoliaについては少し知っていますが、これまで一緒に働いたことはありません。調査に時間をかけたことがないので、Adobe CQについてはまったく経験がありません。これは、多くのクライアントにとって高額な費用がかかるためです。 Alfrescoは、オンラインドキュメント管理システムを探しているのであれば、確かに優れたソリューションです。あなたはカバ、マグノリア、dotCMSがいくらか似ていることは正しいですが、同じ問題を解決しようとするのでそれほど変ではありません。エンタープライズクラスであるJavaベースのWebコンテンツ管理システムです。 CMSでも管理できるページで使用できるコンテンツの管理に重点を置いています。

正直に言うと、私はdotCMSに偏っています。なぜなら、私はシステムをよく使っており、それについてよく知っているからです。なぜそれが私たちにとって有効なのかを説明したいと思います。私はJavaショップで働いており、JBossとEEスタック全体を使用してクライアントのために多くのミドルウェア開発を行っています。古い(Cobol)システムと新しいシステムを接続し、光沢のある新しいWebインターフェイスを配置します管理者と消費者の両方を対象とするミドルウェアに加えて、これらのインターフェースを作成できるようにするには、いくつかの機能を備えたCMSが必要です。

  1. Javaベース(Javaショップなので、これにより、CMSとミドルウェアで同じ人が作業できるようになります)
  2. 手間をかけずに数十台のサーバーに拡張できる水平型。古典的なケースでは、複数のサーバーにスケールアウトすると、データベースとアセットフォルダーがノード間で共有されます。多くのノードがある場合、これは問題になる可能性がありますが、ほとんどの負荷はdbやディスクではなくインデックスにヒットするため、実際にはそれほど大きな問題ではありません。 2.5以降では、dotCMSは各ノードに独自のデータベースとアセットフォルダーがある「何も共有しない」モードを提供しますが、これにはコンテンツを各ノードにプッシュする追加の(読み取り:ライセンス済み)オーサリングサーバーを使用する必要があります。私はこのセットアップを自分で試したことがありませんが、特に各ノードがpostgresql/mysqlとTomcatのみを使用するシンプルで安価なボックスになり、単一障害点がなくなったため、有望に思えます。クラシックアセットの場合、共有アセットフォルダーまたはdbが停止すると、すべてのノードも停止します。ただし、dbとディスクをクラスター化する場合は、費用がかかります。この「何も共有しない」設定では、これは当てはまりません。私が言ったように:私はこれについての経験がありませんが、それはうまくいくかもしれません。
  3. パワーユーザーと非技術者(クライアント)の両方が使用できる管理インターフェイス。誰もが「コンピュータに長けている」わけではありませんが、彼らもコンテンツを管理できる必要があります(多くの場合、これらの人々はクライアントのマーケティング部門で働いています)。 dotCMSは、dotCMSが提供する機能の一部のみを示す管理インターフェイスを作成する方法を提供します。これにより、トレーニングと受け入れをスピードアップするシステム全体を理解する必要がなくなります。
  4. 構造化コンテンツ。これは非常に重要です。データベーステーブルのように、固定されたフィールドセットですべての種類のコンテンツを定義できるようにしたいと考えています。システムを再構築または再起動する必要はありません。この構造(dotCMSがこれらのタイプに使用する名前)に基づいてコンテンツを定義する人は、システムがデータを保護するため、無効なデータを入力できません。これにより、ウェブサイトを構築することが、はるかに将来性があり便利になります。特に開発者にとって。
  5. まずコンテンツに焦点を当てます。 dotCMSを使用した最初の数か月は、実際にはdotCMSのみを使用してコンテンツ自体を管理し、JSON APIを介してそれを公開しました。テンプレートの定義やページの作成などのCMS機能は使用しませんでした。これはうまく機能し、あなたが探しているもののように聞こえます。 dotCMSには、クエリに基づいてコンテンツを返すJSON/XML Webサービスがあります。ほとんどすべてのプロジェクトでこれを使用しています。詳細については、こちらをご覧ください: http://dotcms.com/docs/latest/ContentAPI 。フロントエンド全体にdotCMS自体を使用することも可能です。特に、サポートするSpringコントローラーとCSSフレームワークにとらわれない新しいテンプレートデザイナーを使用すると、一部のコンテンツだけでなく、他のコンテンツも必要とするシステムを構築するのに適しています。
  6. 多言語。 dotCMSはこれを行うためのいくつかの方法を提供します。画像などのテキスト以外のコンテンツも含め、必要なすべての言語でコンテンツを作成できます。 「コンテンツファースト」のアプローチのため、多くのものがdotCMSのコンテンツであり、必要な各言語のバージョンの作成など、そのように扱うことができます。
  7. オープンソース。 dotCMSは、ほとんどの場合に使用するコミュニティバージョンを提供しています。ロードバランシング、データベースにOracleを使用するなどのプロ機能の場合のみ、有料バージョンが必要です。そして、それでもコストは管理可能です。これについての詳細は http://dotcms.com/products/editions/ を参照してください。
  8. 内部キャッシュメカニズム。高負荷のため、私たちが構築したいくつかのサイトはキャッシュを必要とします。 DotCMSは、キャッシュにGoogle Guavaを使用しています。
  9. 拡張性も重要です。明らかな理由により、dotCMSの機能を拡張できる必要がありました。 DotCMSは、ちょっと醜く、dotCMSクラスを独自のクラスで上書きするantスクリプトに基づいたプラグインを実行する古い方法しか提供していませんでした。正常に動作しますが、そのようなプラグインを書いた後はいつも汚れています。ただし、バージョン2以降、OSGiベースのプラグインフレームワークが提供されており、かなり魅力的で、開発者にとってより使いやすいものになっています。 2.5バージョンではベータ版を終了しました。すべてのプラグインを新しいフレームワークに移植する予定です。
  10. マルチホスト。同じCMS内で複数のサイトをホストできる必要があります。 DotCMSはこれをネイティブに提供します。これは、よく使用する複数のホスト間で共通のものを共有するための良い方法でもあります。

もちろん欠点もあります。ここにいくつかあります:

  1. DotCMSのようなWeb CMSは、そのコンテンツをデータベースに保存し、アセットをディスク上のファイルとして保存します。これにより、異なるサーバー間でのバージョン管理と同期がお尻の痛みになります。 2.5バージョンから、dotCMSは、ある環境(たとえば、UAT)から別の環境(たとえば、PROD)にコンテンツをプッシュできる同期ツールを提供しています。しかし、GITやSVNなどのコンテンツの単一バージョンのコンテンツをチェックアウトできないのは非常に迷惑です。特に、Java=開発者は継続的な統合環境での自動テストなどに慣れているためです。もちろん、データベースをSQLステートメントおよびアセットディレクトリとして保存することはできますが、速度が遅く、そうではありません。 "しかし、データベースに状態を保存するすべてのシステムにこの欠陥があります。
  2. DotCMSの学習には時間がかかります。 Wordpressのような小さなCMSではありません。午後に理解できます。多くの機能があり、非常に強力ですが、dotCMSの方法を理解するには1日ほどかかる可能性があります。そして、すべてのAPIを理解するために、さらに2〜3日かかります。実際の本番サイトを構築する前に、まずいくつかのドキュメントを読んでいじくり回すことをお勧めします。
  3. DotCMSはRAM空腹です。物事を高速に保つためにすべてをキャッシュしているため、コンテンツが多い場合、RAMが利用可能になります。これは微調整できますが、十分な量を与える方が簡単ですRAM.
  4. WebDAV +編集クライアントのすべての構成がdotCMSと互換性があるわけではありません。たとえば、Macでは、Cyber​​duckをWebDAVクライアントとして使用し、Aptanaをテキストエディターとして使用するのが最適です。他のセットアップは、dotCMSがあまり気に入らない風変わりなことをします。少し遊んで、最適な設定を見つけてください。 github にバグを報告すると、次のリリースで修正されることがわかりました。 WebDAVは私が理解している固定された標準ではないため、正しく理解するのは難しいと言われましたが、それでもなおお尻の痛みになる可能性があります。

DotCMSについて学習したい場合は、-not-bad-のドキュメントを参照してください。 http://dotcms.com/docs/latest/TableOfContents と、デモサイト( http ://dotcms.com/products/demo/ )。デモサイトには、dotCMSが提供するすべての概念の例があります。ああ、私たち自身の無料のdotCMSプラグインもチェックしてください。特にJavaScriptとCSSの縮小版は非常に便利です http://geekyplugins.com/

これが少し役に立てば幸いです。もっと知りたい場合はお知らせください。

36
Koen Peters

免責事項:私はカバのために働いているので、意見ではなく事実だけで答えようとします:-)

  1. Hippoは完全にJavaに基づいており、フロントエンドは言語に依存しませんが、JSPまたはFreemarkerを対象としています。オプションで、RESTインターフェースを使用して何でも使用できます。

  2. 多くのプラグインが Hippo forge で作成および収集されます。

  3. コンテンツ中心のデザインは、Hippoの開発の中心であり、問​​題は発生しません。

  4. はい、デフォルトですべてのJCR呼び出しが使用可能です。それとは別に、必要に応じて独自のRESTインターフェースを定義できます デモの例ここに記載

  5. あえて言うなら、私の経験では、ほとんどの非技術系ユーザーはインターフェースが理解しやすいと感じています。

  6. 多言語は簡単です デフォルトのマルチチャネル設定の一部

  7. コミュニティエディション(完全版、ベイトアンドスイッチなし)はオープンソースであり、一部の エンタープライズ機能独自のライセンス の背後にあります。このライセンスは Google Group とStack Overflowの他に、サポートの道を開きます。

さて、ドキュメントが不完全であるというコメントについて、私の意見を述べさせてください。あなたは正しい、ドキュメントは進行中の闘争です。ほとんどのものは文書化されていますが、見つけるのは困難です。概要、紹介、チュートリアルの改善に取り組んでいますが、明らかにまだ完了していません。何も見つからない場合は、通常、コミュニティが助けてあなたを正しい方向に向けることができます。

6
Von Lion