2017-11-25 6 views
0

私のドメインでのユーザー登録プロセスでは、ユーザーが作成した(電子メール/パスワードまたはリンクされたソーシャルネットワークアカウントを使用して)、ユーザーのログインが行われます。イベントのソーシング:より詳細なイベントの分割

私はイベントを登録する方法(参照)2つのオプションがあります。(すべての情報が含まれている、パスワードハッシュ、外部のソーシャルアカウント)

  • 一つUserRegistredイベント
  • 複数のイベントUserCreatedUserPasswordSetUserExternalAccountLinkedを第二の選択肢から、UserLoggedIn

イベント(UserPasswordSetUserExternalAccountLinkedUserLoggedIn)後で対応する操作を実行している間に表示されることがあります。

質問とオプションは主観的なものかもしれないが、経験豊富なES/DDDユーザーの意見を聞きたい。

答えて

0

私は経験したとは言いませんが、複雑なシンプルなイベントではなく、より簡単な出力の複数のイベントだと思います。

長所は、以下のとおりです。

  • シンプル - (集計自体を含む)の予測およびその他のイベントハンドラ
  • 未満解約のきめ細かいイベントだけでなく、複雑なUserRegisteredイベントを理解する必要はありませんイベントスキーマ - 例えばイベントは、より良いユーザ登録

Iにかかわる状態変化のシーケンスをキャプチャ - あなたの認証イベントの詳細を変更した場合

  • クラリティ(変更するUserRegisteredイベントがないので)、少数のイベントタイプは変更する必要があります些細なことを考えることができる:

    • 非原子的登録。予測は、単一のユーザー登録イベントを処理し、クライアントが即座に照会できる状態で読み取りモデルをアトミックに作成する可能性があります。複数のイベントがある場合、読み込みモデルはそれらを1つずつ処理する可能性があります。つまり、ユーザーが一時的に半登録状態になり、クライアントで処理したくない場合があります。
      • これは、読み取りプロジェクションですべての利用可能なイベントを消費し、1回のトランザクションでその更新を行うことで回避できます。これにより、一連のイベントが1回のトランザクションコミットのみを引き起こし、 。これはどんな場合でも効率的ですが、読み込みストアによっては単純ではないかもしれません。
      • サービス
    を照会する場合または、あなたは自動的に半分の登録ユーザーを除外することができます
  • 関連する問題