3-layer architecture - data transfer between layers

Trying to implement a three-layer (not: level, I just want to separate my project logically, on one machine), in the architecture I found so many different approaches that confuse me that the best way (if any) is to do this in a WinForms application.

Now I have no doubt about only 3 layers that should be present in the project:

  • User Interface (Presentation Level)
  • BLL (business logic level)
  • DAL (Data Access Level)

In the UI, I put all the WinForms. There must also be some logic to populate the object with data from the controls and pass it to the BLL level.

In DAL I want to put classes and methods for manipulating data using ADO.NET, for example:

public class OrderDAL
{
    public OrderDAL()
    {
    }

    public int Add(Order order)
    {
        //...add order to database
    }

    public int Update(Order order)
    {
        //...update order in database
    }

    //...etc.
}

BLL - ?

DTO, Order, UI, BLL DAL:

public class Order
{
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public string Number { get; set; }
    public string CustomerName { get; set; }

    public Order ()
    {
    }
}

BLL:

public class OrderBLL
{
    public OrderBLL()
    {
    }

    public int Add(Order order)
    {
        OrderDAL orderDAL = new OrderDAL();
        return orderDAL.Add(order);
    }

    public int Update(Order order)
    {
        OrderDAL orderDAL = new OrderDAL();
        return orderDAL.Update(order);
    }

    //...etc.
}

: .
, " " (, ) Anemic Domain Model -, .

:

  • DTO ,
  • , , ,
  • DAL BLL,

:

  • - ( , P),
  • ( ),
  • , , - .

, , , : DTO, BLL :

public class Order
{
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public string Number { get; set; }
    public string CustomerName { get; set; }

    public Order()
    {
    }

    public int Add()
    {
        OrderDAL orderDAL = new OrderDAL();
        return orderDAL.Add(this);
    }

    public int Update(Order order)
    {
        OrderDAL orderDAL = new OrderDAL();
        return orderDAL.Update(order);
    }
}

:

  • , ( ;)).
  • , , .

:

  • , DAL BLL ( , 3 )?
  • , , (, Id) " ".

, , , . , ? , , ?

+5
1

DTO, .

, . . ? , . - .

, : persistence , . , . .

? DTO. .

+7

All Articles