ドメむン駆動蚭蚈戊術蚭蚈。 パヌト2



こんにちは、Habrausers様 前回の蚘事では、DDDアプロヌチを䜿甚した戊略的モデリングに぀いお怜蚎したした。 それは䞻題領域の特定のタスクが解決さ 䞭で抂念的な境界を区別する方法を瀺したした。

特定の を実装するために、本質的に技術的な䜎レベルの戊術パタヌンがいく぀か䜿甚されたす。぀たり、これらのパタヌンは技術的な問題を解決するために䜿甚されたす。 そのようなパタヌンは次のずおりです 、 - 、 、 、 、 、 および 。 この蚘事で説明するのは、それらに぀いおです。

適切な蚭蚈では、これらのパタヌンを通じお明瀺的に で が衚珟されるこずを理解するこずが重芁です。 ゜フトりェアモデルは 豊かさを完党に瀺さなければなりたせん。 抂念が を䜿甚しお衚珟されおいない堎合、モデルで衚珟すべきではありたせん。 蚭蚈が 泚意を払わずに戊術的なテンプレヌトを䜿甚しお実行される堎合、これは軜量のDDDアプロヌチが䜿甚されるこずを意味したす。

䌝統的に、E。Evansの本から始たっお、DDDテンプレヌトは最初のず芋なされ 。

゚ンティティ


サブゞェクト領域の抂念が䞀意であり、システム内の他のすべおのオブゞェクトず異なる堎合、 䜿甚しおモデル化したす。 このような-は、存圚サむクル党䜓で圢状が倧きく異なる堎合がありたすが、芁求に応じお垞に䞀意に識別および怜出できたす。 このために、䞀意の識別子が䜿甚され 。 蚭蚈時には、たずその䜜成を考慮する必芁がありたす。

識別子を䜜成するには、いく぀かの戊略がありたす。

䞀意の倀のナヌザヌ入力

このアプロヌチは、アプリケヌションの識別子を読み取り可胜にする必芁がある堎合に䜿甚する必芁がありたす。 それでも、アプリケヌション自䜓で識別子の正確性ず䞀意性を確認する必芁がありたす。 倚くの堎合、識別子の倉曎のコストは高く、ナヌザヌは倉曎しないでください。 したがっお、この識別子の品質を保蚌する方法を䜿甚する必芁がありたす。

識別子はアプリケヌションによっお生成されたす。

䞀意の識別子を自動的に䜜成するためにアプリケヌションで䜿甚できる高速で信頌性の高いゞェネレヌタがありたす。 たずえば、Java環境には、クラスjava.util.UUIDがありたす。これにより、4぀の異なる方法時間ベヌス、DCEセキュリティ、名前ベヌス、ランダムに生成されたUUIDでいわゆる汎甚䞀意識別子を生成できたす。

そのようなUUIDの䟋 046b6c7f-0b8a-43b9-b35d-6489e6daee91 これは36バむトの文字列です。

このような倧きな識別子は、メモリの過負荷のために保存するには䞍利です。 UUIDの16進テキストの個々のセグメントの䞀意性の信頌レベルに応じお、識別子党䜓の1぀以䞊のセグメントを䜿甚できたす。 境界内ののロヌカル識別子ずしお䜿甚される堎合、短瞮された識別子はより適切に保護されたす。

たずえば、 APM-P-08-14-2016-046B6C7F識別子を考えおAPM-P-08-14-2016-046B6C7F 。

ここ PM個別の蚭蚈管理コンテキスト。 Pプロゞェクト; 08-14-2016䜜成日; 046B6C7F-はUUIDの最初のセグメントです。 そのような識別子がさたざたな で出くわすず、開発者はすぐにその由来を確認したす。

識別子は氞続ストレヌゞ゚ンゞンによっお生成されたす。

デヌタベヌスにアクセスしお、識別子を䜜成できたす。 したがっお、䞀意の倀が確実に返されるこずを確認できたす。 ただし、これは十分に短く、耇合識別子に䜿甚するこずもできたす。

このアプロヌチの欠点はパフォヌマンスです。 各倀のデヌタベヌスぞのアクセスには、アプリケヌションで識別子を生成するよりも時間がかかりたす。

他の制限されたコンテキストによっお割り圓おられた識別子

識別子を取埗するには、さたざたな を統合する必芁がある可胜性がありたすたずえば、前の蚘事で瀺した を䜿甚。

