我想知道在基于WPF(可能是MVVM)的应用程序中最好的方法是什么,其中与远程设备的数据交换是通过协议缓冲区进行的(如果方便的话)。
WPF强烈建立在可观察性以及底层模型/视图模型与DP和INotify *接口的可变性之上。它是否与create / mutate POCO的协议缓冲方法相抗衡?
典型的上下文是具有WPF客户端应用程序,通过TCP / IP连接到运行Linux的嵌入式设备。基本上,我正在评估几种解决方案的优缺点,以找出最佳解决方案。
提前谢谢。
答案 0 :(得分:3)
WPF应该对此没有任何影响,因为您的数据交换应该分成一个独立的,与UI无关的层。如果需要,您的服务层可以返回非GPB对象(或返回GPB对象通过部分类实现的接口),并且您的视图模型层提供另一层绝缘。
答案 1 :(得分:0)
您的关键点似乎是关于可变性和可观察性。
谷歌protobuf API确实很大程度上是不可改变的,并且不会非常喜欢WPF;但是,你也提到了protobuf-net,它不是 那个模式,而是采用标准的.NET习语。
protobuf-net模型可以是您想要的任何标准模型。如果您希望它有通知事件...有通知事件。它不介意。我不记得100%,但如果您使用的是.proto文件,我相信有一个开关必须自动添加代码生成通知事件,但.proto完全是可选的protobuf-净。
protobuf-net的输出应该完全可以与您的Linux设备的任何其他实现互换。一个选项是Mono / protobuf-net,但你也可以使用“标准”实现。