我将使用 MVC4 开发一个基于 Web 的系统,它将使用 Web 服务(确切地说是 WCF)从数据提供者获取数据(我不能使用直接连接到 SQL)
所以,我有一个关于在这个项目中使用 Web 服务的问题。直接使用 Web 服务模型作为 MVC 模型是否正确,或者我应该为我的 MVC 项目创建单独的模型,然后使用对象映射器(例如EmitMapper
)将 Web 服务模型映射到 MVC 中的模型?
注意:考虑到网络服务可能会发生很大变化。
我将使用 MVC4 开发一个基于 Web 的系统,它将使用 Web 服务(确切地说是 WCF)从数据提供者获取数据(我不能使用直接连接到 SQL)
所以,我有一个关于在这个项目中使用 Web 服务的问题。直接使用 Web 服务模型作为 MVC 模型是否正确,或者我应该为我的 MVC 项目创建单独的模型,然后使用对象映射器(例如EmitMapper
)将 Web 服务模型映射到 MVC 中的模型?
注意:考虑到网络服务可能会发生很大变化。
不,不要将您的 WCF 可序列化代理类用作 MVC 视图模型 - 这将不必要地将 SOA 后端耦合到您的 MVC 前端。
这两个类有完全不同的关注点 - 例如,您可能希望使用不适用于您的 WCF 类的DataAnnotations等来装饰您ViewModels
的类(同样,您的 WCF 代理类可能具有序列化属性)。UIHint
此外,随着屏幕的发展,您通常会发现您可能需要显着区分这 2 个模型 - 例如,您的屏幕需要您的服务不需要的属性,反之亦然。
所以是的,WCF 数据序列化和 MVC ViewModel 的单独类,正如您所建议的,如果您遵守标准命名约定,像 AutoMapper 这样的映射器将为您完成大部分工作。
我只能告诉你我会怎么做。
保持模型分开。正如您所说,Web 服务可能会发生很大变化。有一个中途的房子可以保护你免受很多实施流失的影响。
还值得指出的是:-