2

Liferay を使用して大規模なポートレット開発作業を開始していますが、作成中のさまざまなポートレットに関してこのプロジェクトを構築するのは難しいと感じています。プロジェクトをどのように構成すればよいかわかりません。開発チームは世界中に分散しており、バージョン リポジトリとして git を使用しています。ポートレットの開発には Spring Portlet MVC を使用し、サービス レイヤーにはサービス ビルダーを使用しています。

この3つのアプローチについて考えることができます。

  1. ポートレットごとに新しいポートレット プロジェクトを作成する

    • 各ポートレットを個別のポートレット プロジェクトに保持すると、開発者が個別に作業できるため、開発が簡単かつ迅速になります。
    • これは、ポートレットが共通のコードを使用する場合に問題になる可能性があります。そのため、異なるポートレットで同じタイプのコードが大量に増殖する可能性があります。
    • 多くのwarファイルがあり、それぞれがランタイムコストに追加されるため、これは制御不能になる可能性があります.
  2. ポートレットをいくつかのポートレット プロジェクトに論理的に分割する

    • これにより、ポートレット プロジェクトの数が減り、多くのコードを再利用できます。
    • このような構造には、一部のコントロールを配置できます。
  3. すべてのポートレットでポートレット プロジェクトを 1 つだけ作成する

    • これは、分散した開発者チームにとって管理が最も複雑になります。
    • 一般的なコードのほとんどは再利用できます。
    • これにより、一貫性の強化が容易になります。
  4. 1 と 2 の混合 (以下のコメントでの Dirk との議論に基づく) このアプローチは、1 と 2 の混合である必要があると思います。

    • 各開発者に、共通コンポーネントに関するいくつかのガイドラインとともに、独立したポートレット開発環境を提供したいと考えています。
    • このようにして、ポートレット コードをより詳細に制御し、ポートレット固有のコードのみに集中できます。
    • 同時に、共通コードは複数の人が変更する可能性があるため、より多くの制御が必要になる場合があります。

すでに liferay プロジェクト/ポートレットを作成している場合、またどのようなアプローチを選択したかについて、専門家の意見をお聞かせください。これらのことを念頭に置いて

  • さまざまな開発者によって複数のポートレットが開発されている場合、ポートレットの開発をどのように制御しますか。
  • 上記のアプローチの長所/短所は何ですか。
  • 上記のアプローチのいずれも適切でない場合は、考えられる最善のアプローチについて言及してください。

読んでくれてありがとう

4

2 に答える 2

2

Dirkの答えに何かを追加すると、私の経験則は、同じプロジェクトに同様のメンテナンスサイクルを持つポートレットを持つことです。たとえば、それらの1つを更新すると、通常はすべてを更新します.さまざまな UI。これは基本的にオプション 2 です。

それ以外は、オプションを非常にうまく釘付けにしました-答えは「中間」です。アプリサーバーのオーバーヘッドで分離のバランスを取ります。上記の経験則を使用すれば、設定は完了です。

開発環境に関して: すべての開発者は独自の環境で作業する必要がありますが、バージョン管理を通じて、もちろん同じプロジェクトで作業することができます。

于 2011-07-30T15:23:02.013 に答える
1

実際に構築しているプロジェクトの種類に大きく依存すると思います。あなたが話しているポートレットは、カプセル化された機能の意味でのポートレットであり、そのように使用されますか (つまり、最終的に Liferay のポートレットとして)? 私の意見では、それらの機能がバラバラで、互いに依存していない場合、それらは異なるプロジェクトに配置する必要があります。

コア機能 (たとえば、永続化レイヤーと関連するロジックまたはその他のビジネス ロジック) がある場合は、これを可能な限り再利用する必要があります。したがって、(1) は良い解決策ではないと思います。この共通のロジックは、たとえば別のプロジェクトにグループ化する必要があり、ポートレット自体はこれに依存しています。

一般的なアプローチとして: 開発者全員がすべての (またはほとんどの) プロジェクトにアクセスできるようにするには、何が問題になるでしょうか? 共通のコードはすべてのポートレットで再利用でき、それでも全員が自分の部分で作業するだけで済みます。

于 2011-05-11T15:11:57.903 に答える