私たちの新しいプロジェクトは始まったばかりで、そのアーキテクチャに関連する問題があります。
3 層のアーキテクチャがあります。
- WebUI
- 仕事
- データリポジトリ
各レイヤーは、その下のレイヤーのみを参照します。通信は、次のようentities
に and business objects
(BO) と呼ばれるもので行われます。
DataRepositories <--entities--> Business <--BO--> WebUI
<--X-->
タイプ X のオブジェクトを使用した通信を意味します。
したがって、たとえばUserEntity
エンティティUser
として、BOとして持っています。もう 1 つのタイプはTicketEntity
、 とを持つチケットTicket
です。
現在、DataRepositories、Business、および WebUI のユーザー向けのような層を通る明確な垂直スライスがいくつかありAccounts
ます。これらは明確に定義されており、他のスライスとは相互作用しませんTickets
。
ここでの問題は、チケットにはユーザーである購入者がいて、アーキテクチャのどこでチケットとユーザーを接続すべきかわからないことです。ビジネス コンポーネントがそれらの間で対話する必要がありますか、それともデータ レイヤーがユーザーをチケットにマップする必要がありますか?
より具体的には、ビジネスに常駐し、WebUI から呼び出されるチケットを作成するメソッドがあります。これは、チケットの詳細と「ユーザー」を引数として取ります。これは、タイプ user のオブジェクトである必要があるのか、単にユーザー名/ID である必要があるのかはまだわかりません。CreateTicket を呼び出す前に、プレゼンテーションがユーザーを取得する必要があるというユーザー オブジェクトを渡す場合。ただし、WebUI が ID を渡す場合、ビジネス レイヤーはユーザー オブジェクトを解決する必要があります。これには、チケット (ビジネス) のユーザー ビジネス コンポーネントへの参照を追加する必要があります。