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)
{
}
public int Update(Order order)
{
}
}
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);
}
}
: .
, " " (, ) Anemic Domain Model -, .
:
:
, , , : 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) " ".
, , , . , ? , , ?