懸念の分離-DAO、DTO、BO

Josh Barker:

つまり、DAO、DTO、BOがあります。次のコードは結果です:

// Instantiate a new user repository.
UserRepository rep = new UserRepository();

// Retrieve user by ID (returns DTO) and convert to business object.
User user = rep.GetById(32).ToBusiness<User>();

// Perform business logic.
user.ResetPassword();
user.OtherBusinessLogic("test");
user.FirstName = "Bob";

// Convert business object back to a DTO to save to the database.
rep.Save(user.ToDataTransfer<Data.DTO.User>());

だから私は懸念を分離しようとしていますが、このコードの「変換」を取り除きたいです。「変換」は、実際には拡張オブジェクトとしてビジネスロジックレイヤーに配置されます(DTOレイヤーはビジネスロジックレイヤーについて何も認識しません)。DTO自体はデータを保存するだけで、ビジネスロジックはまったくありません。UserRepositoryがDAOを呼び出し、GetByIdの最後にAutoMapperを使用してDAOからDTOにマップします。「変換」(ToBusinessおよびToDataTransfer)は、彼らが言うとおりに機能します。

私の同僚は、ビジネスリポジトリが必要かもしれないと思っていましたが、少し不格好だと思いました。何かご意見は?

Josh Barker:

これを解決するには、ビジネスサービスレイヤーを作成しました。このようにして、ビジネスサービスレイヤーを通じて機能にアクセスできます。ビジネスレイヤーは、DALにクエリを実行してDTOを返すリポジトリを使用します。DTOは、DALからデータを取り込むことで目的を果たし、データをビジネスレイヤーに転送します(ビジネスオブジェクトに変換されます)。

したがって、図は次のとおりです。

DAL->リポジトリ(DTOを返す)->サービス(BOを返す)

これは非常にうまく機能し、ビジネスロジックをサービスレイヤーに配置して、リポジトリ自体から抽象化することができます。サンプルコード:

// UserService uses UserRepository internally + any additional business logic.
var service = new UserService();
var user = service.GetById(32);

user.ResetPassword();
user.OtherBusinessLogic("test");
user.FirstName = "Bob";

service.Save(user);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

NestJs REST APIのDTO、BO、DAOを作成する

分類Dev

golangの懸念とユーザビリティの分離

分類Dev

コントローラでの役割作成の懸念を分離する方法

分類Dev

Reallocの懸念

分類Dev

懸念によって分離された親のpoms?(構成のテスト、構成の展開)

分類Dev

DTOおよびDAOの概念とMVC

分類Dev

ASP.Net MVC5-ソリューションアーキテクチャ-懸念事項を分離するための領域-さらなる分離

分類Dev

ASP.NET WebAPIのエラーをどこで処理し、シンコントローラーと懸念事項の分離を維持しますか?

分類Dev

エンティティフレームワーク7とasp.net5を使用して懸念事項の分離を維持する

分類Dev

Java Math.random()の懸念

分類Dev

JavaMVCモデルビューのDao分離

分類Dev

JLSの語彙への懸念

分類Dev

懸念の定数の正しい使用

分類Dev

VBA ActiveDocumentの懸念事項/代替案?

分類Dev

Grailsの継承に関する懸念

分類Dev

Railsの懸念を動的に含める

分類Dev

Railsの懸念を動的に含める

分類Dev

保持サイクルの懸念

分類Dev

匿名の内部クラスの例の妥当性の懸念

分類Dev

Rails 4、懸念の中のアメーバの宝石

分類Dev

Tensorflowの複数のグラフとパッチの懸念

分類Dev

protobufのセキュリティ上の懸念

分類Dev

Google CloudRunのセキュリティ上の懸念

分類Dev

Djangoのストライプセキュリティの懸念

分類Dev

多対多の関係の懸念をかき立てる

分類Dev

ec2のLDAP-セキュリティ上の懸念

分類Dev

NoMethodErrorを返すコントローラーの懸念のClassMethods

分類Dev

最下位の十分位数の予測について最も懸念している回帰のXGBoost目的関数

分類Dev

再利用性の目的でDAOをコントローラーから分離する

Related 関連記事

  1. 1

    NestJs REST APIのDTO、BO、DAOを作成する

  2. 2

    golangの懸念とユーザビリティの分離

  3. 3

    コントローラでの役割作成の懸念を分離する方法

  4. 4

    Reallocの懸念

  5. 5

    懸念によって分離された親のpoms?(構成のテスト、構成の展開)

  6. 6

    DTOおよびDAOの概念とMVC

  7. 7

    ASP.Net MVC5-ソリューションアーキテクチャ-懸念事項を分離するための領域-さらなる分離

  8. 8

    ASP.NET WebAPIのエラーをどこで処理し、シンコントローラーと懸念事項の分離を維持しますか?

  9. 9

    エンティティフレームワーク7とasp.net5を使用して懸念事項の分離を維持する

  10. 10

    Java Math.random()の懸念

  11. 11

    JavaMVCモデルビューのDao分離

  12. 12

    JLSの語彙への懸念

  13. 13

    懸念の定数の正しい使用

  14. 14

    VBA ActiveDocumentの懸念事項/代替案?

  15. 15

    Grailsの継承に関する懸念

  16. 16

    Railsの懸念を動的に含める

  17. 17

    Railsの懸念を動的に含める

  18. 18

    保持サイクルの懸念

  19. 19

    匿名の内部クラスの例の妥当性の懸念

  20. 20

    Rails 4、懸念の中のアメーバの宝石

  21. 21

    Tensorflowの複数のグラフとパッチの懸念

  22. 22

    protobufのセキュリティ上の懸念

  23. 23

    Google CloudRunのセキュリティ上の懸念

  24. 24

    Djangoのストライプセキュリティの懸念

  25. 25

    多対多の関係の懸念をかき立てる

  26. 26

    ec2のLDAP-セキュリティ上の懸念

  27. 27

    NoMethodErrorを返すコントローラーの懸念のClassMethods

  28. 28

    最下位の十分位数の予測について最も懸念している回帰のXGBoost目的関数

  29. 29

    再利用性の目的でDAOをコントローラーから分離する

ホットタグ

アーカイブ