xendorは、単一の責任と懸念の分離を強制することにより、シンプルでクリーンなデザインを作成するために使用できる.NETコアフレームワークです。その高度な機能は、ドメイン駆動型デザイン(DDD)、コマンドクエリレスポンティシュグラージャ(CQRS)、およびイベントソーシングに最適です。 xendorにはrabbitmq統合もあります。
コマンドクエリの責任分離は、データを照会したものから変異させる操作を分離するように指示するパターンです。これは、コマンドクエリ分離(CQS)CQSから派生しています。CQSは、クラスに2種類のメソッドしか存在しないことを示しています。状態を変異させてvoidを返すものと状態を返すが変更しない方法です。
CQRSはあなたが適用するパターンですか?サービス/アプリケーションの場合、サービスの一部にのみ適用できます。
データの現在の状態のみをドメインに保存する代わりに、付録のみのストアを使用して、そのデータで取得した一連のアクションを記録します。ストアはレコードシステムとして機能し、ドメインオブジェクトを具体化するために使用できます。これにより、データモデルとビジネスドメインを同期する必要性を回避しながら、パフォーマンス、スケーラビリティ、および応答性を向上させることにより、複雑なドメインのタスクを簡素化できます。また、トランザクションデータの一貫性を提供し、補償アクションを可能にする完全な監査証跡と履歴を維持することもできます。
予測は、イベント中心のシステムを構築する際の重要な概念です。同時に、非常に簡単です。
予測とは、イベントの流れから現在の状態を導き出すことです。
たとえば、イベントのストリームがサーバーによってすべてのサブスクライバーに公開される状況を検討してください。これらのイベントはユーザー登録に関連しており、次のように見えます。
UserAddedToAccount
{
"userId" : 55 ,
"username" : " alemol " ,
"name" : " Alejandro " ,
"lastName" : " Moline "
}userverifiedemail
{
"userId" : 55 ,
"email" : " [email protected] "
}userUpdated
{
"userId" : 55 ,
"lastName" : " Molines "
}これらのイベントのストリームにサブスクライバーを添付して、このストリームをWeb UIでユーザーの詳細を提供するために使用される永続的な読み取りモデルに投影できます。最終的な読み取りモデルは次のように見えます:
{
"userId" : 55 ,
"username" : " alemol " ,
"email" : " [email protected] " ,
"name" : " Alejandro " ,
"lastName" : " Molines "
}このプロジェクトが好きまたは使用している場合は、スターを渡してください。ありがとう!
Githubで問題を作成してください。貢献、プルリクエストは大歓迎です!
Xendorは著作権©2019 Alejandro MolinesおよびMITライセンスの下でその他の貢献者です。