gpt4 book ai didi

c# - 从 Controller 调用服务是否违反了 MVC?

转载 作者:行者123 更新时间:2023-11-30 21:58:35 25 4
gpt4 key购买 nike

我在网上看到很多代码引用都是直接在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 Controller 是处理用户交互的组件,与模型 一起工作,并最终选择一个 查看以呈现显示 UI。

哪里提到了服务?我知道人们在谈论服务层模式或 SOA 架构。但这仍然是违规行为为了方便而违规

出于某种原因,如果我想取消服务。然后我最终会改变 Controller 。并且必须建立我的模型。 相反,我假设只更改模型。

我觉得 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 的模型(具有属性的类)。我指的是文件夹模型中的类。

根据 MSDN , 模型:模型对象是应用程序的一部分,它实现了应用程序数据域的逻辑。通常,模型对象会检索模型状态并将其存储在数据库中。

我从上面假设文件夹模型中的类对象应该具有执行 CRUD 操作的逻辑。

我是不是漏掉了什么。请分享您的宝贵想法。

最佳答案

没有。事实上,它是 advocated作为一种让 Controller 保持美观和纤薄的方法。

关于c# - 从 Controller 调用服务是否违反了 MVC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29973045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com