2016-01-20 6 views
5

ドメインやアプリケーションに何かが含まれるべきかどうかを判断するのは難しいです。DDD:ドメインに入ると何が適用されますか?

このanswerを読むと、承認のような概念で多くの助けになりますが、他のものとは苦労しています。

私の混乱を説明するために、コメント投稿のケースを考えてください。コメントを投稿する前に起こる必要があることは次のとおりです。私は括弧内に、この機能性がどこにあるのかを示しています。

  • (アプリケーションに行き、認証)ユーザロール/ステータスは、この記事にコメントするには許可されていることを確認し
  • (ドメイン)私たちがコメントされたポストが存在し、公表されていることを確認してくださいユーザーを作成します
  • コメントが空文字列(ドメイン)でないことを確認
  • コメントに汚れた単語(ドメイン?)がないことを確認してください。
  • (ドメイン?)コメントはこの記事では、同じユーザーからの重複がないことを確認してください
  • フォーマットコメント(アプリケーション)
  • 現在のユーザー(アプリケーション)のために許可されていないコメントから特定のHTMLタグを削除
  • チェックスパムに対するコメント

迷惑メールに対するコメントの確認がドメインの懸念またはアプリケーションであるかどうかを判断することはできません。スロットリングについても同様です。私の見地からは、これらの懸念事項の両方が私のために重要であり、存在しなければならない。しかし、認可にも同じことが言えますが、ドメイン内にあるべきではないことが分かります。

ドメインサービスとアプリケーションサービスの間でこれらの懸念事項を分割すると、ドメインが完全に強制されていないように感じられ、実際にアプリケーションに前もってチェックしているように感じます。その場合、何が全体的なポイントなのですが、混乱を減らすためにアプリケーションですべてをやってみませんか?

私の現在の設定はこの行います

Controller -> App.CommentingService.Comment() -> Domain.CommentingService.Comment()

を誰かがコメントを作成するために必要なすべての手順を通過し、背後にあるいくつかの推論を与えて右レイヤに割り当てることができれば便利だろう。

答えて

3

設定が正しいようです。アプリケーションサービスは、多くの場合2つのフレーバーで提供されます:

アプリケーションの機能:電子メール通知、承認、永続性などドメインのほかに、すべての機能は、ここにあります。

アプリケーション調整:ユースケースを満たすには、アプリケーション機能とドメインを調整する必要があります。すべての配管がここに来る。

アプリケーションコーディネーションモデルのユースケースは、ユースケースが複数のプロセスを含む可能性があるため、常に1つのアプリケーションサービス= 1ドメインサービスと一致するとは限りません。私は混乱を減らすために、アプリケーションでそれをすべてをしないのはなぜ

Controller 
    App.CommentingService.Comment() //coordination of below features and domain 
     App.AuthService().Autorize(); //feature 
     Domain.CommentingService.Comment(); //domain 
     App.PersistenceService().Persist(); //feature 
     App.NotificationService().SentNotificationToUser(); //feature 

分断性、疎結合、依存性など。これらはすべて、さまざまな理由で優れています。私は最近私が関わった本当の例を教えてくれるでしょう:ドメインサービスだけで疎結合組合(.NETフレームワークにあった)を持っていれば、Webアプリケーション、DesktopAppとSOAP Webサービスで全く同じドメインをホストすることができますアプリケーションごとに要件とユースケースが異なるため、Appコーディネーションサービスを変更する必要があります。

何がドメインに入るのかについては何がないのですか?それはあなたのドメインであるかどうかに大きく依存するため、あなたに直接的な答えを与えることは非常に難しいです。

すなわち

必ずユーザーが土壇場あなたはなぜあなたはスロットルしている疑問を持っている

に5件の以上のコメントを投稿していませんしてください?面倒なUIを防ぐには?パフォーマンスの理由?サービス拒否の脅威を防ぎますか?あなたの「ゲーム」が迷惑メールの中でユーザーに限られた試行しか与えないため、あなたの「ゲーム」のルールを破っていますか?これは、何かがドメインまたはアプリケーションであることを示すものです。

+0

スロットルは、スパマーを確実に収容するためのものです。また、コメントにドメインのスパムリンクが含まれているかどうかを確認していますか?私はそれがWebアプリケーション、SOAP Webサービス、またはデスクトップアプリケーションのいずれであっても、これが起きてもいいと思います。同じことがスロットリングのためになります。 –

+0

あなたの答えは本当に良いと思います。それは、私が "このルールが強制されなければドメインが壊れるのだろうか?"だから彼らのほとんどは答えはノーだ。スロットル、重複したコメント、汚い言葉、フォーマット、HTMLタグ、または権限が適用されない場合でも、ドメインは元のままです。アプリケーションのセキュリティ、パフォーマンス、親しみやすさ、プレゼンテーションは失敗する可能性がありますが、ドメインは正しいでしょう。コメントはまだ読み込まれ、無礼な言葉と醜い書式ではあるものの、うまく動作します。 –

+0

しかし、コメントが実際の投稿に属していなければならない、またはコメントが空であってはならないと強制しなければ、これはドメインをかなり破壊する可能性があります。しかし、未公開の投稿やコメントが終了した投稿に投稿できるようにすると、ドメインが壊れるかどうかは不明です。技術的に言えば、すべてうまくいくでしょう、ドメインは触れますが、ビジネスルールは壊れます。あなたはこれを何と考えていますか? –

関連する問題