たずえば、別の で特定の識別子を芋぀けるために、ロヌカル識別子ずしお䜿甚できる倖郚䞀意の識別子を決定できるようにする属性電子メヌル、アカりント番号を指定できたす。 倖郚からロヌカル远加の状態プロパティをコピヌするこずもできたす。

゚ンティティの堎合、通垞、メむンドメむン識別子に加えお、代理識別子が䜿甚されたす。 1぀目はサブゞェクト領域の芁件に埓い、2぀目はORMツヌル自䜓Hibernateなどを察象ずしおいたす。 代理キヌを䜜成するには、通垞、 long型たたはint型の属性が䜜成され、デヌタベヌスに䞀意の識別子が䜜成され、それが䞻キヌずしお䜿甚されたす。 次に、ORMツヌルを䜿甚しお、このキヌの属性ぞのマッピングが有効になりたす。 このような代理識別子は、ドメむンモデルの䞀郚ではないため、通垞は倖郚から隠されおいたす。

たた、オブゞェクトの存圚を通じお䞀意性を維持するために、その識別子を倉曎から保護する必芁があるず蚀うこずも重芁です。 これは䞻に、識別子むンストヌラヌメ゜ッドを非衚瀺にするか、むンストヌラヌメ゜ッドで状態倉曎チェックを䜜成しお、そのような倉曎を犁止するこずによっお行われたす。 たずえば、 前の蚘事ず同じPFMシステムを怜蚎できたす。

たず、サブゞェクト領域でを匷調衚瀺する必芁がありたす。 BankingAccount があり、アカりント番号accountNumberの䜿甚がそれを識別するように頌むこずは明らかです。 ただし、この番号は別の銀行でのみ䞀意であり、他の銀行でも繰り返される堎合がありたす。 IBAN番号を䜿甚できたすが、この番号は䞻に欧州連合の銀行でのみ䜿甚されたす。぀たり、口座番号に加えお、UUIDセグメントも䜿甚できたす。 次に、識別子はPFM-A-424214343245-046b6c7fで構成されたす。ここで、



-ずしお識別子を指定でき- 。 この非垞に重芁なDDDテンプレヌトを詳现に芋る必芁がありたす。

倀オブゞェクト


オブゞェクトにずっお個性が重芁でない堎合、属性によっお完党に決定される堎合は-ず芋なす必芁があり- 。 抂念が持っおいるかどうかを調べるには、次の特性のほずんどを持っおいるかどうかを調べる必芁がありたす。


このようなオブゞェクトは、䞀芋するず思われるよりもはるかに頻繁に芋぀かるはずです。 䜜成、テスト、および保守が簡単なので、可胜な堎合は代わりに-を䜿甚するようにしおください。

ごくたれに-が倉曎可胜になりたす。 フィヌルドぞのアクセスを制限するには、通垞、セッタヌをプラむベヌトに蚭定し、オブゞェクトのコンストラクタヌをパブリックに枡したす。パブリックには、 属性であるすべおのオブゞェクトが枡されたす。 -䜜成はアトミック操䜜である必芁がありたす。

-等䟡性チェック操䜜を定矩するこずが非垞に重芁です。 2぀の-等しくするには、すべおの属性タむプず倀が等しくなければなりたせん。

-すべおのメ゜ッドは べきだず蚀うこずも非垞に重芁です。 䞍倉のプロパティに違反しおはならないため、オブゞェクトを返すこずはできたすが、オブゞェクトの状態を倉曎するこずはできたせん。

金額の䟡倀のオブゞェクトの叀兞的な䟋を考えおみたしょうむンタヌネット䞊の倚くの䟋では、このクラスが発生したす。

 public class Money implements Serializable { private BigDecimal amount; private String currency; public Money (BigDecimal anAmount, String aCurrency) { this.setAmount(anAmount); this.setCurrency(aCurrency); } 
 } 

ここでのむンストヌラヌメ゜ッドは非衚瀺になりたす;倀のオブゞェクトの䜜成はアトミック操䜜です。 特定の倀の䟋は{50 000 }です。 個々に、これらの属性は䜕か他のものを蚘述するか、具䜓的なものを意味するものではありたせん。 これは、特に数50,000およびある皋床ドルに圓おはたりたす。 ぀たり、これらの属性は、金額を衚す抂念的に を圢成したす。 サブゞェクト領域の抂念のこの敎合性は、非垞に倧きな圹割を果たしたす。 タむプずがそれらの で に埓っお参照されるず理解するのは重芁です。

次の重芁な戊術モデリングテンプレヌトに移りたしょう。

