【发布时间】:2012-02-26 05:18:22
【问题描述】:
我正在阅读有关服务层和存储库的信息。现在我想知道服务层是否必须包装 dal。我经常使用存储库和 MVP 模式。演示者现在拥有业务逻辑。但越想越不是把业务逻辑放在presenter中,也不是放在数据访问层的逻辑地方。所以这就是服务层进来的地方。
但是演示者现在是否与服务层对话?演示者是否“允许”访问存储库?或者一切都应该通过服务层?在后一种情况下,服务层只是一个中间人:
我的FooService:
public List<Foo> GetAllFoo()
{
var listFoo = new FooRepository().GetAll().TiList();
return listFoo;
}
演讲者:
public List<Foo> GetAllFoo()
{
var listFoo = new MyFooService().GetAllFoo();
return listFoo;
}
是好方法吗?还是“允许”演示者直接调用存储库?
【问题讨论】:
-
你也需要清楚你所说的业务逻辑是什么意思,presenter包含什么样的业务逻辑?
-
@gideon 它包含一些webservices必须重用的逻辑
-
不确定我是否理解您,如果您的演示者正在 调用/使用 Web 服务,这不是业务逻辑,如果您的演示者/控制器正在执行需要 被重用然后这需要放入一个类。业务逻辑是你通过接口做的事情,比如
Add(a,b),加法是业务逻辑,但是调用MathService.Add(a,b)然后将此输出提供给演示文稿不是业务逻辑,而是它的控制器逻辑。 -
@gideon 我的意思是,此时我将业务逻辑(可能是从状态更改的对象)放入演示者(在您的情况下为控制器)。现在我要创建webservices,它也需要这个业务逻辑。但是webservice不能访问presenter,所以我需要创建一个service层,对吧?
-
是的,您将需要重用的逻辑封装到类中,这可能是您的服务层,然后在您的演示者和 Web 服务中相应地使用它。
标签: c# oop repository service-layer