我有一个带有模型(实体)DLL 项目的 MVC4 应用程序,该项目用于 BusinessLogic 和 DataAccess 层。MVC 控制器使用一些映射器扩展方法将视图模型(绑定到视图)转换为模型,并将模型对象传递给业务逻辑层。
我的问题是:如果我需要一些像 KnockoutJS 这样的客户端功能,那么创建一组 KnockoutJS ViewModel 是一种好习惯吗?我担心 ViewModel 的可维护性和频繁更改。
我有一个带有模型(实体)DLL 项目的 MVC4 应用程序,该项目用于 BusinessLogic 和 DataAccess 层。MVC 控制器使用一些映射器扩展方法将视图模型(绑定到视图)转换为模型,并将模型对象传递给业务逻辑层。
我的问题是:如果我需要一些像 KnockoutJS 这样的客户端功能,那么创建一组 KnockoutJS ViewModel 是一种好习惯吗?我担心 ViewModel 的可维护性和频繁更改。
我会说不,knockoutJS 是一个客户端库,因此不应该真正规定您的服务器如何发送数据。只要您的视图模型包含渲染所需的所有相关信息,这就是您所需要的。客户端如何处理与服务器完全无关。
通过创建 knockoutJS 特定的视图模型,您实际上将服务器响应耦合到您的客户端,这不是一个好主意 - 如果您更改为不同的客户端怎么办?如果你想支持多个客户端怎么办?
我建议创建一个特定于 KnockoutJS 的视图模型的客户端表示。
我建议您创建特定于 KnockoutJS(或任何其他客户端使用)的 ViewModel。
我觉得在您的站点中使用的 ViewModels,在服务器端,应该能够轻松更改,因为站点既创建它们又使用它们。此外,您有编译器可以让您知道是否有错误。
然而,我觉得当我们将这些模型暴露给客户时,它们更像是一份不应该改变的合同,或者至少不应该经常改变。