方式2,每个方法增加 Connection 参数,优点是能管控 Transation,在多个业务逻辑能出问题一次rollback。如下订单需要经过 Order 跟 OA 审批的 Service,能共用 connection。
方式1,个人没用,但外层方法function可以不需要管理 Connection
请问哪一种比较符合大业务量的需求
//方法一 : 每个 Service 方法自己建立 Connection
public class OAService
{
public bool SendApplication()
{
using(var cnn = DB.GetConnection())
{
//..
}
}
}
public class OrderService
{
public bool CreateNewOrder()
{
using(var cnn = DB.GetConnection())
{
//..
}
}
}
//方法一 : 每个 Service 方法使用外部传进来的Connection
public class OAService
{
public bool SendApplication(DbConnection cnn)
{
//..
}
}
public class OrderService
{
public bool CreateNewOrder(DbConnection cnn)
{
//..
}
}
既然选择分层,那就应该遵守分层规则,
Service
重点在于组合Repository
来处理业务,而Connection
和Transation
本身就是Repository
层面的事,惯穿到Service
那分层就没什么意义了;试想一下,如果你的
Repository
并不是使用DB
,你所困惑的Connection
和Transation
还有意义吗?所以问题本身应该是,你为什么要选择分层?