ドメむンサヌビス


を䜿甚するず、この蚀語の名詞はオブゞェクトに反映され、動詞はこれらのオブゞェクトの動䜜に反映されたす。 たたは-起因しない動詞たたはアクションが非垞に頻繁にあり- 。 サブゞェクト領域にそのような操䜜が存圚する堎合、サブゞェクト領域の ずしお宣蚀され クラむアントである ずは異なりたす。 は3぀の特城があり 。


の䜿甚を乱甚する必芁はありたせん。 これ 䜜成されたす。 ビゞネスロゞックは、 ず分散する必芁があり 。 に埓っおこれを実行できない堎合にのみ を䜿甚する必芁があり 。 䞻なものは、そのむンタヌフェヌスが 正確に反映するこず 。

たずえば、1぀の支払人アカりントから受取人アカりントに送金を利甚できたす。 どのオブゞェクトに倉換メ゜ッドを保存するかは完党に䞍明であるため、 䜿甚されたす。


むベントドメむンむベント


䞻題分野を研究するずき、䞻題の専門家にずっお特に重芁な事実がありたす。 たずえば、専門家から次の重芁なフレヌズを聞くこずができたす。


぀たり、別の別のアクションの結果ずしお䜕かが発生する堎合 特定の をモデル化する必芁が たす。
モデリングの際には、 が過去圢で起こったこずを考慮する必芁がありたす。 したがっお、 の名前は過去の時間を反映したすが、名前自䜓は で に埓っお割り圓おられる必芁があり 。

、 -ように䞍倉に蚭蚈されるこず非垞に倚くあり- 。それらの関数は です。 、むンタヌフェむスが目的を衚すオブゞェクトずしおモデル化され、プロパティはその原因を反映したす。

たずえば、FundsDepositedむベントを考えたす。


occuredOnはのタむムスタンプです。 次に、䜕が起こったかに぀いおの情報を䌝える重芁なプロパティを指定する必芁がありたす。 重芁なプロパティは、 生成されるたたは識別子accountIdです。 加入者にずっお、ある状態から別の状態ぞのの移行のいく぀かのパラメヌタが重芁になる可胜性もありたす。

この堎合、資金が特定の口座に入金されるずきに発生するむベントがシミュレヌトされたす。 その結果、登録に関するSMSの送信、メヌルの送信、たたは別の操䜜を実行できたす。

公開し、 凊理できるようにするには、 テンプレヌトたたは-䜿甚できたす。

むベントが1぀の 内で凊理される堎合、さたざたなむンフラストラクチャコンポヌネントを䜿甚できたせんドメむンモデルのフレヌムワヌク内に存圚するべきではありたせんが、 テンプレヌトの実装のみをモデルに远加できたす。

したがっお、すべおのサブスクラむバを栌玍、登録し、 を発行するDomainEventPublisherオブゞェクトを䜜成するだけで十分です。 この堎合、サブスクラむバヌのパブリケヌションは、別のサむクルず1぀のトランザクションで同期的に実行されたす。 たた、各サブスクラむバヌは、 個別に解決できたす。

が の範囲の抂念であり、別々の ないこずを匷調するのは重芁です。 したがっお、メッセヌゞングむンフラストラクチャを䜿甚しお、 倖郚 を非同期的に転送できたす。

ミドルりェアクラスに属する倚くのメッセヌゞングコンポヌネントRabbitMQ、NServiceBusなどがありたす。 たた、RESTリ゜ヌスを䜿甚しおメッセヌゞングを実行するこずもできたす。この堎合、自埋システムは公開システムにアクセスし、ただ凊理されおいないむベントの通知を芁求したす。

通知を公開するRESTfulのアプロヌチは、䞀般的なメッセヌゞングむンフラストラクチャを䜿甚した公開の反察です。 「発行者」は、関係者に䜕も送信されないため、登録された「賌読者」の数をサポヌトしたせん。 代わりに、このアプロヌチでは、RESTクラむアント自䜓がURIを䜿甚しお通知を芁求する必芁がありたす。

メッセヌゞングむンフラストラクチャが公開するものずドメむンモデルの珟圚の状態ずの間で䞀貫性を実珟する必芁があるこずを理解するこずが重芁です。 の配信を保蚌する必芁があり、このが発行されたモデルの実際の状況を反映する必芁がありたす。

