摘要:WCF作为一个新的特征在.Net Compact Framework中得到实现。本文将基于 Exchange2007继续探讨WCF Compact特有的消息存储和转发特性(Store and Forward messaging)。这一部分将之前的调度器应用升级到支持照片共享,并结合Virtual Earth加入了定位元素。
Keywords:
WCF,Windows Mobile,.Net Compact Framework,Exchange Server 2007,Virtual Earth
(本文英文原文由marteaga发表于Opennetcf Community 原题为“Exchanging Data using Windows Mobile, Windows Communication Foundation, .NET Compact Framework and Exchange 2007”)
非常建议您先阅读前面一篇文章:http://www.j2mehome.com/html/WindowsMobile/20080819/3660.html
加强版的调度器应用
为了用于实际的企业应用,我们把之前的调度器应用做了一些加强. 比如, 使用SQL Server 存放调度器发出的请求, 现场的服务执行终端会被打上一个GPS的标签. 你也可以使用SQL Replication存储并同步数据, 并使用WCF 来提示应用程序进行同步。
- 图片共享的应用场景
图片共享的应用允许用户分享他们最近拍摄的照片,使用WCF和Exchange来发送照片. 这里我们假设一个Windows Mobile 应用跑在两台独立的设备上,我们的桌面应用不再是调度器的角色(后面会详细介绍)。
我们假设这个应用是由于在两个希望分享近期照片的朋友之间,不过同样的主题还是可以用于一个LOB型的应用。比如一个现场的工人可以拍摄一张问题组件照片发送给中央调度器,由调度器分析并指派相应的助理或者专家到现场。
Windows Mobile端的实现
在前面的示例中,我们在桌面的应用程序中初始化了消息对象。在接下来的这个程序中,我们将会在移动设备来做这个工作。并将消息发往桌面应用以及另一个设备。
和之前的调度器应用一样,我们将使用WCFMessagingManager,XmlSerializerWrapper略有不同的是在这个例子里面我们发送的是一个PhotoData消息对象,而不是DispatchMessage。
先如下创建WCFMessagingManager:
WindowsMobileMailBinding binding = newWindowsMobileMailBinding();
m_messagingManager = newWCFMessagingManager<PhotoData>(binding, m_config.IncomingChannel);
PhotoData的定义如下:
public class PhotoData
{
privateBitmap m_bitmap = null;
public PhotoData(string filename)
{
//这里我们暂且以多伦多的纬度和经度为例
this.Latitude = 43.6919;
this.Longitude = -79.5782;
//设置文件名
FileName = filename;
SetProperties();
//设置ID
Id = Guid.NewGuid();
}
public PhotoData()
{
}
public string Comment { get; set; }
public Guid Id { get; set; }
public string FileName { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public int FileSize { get; set; }
public string Base64Data { get; set; }
///<returns></returns>
public Bitmap GetBitmapImage()
{ ... }
private void SetProperties()
{ ... }
}
你可以看到, 这里 photoData有各种各样的一些属性:图片说明,文件名,纬度/经度,文件大小,Base64数据。当通过WCF发送消息的时候,我们需要确保图片被正确的转化为Base64的字符串:
private void SetProperties()
{
if (File.Exists(FileName))
{
//Grab the byte data from the file
FileStream fs = File.Open(FileName, FileMode.Open);
byte[] data = newbyte[fs.Length];
fs.Read(data, 0, data.Length);
fs.Close();
//Set the file size
FileSize = data.Length;
//convert the byte[] to base64
Base64Data = Convert.ToBase64String(data);
}
}
-
·用户界面 Screen类及其子类list SCREEN TextBox 介绍实例
·J2ME教程 j2me视频教程下载
·J2ME教程 在J2ME上像SQL和mysql一样连接数据库的源码示例
·J2ME教程 Eclipse开发J2ME程序之图形化游戏
·J2ME教程 通过J2ME发邮件的源码程序
·J2EE 一个用JAVA写的测算服务器响应速度程序
·J2SE 如何设计出具有GUI特色的“纯”JAVA程序
·J2ME教程 手把手教你写《松鼠推箱子》的手机小游戏实例
·Servlet 使用jfreereport在servlet中产生pdf文件报表
·开发环境 J2ME 开发环境搭建
·J2ME教程 Eclipse开发J2ME程序之Hello World
·J2ME教程 JAVA游戏编程系列----j2me MIDlet 手机游戏入门开发
·J2SE JAVA写的一个简单的聊天室程序源码
·J2ME教程 J2ME处理游戏动作的例子 game action
·开发环境 Eclipse开发J2ME程序之插件安装
·诺基亚 Nokia手机的移动游戏开发入门(一)
·J2ME教程 J2ME一个简单的绘图的例子
·用户界面 基于j2me的图片特效(缩放,裁剪,调整大小,镜像,
·Servlet jfreereport在servlet中产生pdf文件报表
·开发环境 J2ME 高级开发工具
·J2ME教程 一些好用的方法,编写游戏的时候可能用的上!不断更
·J2ME教程 一个扫屏的J2ME小例子GameCanvas实例
·数据和算法 如何对Record Store进行操作及应用实例
·J2ME教程 J2ME游戏开发从理论到实践之三
·网络编程 学习J2ME编程需要把握的七种技术
·J2EE 移动成绩查询系统(八-后台管理)
·网络编程 NetBeans之J2ME开发:别让程序员手机闲着
·J2ME教程 Tumbleweed game 风吹草小游戏代码
·J2ME教程 J2ME游戏程序引擎结构简述
·J2ME教程 在手机上显示钢琴键盘的小J2ME程序

RSS订阅