Welcome

首页 / 软件开发 / Silverlight / 基于Silverlight的本地应用程序之间的通信

基于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)