2

現在、3層のSpringとHibernateを使用してスタートアップWebアプリケーションを作成しています。ビュー、サービス、およびDAO。また、ドメインオブジェクトは別々に分離されています。これにビュー、Webサービス、およびスケジューラ(スプリング付き)を持つN層のJava EE Webアプリケーションの設計

Existing package structure

私はWebサービスとスケジューラを追加します。これらのクラスをどのレイヤに追加する必要がありますか?あるいは、私はこれらのための新しいパッケージを作りますか? n層ウェブアプリケーションのベストプラクティスは何ですか?

あなたの考えや経験をお伝えください。

答えて

2

いくつかの考え:

  1. パッケージは階層ではありません。階層(またはレイヤー)は関連する機能の集合の論理抽象であり、パッケージはコンパイル単位の物理的なグループ化ツールです。論理層を実装するために使用されるすべてのクラスが同じソースパッケージに存在する場合もありますが、そうである必要はありません。 webserviceserviceパッケージにうまくフィットし、または多分web呼ばservice内subpackgeますよう

  2. に思えます。

  3. スケジューラの場合は、serviceパッケージのどこかに属していてもかまいません(特に、他のコンポーネントがサービスAPIを介してスケジューラとインタフェースする場合)。そうでなければ、次に最も適切なことは、schedulerという独自のパッケージを与えることです。

ベストプラクティスは、1)作品と2)意味があります。 「n-tier web applications」は非常に幅広いトピックであり、すべての可能な場合に適用される具体的な回答は実際にはありません。

+0

ご協力ありがとうございます。 Webサービス(他のサービスを利用する)をサービスパッケージに追加すると、レイヤーを完全に分離することにはなりませんか? – ManuPK

+0

実際には、レイヤーの分離は、ソースファイルがどのようなパッケージ内に存在するかと比べて、コードが内部でどのように結合されているかにはるかにあります。たとえば、コードが疎結合(または全く結合されていない)他のサービスの実装では、レイヤーをきれいに分離しています。ただし、機能するために別のサービスの実装に密接に結合/依存している場合は、レイヤを完全に分離していないだけで、コードを別のパッケージに再配置する*ことはできません。 – aroth

3

ウェブとスケジューラパッケージには?

この質問には「正しい」答えはなく、パッケージのレイアウトが表示されているものを超えているかどうかはわかりませんが、具体的にするのは難しいです。

文脈上意味があり、それが一貫している限り、とにかく大したことではありません。また、元の機能と新しい機能の両方で機能を識別してリファクタリングした後で、既存の構造が変更されることがあります。

関連する問題