我只是想知道在我的MVC应用程序中应该将代码放在哪里进行外部服务调用?
在“考试参考70-486:开发ASP.NET MVC 4 Web应用程序”一书中,他们建议服务调用必须包含在模型代码中。但是,在我看来,服务调用必须放在如下所示的代理类中,因此如果需要,我们可以稍后修改服务调用:
public class ExternalServiceProxy
{
public void DoSomething()
{
//Call the external service
}
}
我只是想知道我的想法是正确的还是他们提出的是对的?
感谢。
答案 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);
}
}
}