这些部分中的哪一部分进入模型与控制器?

时间:2011-09-26 21:35:30

标签: c# asp.net-mvc

我有5个任务,我的应用程序的一个步骤需要执行。

  1. 在用户上传过程中接收CSV文件。
  2. 将CSV中的每一行解析为规范表示。
  3. 创建与该表示相关的ORM POCO。
  4. 将每个项目保存到数据库。
  5. 发送电子邮件至每个POCO中定义的电子邮件地址。
  6. 我已经有了一个存储库用于数据库ORM的东西,我至少得知它控制器可能不应该单独刷新一个SmtpClient,但是多少'胶水'进入控制器?在代码气味之下暴露了比我的代码片段更多的细节吗?

    public ActionResult Index(HttpPostedFileBase file) {
    
        var result = model.HandleFileUpload (file);
    
        if (result.Success) 
        {
            return SuccessAction("Success");
        } else {
            return FailureAction("Failure");
        }
    
    }
    

    如果这一切都属于模型,那么我正在做的工作类型是什么,如果我只是“粘合”低级别的东西在一起?

1 个答案:

答案 0 :(得分:3)

你描述的瘦控制器看起来对我很好。它易于测试,通过在模型中创建一组松散耦合的服务类,您可以轻松地遵循单一责任原则,每个服务类都处理您流程的不同步骤。 如果需要,这还允许您在MVC应用程序的范围之外使用代码。

所以,我会设想你有一个FileHandler课程来实现你的HandleFileUpload方法。 这将定义流程的步骤,可能会调用FileParserRepositoryEmailSender类,每个类都可以通过接口消耗并依赖注入到{{1 }}

你在做什么工作?开发可以引以为豪的可维护软件: - )