我在线看到很多代码参考,他们直接在Controller中使用服务。
public class PersonController : Controller
{
public ActionResult Index(int personId)
{
Person personDataModel = null;
using(var service = new Personservice())
{
personDataModel = service.GetPerson(personId);
}
var personVM = MapPersonDataModelToViewModel(personDataModel);
return View("Index",personVM);
}
}
根据MSDN, 控制器 是处理用户互动的组件,使用 模型 ,并最终选择 视图 来呈现显示UI。
提及服务的位置在哪里? 我知道有人在谈论服务层模式或SOA架构。但这仍然是 违规行为 。为方便起见, 违规 ?
出于某种原因,如果我想取消服务。然后,我将最终更换控制器。并且必须建立我的模型。 相反,我想只更改模型。
我觉得Model应该有智能来通过调用外部服务或单独为Controller提供请求。
public class PersonController : Controller
{
public ActionResult Index(int personId)
{
var personVM = PersonModel.GetPerson(personId);
return View("Index",personVM);
}
}
public class PersonModel
{
public PersonVM GetPerson(int personId)
{
Person personDataModel = null;
//Can either do this
using(var service = new Personservice())
{
personDataModel = service.GetPerson(personId);
}
//Or can do this
personDataModel = GetPersonDataModel(personId);
var personVM = MapPersonDataModelToViewModel(personDataModel);
return personVM;
}
}
我知道PersonModel需要重新分解,但这不是重点。
更新:
当我的意思是模型时,我并不是指我们传递给View的MODEL(具有属性的类)。我的意思是模型文件夹中的类。
根据MSDN,模型:模型对象是应用程序的一部分,它实现了应用程序数据域的逻辑。通常,模型对象检索并存储数据库中的模型状态。
我从上面假设文件夹Model中的类对象应具有进行CRUD操作的逻辑。
我错过了什么。请分享您宝贵的想法。