ServiceLayer或Controller?

时间:2009-10-21 11:12:11

标签: c# .net asp.net-mvc

我的项目中有画廊。我将图像保存在硬盘驱动器上但标签,描述等。我保存到数据库中。 使用通过服务层的数据库和数据验证。 由于用户已删除图像,因此文件将从硬盘驱动器中删除,并且记录将从数据库中删除。

//Action 
public ActionResult Delete (int id) 
( 
var entity = ServiceLayer.Entities.Get (id); 

System.IO.File.Delete (entity.FileName); //Might it be also be put to the service layer?
ServiceLayer.Entities.Delete (entit); 

return RedirectToAction ( "Index"); 
) 

在服务级别或控制器中放置删除文件的代码是否更好?

4 个答案:

答案 0 :(得分:3)

您应该始终将此类代码放在服务中。

控制器应尽可能少 - 它应该知道如何获取服务,传递任何参数并返回视图。

即使代码目前很简单,但它可能会随着时间的推移而增长,这是确保您拥有良好结构的好方法。

答案 1 :(得分:2)

最好在服务层执行此操作。

控制器应该只处理用户请求的内容,调用所需服务以完成用户想要的操作,并向用户显示他们应该看到的内容。

答案 2 :(得分:0)

我会把它放在服务层上,这样你就可以抽象它并用TDD测试它。

答案 3 :(得分:0)

你需要问自己一个问题,我的控制器负责什么?

恕我直言,控制者应该充当视图和模型之间的中介,其中模型在这种情况下包括服务。

那就是说,从来没有严格的规定在哪里放什么。与发表严格答案的狂热者不同,我会采取务实的态度。将文件系统依赖性添加到数据库服务会使它更有用吗?是否会导致类型爆炸 - 您的服务需要具有文件系统依赖性injectet == +1 interface +1具体实现+1测试类,以防单元测试等。

Somtiems它不值得,所以用你自己的判断。