要在 Silverlight 应用程序之间的通信,需要建一个信息发送程序和一个信息接收程序,发送端使用 LocalMessageSender 来发送信息,接收端使用 LocalMessageReceiver 来接收信息。
信息发送端:java-javascript.blogcn.com
创建发送端时需要提供一个接收端的名称,同时也可以限定接收端所在的域,如果不提供接收端的域默认为 Global 。
public class MainViewModel : ViewModelBase
{
private LocalMessageSender messageSender;
private const int MAXRETRY = 10;
private int retry = 1;
public string SendResult
{
get;
private set;
}
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
SendMessageCommand = new RelayCommand<string>(SendMessage);
messageSender = new LocalMessageSender("receiver1");
messageSender.SendCompleted += new System.EventHandler<SendCompletedEventArgs>(messageSender_SendCompleted);
}
private void messageSender_SendCompleted(object sender, SendCompletedEventArgs e)
{
if (e.Error != null)
{
if (retry > MAXRETRY)
{
SendResult = "Could not send message.";
RaisePropertyChanged("SendResult");
return;
}
else
{
retry++;
SendMessage(e.Message);
}
}
else
{
retry = 1;
SendResult = string.Concat(e.ReceiverName,":", e.Response);
RaisePropertyChanged("SendResult");
}
}
public RelayCommand<string> SendMessageCommand { get; private set; }
private void SendMessage(string msg)
{
messageSender.SendAsync(msg);
}
}
使用 SendAsync 方法来发送信息,当信息发送成功时引发 SendCompleted 事件,可以通过
SendCompletedEventArgs 的 Response 属性来获取从接收端返回的信息,当信息发送失败时会抛出
SendFailedException ,可以通过 SendCompletedEventArgs 的 Error 属性来获取。
信息接收端:
创建接收端时需要指定接收端的名称,同时也可以限定该名称的范围是限定为全局名称范围还是限定为接收方的特定域和限定接收方可从中接收消息的域。接收端的名称必须在全局范围内唯一,或者在接收端的宿主域内唯一。
public class MainViewModel : ViewModelBase
{
private LocalMessageReceiver messageReceiver;
public string Message
{
get;
private set;
}
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
messageReceiver = new LocalMessageReceiver("receiver1");
messageReceiver.MessageReceived += new System.EventHandler<MessageReceivedEventArgs>(messageReceiver_MessageReceived);
try
{
messageReceiver.Listen();
}
catch (ListenFailedException e)
{
Message = e.Message;
RaisePropertyChanged("Message");
}
}
private void messageReceiver_MessageReceived(object sender, MessageReceivedEventArgs e)
{
e.Response = "Message received.";
Message = e.Message;
RaisePropertyChanged("Message");
}
}
接收端通过 Listen 方法监听信息,当收到信息时引发 MessageReceived 事件,可以通过
MessageReceivedEventArgs 的 Message 属性来获取接收到的信息,同时可以设置
MessageReceivedEventArgs 的 Response 属性给发送端返回一个信息。java
分享到:
相关推荐
一个简单的示例,显示了Silverlight客户端和Java应用程序之间的通信。
IsolatedStorageSettings.ApplicationSettings - 按应用程序保存的 key-value 字典表 15、Silverlight(17) - 2.0数据之详解DataGrid, 详解ListBox 介绍 Silverlight 2.0 详解DataGrid, 绑定数据到ListBox: ...
本系统采用 C/S 架构,客户端使用 Windows Forms 应用程序,服务器端使用 Windows 服务程序,实现了远程通信和数据交互。 系统功能模块 本系统共有五个功能模块: 1. 材料入库管理:实现材料的入库、出库和库存...
为了改善企业资产管理(EAM)系统在用户体验、模块间数据传输效率及耦合度等方面的不足,构建了基于Silverlight与...客户端Silverlight应用程序通过代理调用WCF服务,提高了数据传输效率,降低了系统模块间的耦合性。
Ajax(Asynchronous JavaScript and XML)是一种基于JavaScript和XML的技术,能够实现异步通信,提高Web应用程序的响应速度和用户体验。Ajax技术的核心是使用XMLHttpRequest对象来发送异步请求,并使用JavaScript来...
3. Socket 编程:用于实现客户端和服务器端之间的通信。 五、开发流程 本系统的开发流程包括: 1. 需求分析:对系统的需求进行分析和确定。 2. 系统设计:对系统的架构和功能进行设计。 3. 编码实现:对系统的...
WPF可以编写Web程序或者桌面应用程序,可以直接编译为独立运行的.Exe文件。WPF运行时必须安装.net Framework 3.0。这就要求WPF目前运行的操作系统必须是Windows Vista或者Windows XP SP2。 此外,SilverLight作为...
Visual Studio 是一个来自微软的集成开发环境(IDE),它可以用来开发由微软视窗、视窗手机、Windows CE、.NET 框架、.NET 精简框架和微软的 Silverlight 支持的控制台和图形用户界面的应用程序以及 Windows 窗体...
应用程序域和进程级别的隔离能够满足你大部分的宿主场景; 内置的 SSL/TLS 加密支持; 会话级别的发送队列能够让你通过会话并发的发送数据,并保持高性能和可控性; SuperSocket 的命令处理模式让你的业务逻辑更清晰,...
Web 前端开发是互联网企业中一个重要的岗位,负责实现 web 应用程序的用户界面和用户交互体验。随着浏览器端的发展,Web 前端开发的重要性日益增加。下面是 Web 前端开发的知识点总结: 1. UI 设计部分:Web 前端...
Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...