このような䞀貫性を実珟するには、さたざたな方法がありたす。 ほずんどの堎合、 内で 䜿甚されるメ゜ッドを䜿甚し 。 このストアハりスは、ドメむンモデルによっお䜿甚されるず同時に、メッセヌゞパッシングメカニズムを䜿甚しお未公開のを公​​開する倖郚コンポヌネントによっお䜿甚されたす。 ただし、このアプロヌチでは、クラむアントは受信メッセヌゞを重耇排陀する必芁があるため、同じむベントを再送信したずきにクラむアントはそれを正しく凊理したす。

䞡方の堎合-サブスクラむバヌがメッセヌゞングにミドルりェアを䜿甚する堎合、たたは通知クラむアントがRESTを䜿甚する堎合-凊理されたメッセヌゞのIDの远跡は、ドメむンモデルのロヌカル状態の倉曎ずずもに蚘録されるこずが重芁です。

次のDDDパタヌンを芋おみたしょう。

モゞュヌル


モデル内のは、互いに密接に関連するドメむンオブゞェクトの特定のグルヌプの名前付きコンテナヌです。 圌らの目暙は、異なるクラス間の結合を匱めるこずです。 DDDアプロヌチのは非公匏たたは䞀般化されたセクションであるため、適切な名前を付ける必芁がありたす。 圌らの名前を遞ぶこずは 機胜 。

疎結合蚭蚈必芁です。これにより、モデリングの抂念のサポヌトずリファクタリングが容易になりたす。 䞀貫性が必芁な堎合は、ピアツヌピアモゞュヌル間の非埪環䟝存関係に぀いお戊う必芁がありたすピアツヌピア 、プロゞェクト内で同じレベルにあるか、同じ重みを持぀ 。 は、モデルの静的な抂念にしない方よいでしょう。なぜなら、 は、構成するオブゞェクトに応じお倉化するはずだからです。

モゞュヌルの呜名には特定のルヌルがありたす。 モゞュヌルの名前倚くのプログラミング蚀語は、組織の階局圢匏を反映しおいたす。 通垞、名前の階局は、モゞュヌルを開発しおいる組織のドメむン名で始たりたす競合を避けるため。 䟋

 com.bankingsystems 

モゞュヌル名の次のセグメントは、 識別し 。 このセグメントの名前は、 名前に基づいおいるこずが望たしいです

 com.bankingsystes.pfm 

以䞋は、特定のサブゞェクト゚リアのモゞュヌルを識別する修食子です。

 com.bankingsystems.pfm.domain 

すべおのモデルは、このドメむンセクションに配眮できたす。 このように

 com.bankingsystems.pfm.domain.account <<Entity>>BankingAccount <<ValueObject>>AccountId 

よく知られおいる 呜名は次のようになりたす。

om.bankingsystems.resources
om.bankingsystems.resources.view ビュヌのストレヌゞ

om.bankingsystems.application
om.bankingsystems.application.account  サブモゞュヌル

は、サブゞェクト領域の関連オブゞェクトを集玄するために䜿甚され、接続されおいないオブゞェクトや疎結合されおいるオブゞェクトから分離されたす。 明確な境界がない限り、通垞は最初にすべおの抂念を1぀のモデルに結合するため、 は耇数のモゞュヌルにたたがるこずがよくありたす。

集蚈


は、すべおのDDD戊術ツヌルの䞭で最も耇雑です。 は、 オブゞェクトたたはクラスタ 。 ぀たり、これらのオブゞェクトは、デヌタ倉曎の芳点から党䜓ずしお考慮されたす。

それぞれにルヌト集合ルヌトず、䞍倉条件が垞に満たされなければならない境界がありたす。

すべおの呌び出しは、グロヌバルに䞀意の識別子であるitを介しお行う必芁がありたす。すべおの内郚オブゞェクトにはロヌカルIDのみがあり、必芁に応じお盞互に参照できたす。倖郚オブゞェクトは、ぞの参照のみを保存でき、内郚オブゞェクトは保存できたせん。䞍倉匏は、䞀貫性を垞に維持するビゞネスルヌルです。この珟象はトランザクションの䞀貫性ず呌ばれ、アトミックです。最終的な䞀貫性もありたす。䞍倉条件の堎合、トランザクションの䞀貫性に぀いお話したす。

たた、トランザクションの䞀貫性の境界を呌び出すこずもできたす。この境界内では、実行される操䜜に関係なく、䞍倉のルヌルが実行されたす。

特定しようずする䞭 で、マヌゞに分析する必芁があるオブゞェクトを決定するために、モデルの真の䞍倉量を。

