我应该在ASP.NET MVC应用程序中将外部服务调用放在何处?

时间:2014-05-19 06:38:56

标签: .net asp.net-mvc asp.net-mvc-4

我只是想知道在我的MVC应用程序中应该将代码放在哪里进行外部服务调用?

在“考试参考70-486:开发ASP.NET MVC 4 Web应用程序”一书中,他们建议服务调用必须包含在模型代码中。但是,在我看来,服务调用必须放在如下所示的代理类中,因此如果需要,我们可以稍后修改服务调用:

public class ExternalServiceProxy
{
  public void DoSomething()
    {
       //Call the external service
    }
}

我只是想知道我的想法是正确的还是他们提出的是对的?

感谢。

2 个答案:

答案 0 :(得分:3)

不要过于依赖鞋子,把所有东西都放进MVC"词汇"。 ASP.NET MVC是一个Web框架,而不是一个包罗万象的架构设计。随意将您的外部服务调用放在代理,应用程序服务,基础结构服务或您喜欢的任何内容中。

答案 1 :(得分:2)

您的控制器负责呼叫服务。但是,控制器也应该轻巧;这意味着它应该只包含控制器逻辑;而大多数业务或域逻辑应该在服务本身。

因此,我通常做的是在Web应用程序中创建一个Services文件夹,并将所有服务调用放在本地代理服务中。它们被注入控制器并返回模型(PatientSummary)。然后在控制器中,您将返回的模型映射到正确的视图模型(PatientSummaryViewModel),该模型将传递给视图。

 namespace WebApp.Services
 {
      public class PatientService
      {
           public List<PatientSummary> FindPatients()
           {
           }
      }
 }

 namespace WebApp.Controllers
 {
      public class PatientController
      {
           private readonly PatientService _patientService;
           public PatientController(PatientService patientService)
           {
                  _patientService = patientService;
           } 
           public ActionResult FindPatients()
           {
                var patients = _patientService.FindPatients(); // return model entities
                // create patient summary view model based on patients model
                return View(patientSummaryViewModel);    
           }
      }
 }