どれを明かすべきですか? なぜ?
モジュール化とは、ツールを分離するアプローチです。システムを多くのモジュールに。 さらに、複雑さが軽減され、システムの理解、保守、および再利用が向上します。 ここにリストされている、最も重要なモジュール化方法の 1 つが話題になることは間違いありません。Kit by Layer
このミッション構造では、レッスンはそれらが属するアーキテクチャ レイヤー バンドル内に配置されます。 これは、プログラムが他のプログラムと密接に関連していないレッスンを持っているため、調和の取れていない内部プログラムを引き起こします。 以下はレイヤーによるパッケージングの例です:
├──com.app
└──コントローラ
├── CompanyController
├── ProductController
└── モデル
├── 製品
└── リポジトリ
├── CompanyRepository
├── ProductRepository └── UserRepository
└── サービス
├──会社サービス
├─ ─ 製品サービス
└── ユーザーサービス
└── ユーティリティ
この構造を調べてみると、調和のとれていない内部プログラム以外に、プログラム間の結合が高いことに疑いの余地がないことがわかります。 . 以降 リポジトリレッスンはキャリアでベテランになること間違いなしレッスンとキャリア
レッスンはベテラン間違いなし コントローラー
のレッスンでは、プログラム間で高い結合が発生します。
さらに、要件を実装するために多くのプログラムで調整を獲得することは深刻です.
「何かを刺激するためには、すべての部分を特徴付けるためにトレースする必要があると感じました。」 — サンディ・メッツ
コンコードとカップリングとは? 一致: バンドル参加者の論理的な関係の程度を指します。 参加者間の高い関係により、バンドルの独立性が確保されます。 調和がとれないと、独立性が低下しますが、再利用性と理解可能性も大幅に低下します。 カップリング: プログラム/レッスン間の相互依存の程度を指します。 低カップリングにより、保守性が大幅に向上します。 どうやって? 要件のためにクラス内で行われた調整は、他のレッスンに影響を与えないため、アスペクトの結果は発生せず、維持はより単純になります. ハイハーモニーインテリアプログラムとプログラム間の低カップリング は、犯罪システムの評価にとって非常に重要です。 事実上のシステム評価により、システムの持続可能性が大幅に向上します。
では、どうやってこれを形成するのでしょうか?
機能別キット
このミッション構造では、プログラムはすべての教訓を持っています。機能に必要です。 密接に関連するレッスンを同一のバンドル内に配置することにより、バンドルの独立性が保証されます。 この構造の例を次に示します。
├── com.app └──しっかり
├──しっかり
├── CompanyController
├── CompanyRepository └──会社サービス
└──製品
├── プロダクトコントローラ
└── ProductService
└── person
├── Person
├── UserController ├── UserRepository
└── UserService
のクラスによるクラスの暴露この構造では、他の 1 つのバンドルが削除されます。 また、プログラム内のレッスンは、互いに密接に関連しています。 したがって、おそらく ハイハーモニー インテリア プログラム
が存在する可能性があります。 と
プログラム間のカップリングが少ない
さらに、この構造によりモジュール性が向上します。 どうやって? さらに 10 個のドメインがあることを確認してみましょう。 、 製品 と 人
。 レイヤー別キット 、 コントローラー
,
製品およびサービス
、および リポジトリ は、さまざまな単一のプログラムに配置されますであるため、ユーティリティ全体には 3 つのプログラム (util を除く) が含まれており、プログラムは参加者の気の利いた変更にふける。 次に、Kit by Feature
内で スタイル、同一のユーティリティには 13 のプログラムが含まれているため、モジュール性が向上します。
機能が 1 回のアクションで追加で削除される可能性がある場合、ユーティリティは最大限のモジュール性を備えています。
特長別キットのメリット
— 前述のとおり、Kit by Feature には
のプログラムがあります。 ハイハーモニー、ローカップリング
そして 高いモジュール性.
— Kit by Feature により、一部のレッスンで評価広告の発音が許可されます修飾子への使命 bundle-deepest
public の変更として なので、増えます
カプセル化。 あるいは、Kit by Layer では、事実上すべてのレッスンを強制的に発音させます public.
— 機能の主要なすべてのレッスンが同一のバンドル内にあるため、機能ごとのキットを使用すると、プログラム間を移動する必要がなくなります。
— 機能別のキットは、むさぼり食のマイクロサービス アーキテクチャです。 すべてのバンドルは、特定の機能に関連付けられたレッスンには当てはまりません。 あるいは、Kit By Layer はモノリシックです。 ユーティリティの次元が大きくなるにつれて、各バンドルのレッスンの変更はスランプなしで拡張されます. 結論
結論
推奨 、新しいものを配達することはおそらく犯罪的な信念ではないでしょう。マイクロサービス アーキテクチャのミッション。 あなたのユーティリティが大幅に強化され、その限界が確実な場合、マイクロサービス アーキテクチャに移行するのは犯罪的な信念であるはずです.
上記のスペースを考慮してみましょう。モノリスの使命からマイクロサービスを解放します。 マイクロサービスが主に機能のみに基づいている場合 、どの構造が間違いなくもっとシンプルにマイクロサービス アーキテクチャに移行しますか?
この質問への回答とその他の利点は、どのバンドル構造を明らかにすべきかを示しています.
EOF
私たちは 20 年以上の歴史を移行しています以前のコードベースからマイクロサービス構造へ🚀 あなたがこの喜びの一部であることを特徴付けるには、 申し込み
🤙