POCO vs DTO:ドメインオブジェクトを部分的にハイドレートしても大丈夫ですか?
-
05-07-2019 - |
質問
多くの場合、UIにさまざまな方法でドメインオブジェクトを表示する必要があります。リスト、検索結果、ページの表示と編集のほか、ヘッダー、フッター、ポップアップで。通常、いくつかの異なる「ビュー」があります。それぞれ異なるフィールドが表示されたドメインオブジェクトの。
ほとんどのアドバイスは、サブセットまたはスーパーセットが必要な場合にDTOを使用してデータを取得することです。 DTOの保守には多くのオーバーヘッドがあります。各シナリオに必要なドメインオブジェクトのプロパティを単純に入力するのは悪いアプローチですか。たとえば、プロファイルを使用して、含めるべきプロパティを指定できます。例:
service.GetDomainObjects(int listID、Profile.ListProfile); service.GetDomainObjects(string searchParam、Profile.SearchProfile);
解決
これは、オーバーヘッドをどのようにするかということです。DTOを表すために異なるクラスのセットを使用するか、それぞれが同じを返すメソッドのセットを使用するドメインオブジェクトが異なるフィールドが「ハイドレート」されている。
意思決定を支援するために私が尋ねるいくつかの質問は次のとおりです。
- オブジェクト全体に水分補給する際のオーバーヘッドはどれくらいですか? (DTOまたは部分的に水和されたオブジェクトの)追加された複雑さは本当に価値がありますか?
- 他の誰かがあなたのコードを使用しますか?人々を部分的に水和されたオブジェクトと混同しないでください。人々があなたのコードを保守するようになると、DTOはより明確になるかもしれません。
あなたのシステムの長期的なメンテナンスが容易になると思うので、私はDTOを少し個人的に好みます。あなたの一人のバンド、またはこれが使い捨てのアプリである場合、コードを混乱させる余分なクラスをたくさん導入したくないことを完全に理解できます。
所属していません StackOverflow