DTOはデータ転送オブジェクトであり、BOはビジネスオブジェクトであることを私は知っています。しかし、それは実際にはどういう意味ですか?いつどちらを選ぶべきですか?から、私が理解していることは、DTOはデータの転送に使用されるだけであり、ビジネスロジックはありません。これは、DTOにプロパティ(ゲッターとセッター)のみのメソッドがないことを意味しますか?しかし、それでもBOの特性があります。誰か説明してもらえますか?ありがとう。
2 に答える
DTOは、レイヤー/ティア間でデータを転送するために使用されます。このような目的のために、メトスは必要ありません。たとえば、DTOがWebサービスを介して公開されている場合など、メソッドがない場合もあります。
ビジネスオブジェクトは、このオブジェクトに対して操作(データの変更)を実行するデータとメソッドを含む巧妙なオブジェクトです。BOを上位層に公開すると、オブジェクトのパブリックメソッドを呼び出すことができます。これが不要な場合もあります。そのため、データのみを提供し、メソッドは提供しないDTOを作成します。
DTOはすべてのBOデータを転送する必要はありません。厳密なDTOアプローチに従う場合、ビジネスレイヤーで公開される操作ごとに特定のDTOを作成します。たとえば、オブジェクトにCreatedBy、ModifiedBy、CreatedDateなどの監査データがあり、Updateメソッドを作成している場合、上位層では変更できないため、着信DTO(更新されたオブジェクトを含む)にこれらのプロパティを含める必要はありません。ビジネスロジックでのみ可能です。 。
通常、DTOには到着層の前のその瞬間の相対的な静的データがありますが、BOは状態とフローフラグの値を動的に保持できます。また、BOは自己完結型であり、一部のビジネスロジックの検証または論理的な再編成または判断を行うことができます。ただし、DTOの変更は、渡されたデータの層の変更に依存します...しかし、BOの変更は、より広い範囲を持ちます。たとえば、ビジネスフローの状態によるより動的な更新、フラグの変更に依存します。リアルタイムで変更された場合、これらはキャプチャされ、BOから反映されるように動作すると想定されます。たとえば、200ドルの残高がゼロになる、または2000ドルから5000ドルの残高になると、取引/取引のIDまたはステータスが変更されます...これはDTOとBOの大きな違い。