基于Silverlight的本地应用程序之间的通信2011-09-29msdn通过本地消息传递,您可以在单台计算机上运行的多个 Silverlight 插件之间创建通信通道。您通常 在单个网页中承载这些插件,并且使用本地消息传递来协调其行为。这样,您可以创建将多个基于 Silverlight 的应用程序与基于其他技术的内容结合在一起的复杂布局。例如,假定您要为基于 HTML 的网站提供基于 Silverlight 的导航系统。您可以使用 Silverlight 来创建菜单栏和侧栏,并且使用本地消息传递来保持其状态同步。另一个方案就是创建具有跨越侧栏广告 的动画效果的基于 Silverlight 的横幅广告,并且使用本地消息传递来协调过渡。您还可以使用本地消 息传递在网页中的基于 Silverlight 的应用程序和浏览器外运行的其他应用程序之间建立通信。配置本地消息接收器和发送器要建立本地消息传递通道,请在一个应用程序中创建一个 LocalMessageReceiver 对象,在另一个应 用程序中创建相应的 LocalMessageSender 对象。发送器始终发送第一个消息,不过接收器可能响应,并 且实现双向通信。您还可以在两个应用程序中都创建发送器和接收器对象,以便其中一个可以发送第一个 消息。在您创建接收器时,必须为其提供或者在全局范围内唯一的名称,或者在接收应用程序的宿主域内唯 一的名称。如果您仅指定名称,则默认情况下其范围限于域。在您创建发送器时,必须标识相应的接收器 。如果您仅指定名称,则发送器将认为接收器与其承载在同一域中,并且正在使用域范围的名称。名称范围确保接收器将只接收其期望的消息。如果您不想将应用程序限制为特定的域,则可以使用全 局范围。但是,这样做会增加名称冲突的可能性,除非您选择可能唯一的名称。如果您对在域中承载的所 有基于 Silverlight 的应用程序都十分熟悉,则域范围使您能够选择更简单的接收器名称。下面的代码示例演示一个基本的配置,在该配置中接收应用程序和发送应用程序承载在同一域中。VB" In the receiving application:
Dim messageReceiver As New LocalMessageReceiver("receiver")
" In the sending application:
Dim messageSender As New LocalMessageSender("receiver")
您可以创建多个接收器和发送器对象。每个接收器都可以接收来自任意数目的发送器的消息。但是, 每个发送器只能将消息发送到在其构造函数中标识的接收器。此外,您可以将接收器配置为只接收来自指 定发送器域的消息,或者配置为接收来自任何域的消息。下面的示例演示一个更复杂的配置,在该配置中接收应用程序和发送应用程序可以承载在同一域中或 者不同的域中。VB" In the receiving application:
Dim messageReceiver As New LocalMessageReceiver("receiver", _
ReceiverNameScope.Global, LocalMessageReceiver.AnyDomain)
" In the sending application:
Dim messageSender As New LocalMessageSender( _
"receiver", LocalMessageSender.Global)