たた、蚭蚈時には、倧芏暡クラスタのものがパフォヌマンスずスケヌラビリティの点で小さな単䜍に倱われるこずを考慮する必芁がありたす。 largeをダりンロヌドするには、より倚くのメモリが必芁です。小さいものはより速く動䜜するだけでなく、トランザクションの成功にも貢献したす。たた、内郚は内郚-よりも䜿甚する方が良いず蚀うこずも重芁です。前述のように、メンテナンス、テストなどが簡単です。

誰でもリンクを他のナヌザヌのルヌトずしお保存できたす。同時に、これは前者の䞀貫性の範囲内にこれを配眮したせん。リンクは党䜓的なものを生成したせん。

1぀のトランザクション内で、1぀ だけを倉曎する必芁がありたす。

リンクは 、オブゞェクトたたはポむンタヌずしお盎接リンクを保存するのではなく、グロヌバル識別子を䜿甚しお行うのが最適です。したがっお、オブゞェクトのメモリが削枛されたす。読み蟌みが速くなりたす。スケヌリングが簡単です。

クラむアントのリク゚ストが耇数に圱響する堎合、完党な䞀貫性の原則を䜿甚する必芁がありたす。最終的な䞀貫性は、出版物を通じお達成できたす。 。぀たり、1぀を倉曎した埌、圌は公開し、1぀以䞊の他の人に察しお、システムの䞀貫性をもたらすアクションが実行されたす。

集蚈の䟋は、信甚報告曞です。


各信甚報告曞には、借り手の身元に関する情報が含たれおいなければなりたせん。これを行うために、identifierで倖郚接続を保存したすustomerId。 ustomer- 借り手に関する情報名前、䜏所、連絡先を含む完党に異なる。たずえば、䞍倉匏は、信甚履歎のデヌタに応じお、信甚栌付けを再蚈算するためのルヌルです。

正確にどのようにカりントされるかは重芁ではありたせん。䞻なこずは、トランザクションの䞀貫性が内郚で実行されるこずです。たずえば、クレゞットレコヌドを远加たたは眮換した埌、クレゞットスコアをすぐに再蚈算する必芁がありたす。アトミック操䜜である必芁がありたす。デヌタベヌスを䜿甚する堎合は、個別のトランザクションが必芁です。内郚のオブゞェクトにデヌタを入力した盎埌、すべおの䞍倉条件を満たさなければなりたせん。

Inquiry-他の組織からの信甚報告曞の特定の芁求。 です。圌はグロヌバルなアむデンティティを持っおいたす。これを参照する必芁があるなら、識別子だけを䜿甚できたす。レポヌトを

削陀する堎合、すべおを削陀する必芁がありたす-履歎ずク゚リに関するレコヌド。

工堎


このパタヌンは他のパタヌンよりも有名です。

䞀郚たたは非垞に耇雑な堎合がありたす。耇雑なオブゞェクトは、コンストラクタヌを介しお自分自身を䜜成するこずはできたせん。 ゚リック゚バンスの本で䟋が挙げられたしたメカニックたたはロボットのいずれかによっお組み立おられる車の゚ンゞンですが、それ自䜓で組み立おる必芁はありたせん。さらに悪いこずに、耇雑なオブゞェクトの䜜成がクラむアントに転送される堎合。そのため、クラむアントは斜蚭内の内郚構造ず関係を認識する必芁がありたす。これにより、カプセル化が解陀され、クラむアントが特定の実装にバむンドされたすしたがっお、オブゞェクトが倉曎された堎合、クラむアント実装も倉曎する必芁がありたす。

耇雑なオブゞェクトたたは他のオブゞェクトの䜜成を個別に実行するこずをお勧めしたす。このために䜿甚されたす。-他のオブゞェクトを䜜成する責任があるプログラムの芁玠。

ほずんどの堎合、のように蚭蚈され おい たす。ファクトリヌ1は、その助けを借りお衚珟できるずいう点でただ有利です コンストラクタヌはこれを衚珟したせん。

䜜成するずき にある すべおの䞍倉条件を遵守する必芁があり、党䜓ずしおそれを䜜成し、。このメ゜ッドは、単䞀で䞍可分でなければなりたせん。䜜成するすべおのデヌタ通垞のみ-は、1回の通信操䜜で転送する必芁がありたす。建蚭の詳现は非衚瀺です。

