【发布时间】:2011-12-15 21:56:47
【问题描述】:
目标
运行本地服务器 (WCF),其中包含在计算机开机时跟踪信息的业务逻辑(当用户作为普通进程登录时运行)。包含呈现逻辑的本地客户端 (WPF) 可以连接到现成的本地服务器,以将跟踪的信息呈现给最终用户。一切都是本地的和非关键的,安全不是问题。
实施
最初我基于Remoting技术编写了一个本地服务器,该技术被认为是遗留技术,并将本地客户端连接到本地服务器。每个共享对象都是远程共享的,可以被调用。
问题
无法远程序列化 Lambda 表达式(启用折射器的属性名称绑定)和事件。我知道可以使用启用远程的对象绑定事件并在服务器上调用该对象,但是,这会破坏 WPF 数据绑定。事件驱动编程很重要。
我要寻找什么?
创建我提到的体系结构的示例,或者显示如何配置 WCF 以与 Remoting 类似的方式运行的基本示例。我能找到的所有在线资源,包括 MSDN 文章,都是为 .NET 2.0 编写的。自 .NET 2.0 以来,WCF 世界发生了很多变化,使用 .NET 4.0 是一项要求。甚至指向 .NET 4.0 中 WCF 的类似 Remoting 行为的示例、教程或文章的链接也值得赞赏!
【问题讨论】:
-
WCF 的消息传递体系结构旨在支持松散耦合的客户端和服务。松散耦合意味着通过消息交换状态(数据)并且不共享行为(代码)。 WCF 版本不会改变这个基本的设计目标。虽然可以使用消息传递模式对事件进行建模,但它们通常以紧密耦合的方式使用。我不认为 WCF 非常适合您的实现,这可能是您找不到任何示例代码的原因 :)
-
您的主要问题是无法在客户端和服务器之间共享公共代码,还是跨 wcf 边界序列化事件?
-
使用远程处理时,事件是阻止 WPF 正确交互的主要问题。 WPF 能够绑定到事件以进行属性更改是绝对必要的。共享接口足以实现互操作性,但没有什么能阻止我共享所有代码——只要服务器包含实际对象。如果 WCF 不是正确的技术,您介意我推荐一下可以满足我要求的技术吗?