ドメインやアプリケーションに何かが含まれるべきかどうかを判断するのは難しいです。DDD:ドメインに入ると何が適用されますか?
このanswerを読むと、承認のような概念で多くの助けになりますが、他のものとは苦労しています。
私の混乱を説明するために、コメント投稿のケースを考えてください。コメントを投稿する前に起こる必要があることは次のとおりです。私は括弧内に、この機能性がどこにあるのかを示しています。
- (アプリケーションに行き、認証)ユーザロール/ステータスは、この記事にコメントするには許可されていることを確認し
- (ドメイン)私たちがコメントされたポストが存在し、公表されていることを確認してくださいユーザーを作成します
- コメントが空文字列(ドメイン)でないことを確認
- コメントに汚れた単語(ドメイン?)がないことを確認してください。
- (ドメイン?)コメントはこの記事では、同じユーザーからの重複がないことを確認してください
- フォーマットコメント(アプリケーション)
- 現在のユーザー(アプリケーション)のために許可されていないコメントから特定のHTMLタグを削除
- チェックスパムに対するコメント
迷惑メールに対するコメントの確認がドメインの懸念またはアプリケーションであるかどうかを判断することはできません。スロットリングについても同様です。私の見地からは、これらの懸念事項の両方が私のために重要であり、存在しなければならない。しかし、認可にも同じことが言えますが、ドメイン内にあるべきではないことが分かります。
ドメインサービスとアプリケーションサービスの間でこれらの懸念事項を分割すると、ドメインが完全に強制されていないように感じられ、実際にアプリケーションに前もってチェックしているように感じます。その場合、何が全体的なポイントなのですが、混乱を減らすためにアプリケーションですべてをやってみませんか?
私の現在の設定はこの行います
Controller -> App.CommentingService.Comment() -> Domain.CommentingService.Comment()
を誰かがコメントを作成するために必要なすべての手順を通過し、背後にあるいくつかの推論を与えて右レイヤに割り当てることができれば便利だろう。
スロットルは、スパマーを確実に収容するためのものです。また、コメントにドメインのスパムリンクが含まれているかどうかを確認していますか?私はそれがWebアプリケーション、SOAP Webサービス、またはデスクトップアプリケーションのいずれであっても、これが起きてもいいと思います。同じことがスロットリングのためになります。 –
あなたの答えは本当に良いと思います。それは、私が "このルールが強制されなければドメインが壊れるのだろうか?"だから彼らのほとんどは答えはノーだ。スロットル、重複したコメント、汚い言葉、フォーマット、HTMLタグ、または権限が適用されない場合でも、ドメインは元のままです。アプリケーションのセキュリティ、パフォーマンス、親しみやすさ、プレゼンテーションは失敗する可能性がありますが、ドメインは正しいでしょう。コメントはまだ読み込まれ、無礼な言葉と醜い書式ではあるものの、うまく動作します。 –
しかし、コメントが実際の投稿に属していなければならない、またはコメントが空であってはならないと強制しなければ、これはドメインをかなり破壊する可能性があります。しかし、未公開の投稿やコメントが終了した投稿に投稿できるようにすると、ドメインが壊れるかどうかは不明です。技術的に言えば、すべてうまくいくでしょう、ドメインは触れますが、ビジネスルールは壊れます。あなたはこれを何と考えていますか? –