目前,我们有一个规模不错的 MVC 项目运行良好,我已经开始考虑一些重构,我有一个问题。
目前,数据层和服务层存储在单独的类库中。控制器从执行任何逻辑检查的服务层加载数据对象(从 linq2sql 生成),然后将它们转换为视图模型(使用 Auto-Mapper)。
而不是直接从服务返回 ViewModel 吗?
目前,我们有一个规模不错的 MVC 项目运行良好,我已经开始考虑一些重构,我有一个问题。
目前,数据层和服务层存储在单独的类库中。控制器从执行任何逻辑检查的服务层加载数据对象(从 linq2sql 生成),然后将它们转换为视图模型(使用 Auto-Mapper)。
而不是直接从服务返回 ViewModel 吗?
当然不!
ViewModel 的目的是在视图和“真实”数据对象之间进行调解——它完全是特定于视图的。因此,如果您想保持关注点的清晰分离,除了您的 GUI 之外的层甚至不应该知道存在这样的模型......
我会说不是。该服务的重点是它可以被处理您的业务层的许多不同项目使用。我希望这是就您的业务对象而言。视图模型特定于 MVC 应用程序,因此,我希望它们与服务层分开。请注意,它们通常包含应用程序的业务和“内务”数据,并且可能封装多个业务对象。我想我会继续在你的控制器中改造它们。