在我的应用程序中,我有一个View,它需要来自多个服务器端数据模型的数据。
我们有两种选择。
-
调用一次Single WebSevice,从服务器端获取ViewModel类对象并将其绑定到View。
-
调用多个WebServices并获得不同的服务器端模型类,然后在客户端创建一个新的视图模型类并将其绑定到视图。
这两个选项中最好的方法是什么?请告知。
如果有疑问,请考虑您的用户体验。
从用户的角度来看,最令人沮丧的事情之一是在他们按下某个按钮后等待你的应用程序做出响应。
每次你的应用程序向服务器发出请求时,用户都会遇到延迟——每次额外的请求都会增加延迟的长度。大多数典型的用户在被激怒并谴责你的应用程序"慢"之前,对这类事情的容忍度非常低。
为了最大限度地减少内容加载所需的时间,请将客户端和服务器API之间的调用次数保持在绝对最小值-通常,调用次数越少越好。这在很大程度上倾向于"单一请求,单一ViewModel"方法。
还要注意ViewModel负载的大小;当大部分数据永远不会被看到或使用时,不要只向用户返回一个巨大的数据转储——这不仅会浪费带宽并使速度变慢,而且还意味着客户端将要做额外的不必要的工作。
这对您的服务器也有好处;由于你的服务器需要满足更少的请求,你以后在扩展应用程序以应对更多用户时要做的工作就会更少。
最后,考虑一下只负责演示和用户交互的简单轻量级"哑"客户端与重量级客户端应用程序之间的区别。
-
通过让服务器负责生成ViewModel并完成所有艰苦的工作,您可以避免客户端上的业务逻辑;因此在业务层和应用层之间保持干净的分离。
-
另一方面,如果您需要多个服务器API调用,那么您可能需要在客户端上更加复杂地构建视图模型,这可能会模糊应用程序和业务层之间的界限。
如果您最终构建了多个不同的客户端应用程序,这些应用程序调用同一服务器,您可能会发现自己需要在这些应用程序之间重用该业务逻辑;重用服务器上已经存在的业务逻辑更容易,尤其是当您的客户端应用程序使用不同的技术(例如Web客户端和移动应用程序)时。