現在、モデル プロジェクト、サービス プロジェクト、ユーティリティ プロジェクト、および 1 つ以上のドメイン モデルのリポジトリとして機能するいくつかのデータストア プロジェクトに沿った ASP MVC Web アプリケーションがあります。各レイヤーの分離にはかなり満足していますが、サービス レイヤーから Web アプリに何を返すべきかについて悩んでいます。
たとえば、ユーザーが登録しようとすると、RegisterViewModel がコントローラーによって受信されます。個々の部分 (電子メール、パスワードなど) はサービス レイヤーに送信され、GUID、ステータス、作成日などを使用してメンバー ドメイン オブジェクトが構築され、それがストレージ用のリポジトリに送信され、最後に Web アプリがリダイレクトされるようにメンバー オブジェクトが返されます。 /Member/{guid}.
しかし、メールが既に存在する場合、サービス レイヤーは Web アプリにどのように通知する必要があるのでしょうか? より複雑な状況では、複数のドメイン オブジェクトとビジネス ルールの存在/有効性を確認する必要がある場合があるため、一度に複数のエラーを返す必要があります。さらに、例外を Web レイヤーにバブルさせたくないので、サービス レイヤーはすべての例外をトラップしますが、何らかの方法で Web レイヤーに通知する必要があります。
それらすべてを返す方法を見つけたとしても、Web レイヤーはそれらすべてを処理し、ユーザーにさまざまなフィードバックを提供するという負担がかかります。コントローラーのコードはかさばり、エラーが取り除かれます。プレゼンテーションへのサービス結果に関するベスト プラクティスはありますか? 別のサービス レイヤーを削除し、コードをコントローラー内に配置する必要がありますか? どんな考えでも大歓迎です。