J2ME之家

匿名投稿 投稿指南 RSS订阅 J2ME通告:
搜索: 您的位置主页>Windows Mobile>

数据交换=>Windows_Mobile+WCF+Exchange2007 - part2

2008-8-19 23:43:03 来源:cnblog 责任编辑:黄季冬 【 点击: 我要投稿 [进入论坛]

摘要: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);

        }

    }

Tag:交换 数据   我们 应用 一个 public 可以 the Windows
责任编辑:黄季冬
  • 用户名: (新注册)密码: 匿名:  请文明参与讨论,禁止漫骂攻击。
    评论总数: [ 查看全部 ] 网友评论
    热门文章