在 MVVM 中哪里放置对 WCF 或其他 Web 服务的调用?
我正在使用 Prism 和 MVVM 构建 Silverlight 应用程序。
当在您自己的服务器上调用 WCF 服务时,甚至是像 Bing api 这样的外部 Web 服务时,这会从模型中完成吗?或者来自 ViewModel,从而使服务成为模型?
I'm building Silverlight applicaitions using Prism and MVVM.
When calling WCF services on your own server, or even external webservices like the Bing api, would this be done from the Model? or from the ViewModel, thus making the service the Model?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的。视图应该只管理数据到用户界面元素的转换,控制器应该只协调视图和模型之间的交互,其余的(业务逻辑和数据访问,包括对远程服务的调用)应该在模型中。
Yes. The View should only manage the transformation of data into user interface elements, the Controller should only orchestrate the interaction between views and model, and the remaining (business logic and data access, this one including calls to remote services) should be in the Model.
Sorskoot,
对于您的场景,我创建了一个与 WCF 交互的服务类。然后我的 ViewModel 与服务交互。
此外,随着 silverlight 引入 Silverlight 4,您可能希望创建自己的模型并使用转换器来转换进入应用程序的 WCF 对象,以便获得一定程度的分离。另外,您可以开始利用 IDataErrorInfo、INotifyPropertyChanged 等功能。
在 Cinch 上搜索。它与 Silverlight 不兼容,但也能让您了解我所指的内容。看看数据包装器。
Sorskoot,
For your scenario, I create a Services class that interfaces with WCF. My ViewModels then interface with service.
Also, with silverlight introducing Silverlight 4, you may want to create your own models and use converters to convert the WCF objects going into your app so you have a level of separation. Plus you can start utilizing features such as IDataErrorInfo, INotifyPropertyChanged.
Search on Cinch. It's not Silverlight compatible but will give you an idea of what I'm referring too. Look at DataWrappers.