我有5个任务,我的应用程序的一个步骤需要执行。
我已经有了一个存储库用于数据库ORM的东西,我至少得知它控制器可能不应该单独刷新一个SmtpClient,但是多少'胶水'进入控制器?在代码气味之下暴露了比我的代码片段更多的细节吗?
public ActionResult Index(HttpPostedFileBase file) {
var result = model.HandleFileUpload (file);
if (result.Success)
{
return SuccessAction("Success");
} else {
return FailureAction("Failure");
}
}
如果这一切都属于模型,那么我正在做的工作类型是什么,如果我只是“粘合”低级别的东西在一起?
答案 0 :(得分:3)
你描述的瘦控制器看起来对我很好。它易于测试,通过在模型中创建一组松散耦合的服务类,您可以轻松地遵循单一责任原则,每个服务类都处理您流程的不同步骤。 如果需要,这还允许您在MVC应用程序的范围之外使用代码。
所以,我会设想你有一个FileHandler
课程来实现你的HandleFileUpload
方法。
这将定义流程的步骤,可能会调用FileParser
,Repository
和EmailSender
类,每个类都可以通过接口消耗并依赖注入到{{1 }}
你在做什么工作?开发可以引以为豪的可维护软件: - )