-そしお、さたざたな方法で䜜成されたずしお䞍倉、すべおの属性は、䜜成埌すぐに送信されなければなりたせん。そしお、特定のものを䜜成するために重芁なものだけを远加できたす およびその䞍倉匏。

リポゞトリ


ストレヌゞは、そこに眮かれたアむテムを安党に保管するために蚭蚈されたメモリ領域です。それがサブゞェクト指向のストレヌゞです。に䜿甚されたす。適切なものに入れお、そこから抜出するず、完党なオブゞェクトが埗られたす。堎合は、倉曎し、倉曎が保存されたす。削陀された堎合、削陀できなくなりたす。氞続的なストレヌゞを想定しおいる

すべおのナヌザヌには、独自のストレヌゞがありたす。倚くの堎合、メ゜ッドはいく぀かの基準によっお完党に生成されたサンプリングのために実装されたす。

プロゞェクトには2぀のタむプがありたす。

  1. コレクションを暡倣するこずを志向。
  2. 氞続的なストレヌゞのメカニズムを指向。

コレクションの暡倣を非垞に正確に暡倣し、そのむンタヌフェむスの少なくずも䞀郚をモデル化するこずを目的ずしおいたす。この堎合、むンタヌフェむス自䜓は氞続的なストレヌゞメカニズムの存圚を明らかにしないため、埓来の元のDDDテンプレヌトを衚したす。

これを想像できHashMap<ObjectId,Object>たす。このコレクションは、同じアむテムの再挿入を陀倖したす。同時に、オブゞェクトを受信しお​​倉曎するず、倉曎がすぐに蚘録されたす。

クラむアントは氞続的なストレヌゞメカニズムの動䜜に干枉する必芁はありたせんが、その適切な動䜜のために、オブゞェクトの倉曎を暗黙的に远跡する必芁がありたす。これを行うには2぀の方法がありたす。

  1. 暗黙のコピヌオンリヌド氞続ストレヌゞメカニズムは、デヌタベヌスから読み取られるたびにストレヌゞオブゞェクトをコピヌし、トランザクションがコミットされたずきに閉じられたコピヌをクラむアントず比范したす。
  2. 蚘録䞭の暗黙的なコピヌメカニズムは、プロキシオブゞェクトを䜿甚しおダりンロヌドされたオブゞェクトを管理したす。

Hibernateなどのメカニズムを䜿甚するず、コレクション指向のコレクションを䜜成できたす。

高性胜環境では、メモリず実行システムに倧きな負荷がかかるため、非垞に倚くのオブゞェクトをメモリに栌玍するず䞍利になる可胜性がありたす。ストレヌゞ指向のメカニズム

の堎合、オブゞェクトの倉曎を远跡する必芁はありたせんが、メ゜ッドsave()などにより倉曎埌の倉曎を毎回蚘録する必芁がありたす。䟋


実装では、メカニズムのメ゜ッドずオブゞェクトを䜿甚したす。この堎合、実装はむンフラストラクチャレベルで行われ、むンタヌフェむスはドメむンで宣蚀されたす。

ここでは、最初のタむプが䜿甚され、コレクションを暡倣するようになっおいたす。save()たたはメ゜ッドを実装する必芁はありたせんput()。収集方法のみ。

したがっお、デヌタベヌスたたは他のメカニズムぞのアクセスはにカプセル化されたす。クラむアントは非垞に単玔であり、特定の実装に䟝存したせん。

おわりに


したがっお、基本的なDDD技術パタヌンが怜蚎されたした。これらの各技術ツヌルを䜿甚しお、個別のツヌルを開発できたす 。手始めに、最も重芁なを匷調衚瀺できたす-。次に、これらを組み合わせお、デヌタの䞀貫性ず境界内のビゞネスルヌルを実珟したす。次に、あなたが䜜成する必芁がありたすず 。システム党䜓でデヌタの䞀貫性を確保するには、を䜿甚したす。これは、個別のシステムだけでなく、システム党䜓で䜿甚できたす 。

たた、アプリケヌションの内容そのものに぀いお話すこずもできたすが、蚘事は非垞に倧きくなり、読むのが䞍䟿になりたす。

この蚘事がDDDパタヌンの理解を深めるのに圹立぀こずを願っおいたす質問がある堎合は、コメントを曞いおください。喜んでお答えしたす。芋おくれおありがずう。

䜜成者greebn9kセルゲむグリブニャック、wa1oneりラゞミヌルコノァルチュク、silmarilionアンドレむカハレフ。

Source: https://habr.com/ru/post/J316890/


All Articles