我的 WPF 应用程序应该通过 WCF 从管道接收数据:
我是 MVVM 的新手,我不明白在哪里放一些东西。我很清楚 View 是什么,但不清楚 ViewModel 是什么,尤其是我的情况下的 Model 是什么(如果涉及 WCF)问题是:
public MainWindow()
{
ChannelFactory<IManagementConsole> pipeFactory =
new ChannelFactory<IManagementConsole>(
new NetNamedPipeBinding(),
new EndpointAddress(
"net.pipe://localhost/PipeMBClientManagementConsole"));
IManagementConsole pipeProxy =
pipeFactory.CreateChannel();
List<ConsoleData> datas = new List<ConsoleData>();
foreach (StrategyDescriptor sd in pipeProxy.GetStrategies())
{
datas.Add(pipeProxy.GetData(sd.Id));
}
this.DataContext = datas;
}
我可以假设这是我的 MVVM 模型吗? :
[ServiceContract]
public interface IManagementConsole
{
[OperationContract]
ConsoleData GetData(int strategyId);
[OperationContract]
List<StrategyDescriptor> GetStrategies();
}
最佳答案
模型是描述来自后端数据源的数据的类。它们可以是来自源的实际类(如 EF 或 WCF 代理),也可以是简单的 DTO。这真的取决于你的喜好。
ViewModel 是一个描述要在 View 中显示的数据的类。通常,但不一定,数据来自模型类。
ViewModel 负责管理 Model 类:将它们的信息暴露给 View,并根据来自 View 的输入对它们做一些事情。话虽如此,我不希望在 ViewModel 中看到实际的通信工作。相反,我将通信抽象到另一个层(我称我的服务层,但在这种情况下可能会造成混淆)。
本质上,我让 ViewModel 向与后端通信的服务层发出请求,以检索/创建模型对象,然后将这些对象返回给 ViewModel。如果服务调用是异步的但仍然可以完成,这会变得复杂。
有关这方面的一个简单示例,请从 practicalmvvm.com 下载代码示例。 .
关于c# - 我可以使用 WCF 接口(interface)作为 MVVM 模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8187135/