WCF是否允许我在实现INotifyPropertyChanged或包含observablecollection对象的对象上跨边界使用对象引用?

时间:2010-04-20 15:49:34

标签: vb.net wcf observablecollection inotifypropertychanged

所以我创建了一系列通过串口与一块硬件交互的对象。有一个线程正在运行监视串行端口,如果硬件状态发生变化,它会更新对象中的属性。我正在使用可观察的集合和INotifyPropertyChanged。

我在WPF中构建了一个用户界面,它工作得很好,让我在硬件发生变化时实时更新,并允许我通过使用绑定更改这些属性来向硬件发送更改。

我希望我可以在不同于硬件连接的机器上运行UI而无需大量事件连线。可能甚至允许多个UI连接到同一服务并与此硬件交互。

到目前为止,我了解到我需要创建一个WCF服务。我试图弄清楚我是否能够将对服务中创建的对象的引用传递给客户端,从而使事件保持不变。因此UI实际上只是绑定到远程对象。

我是否正在使用WCF向正确的方向发展?

此外,我在C#中看到了大量的WCF示例,VB中有没有很好的实际应用示例可能与我正在尝试的内容相符?

1 个答案:

答案 0 :(得分:2)

不,WCF是基于消息的系统 - 您传递序列化(text / xml)消息。没有“对象引用”可以传递。

客户端有一个代理,使您能够“调用”服务方法。然后,WCF运行时捕获该调用的参数,将它们打包在序列化消息中,并通过线路发送该消息。

客户端与服务器之间存在无直接连接 - 客户端无法“覆盖”服务以获取远程对象,服务也无法返回客户端找出谁叫它或类似的东西。

您要发送给服务的所有内容都必须是邮件本身或邮件附带标题的一部分。

这些消息必须符合XML模式标准,这又意味着:只有具体的非泛型类型。你不能传递接口,你不能传递引用 - 只有基本类型组成的具体类型,如string,int,datetime等。

更新:也许您需要查看发布/订阅(简称pub / sub)模式 - 您也可以使用WCF构建模式。这将允许您的数据收集机器定期发布其数据或何时更改,并且可以通知任何数量的订户这些更改。

查看其中的一些文章 - 谷歌搜索或叮当作为“WCF pub sub”肯定会变得更多!