您的位置:首页 > 其它

WCF for .NET CF快速入门

2008-03-18 04:03 567 查看
摘要

本文可以看作是Chris Tacke的文章An Introduction to WCF for Device Developers的翻译,文中代码由于笔者调试需要稍作了修改,局部做了进一步的说明,并将部分链接更新。

Keyword

Windows Mobile, WCF, .NET CF, Services, Xml Serialization

这是一篇我推荐给很多朋友看过的文章。文章很短,也没有涉及太多WCF原理性的东西,但是作为WCF Mobile开发入门,这却是个很好的向导,为了方便阅读,有些地方我做了额外的说明。

Enjoy it~

1 开发环境与工具

1. Visual Studio 2008 (Orcas) RTM.

2. Power Toys for .NET Compact Framework 3.5

3. 一台 支持.NET Compact Framework3.5的Windows Mobile 5.0/6.0 的模拟器或者设备.

(Chris Tacke在他的设备上调试成功,在模拟器上由于某些不可知的因素失败了。笔者在模拟器上调试成功)

4. Windows XP 或者 Vista的操作系统

(Chris Tacke在XP下调试的,笔者则是在Vista下)



2 PC
端的WCF服务程序

当然,这只是一个很简单的模型,就是通过WCF使移动设备与PC进行信息交互。

首先,我们需要在PC机上构建一个服务,这个服务实现的功能很简单,就是进行两个整数的加法,并返回结果。

第一步,打开你的VS创建一个控制台程序,并添加引用:System.ServiceModel

然后,添加一个新的类(事实上是一个接口,它用于定义我们的服务所暴露出来的契约),我们把这个类命名为IMyProcess,其内容如下:

using System.ServiceModel;

namespace Freesc.WCF.Demo

using System;

namespace Freesc.WCF.Demo

好,服务的内容已经写好了,我们需要来看看这个PC端的Server是怎么工作的了。首先,请将你的Program.cs替换为如下代码:

using System;

using System.ServiceModel;

using System.ServiceModel.Description;

using System.Net;

namespace Freesc.WCF.Demo

这段程序要稍稍复杂一点,首先,你也许会注意到这里用了一些预编译指令。使用这些预编译指令是因为我们要在稍后的一个工具中访问这个运行的服务并为我们生成一些代码。如果你暂时还比较晕的话,别急,稍后会说到这个工具的。

这里的CLIENT_DISCOVERY_BUILD只是一个条件编译的符号,您暂且可以无视之。其实这里只是为了我们编译代码的时候版本切换比较方便。

某些情况下我们希望把前面编译的A版本的代码暂存起来,以免在CS文件中该来改来改去,这时只需要在Debug 的配置项目下做一些修改,比如这里我们加上了Discover这一项,用记事本打开工程文件,可以看到这一段:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Discovery|AnyCPU' ">

<DebugSymbols>true</DebugSymbols>

<OutputPath>bin"Discovery"</OutputPath>

<DefineConstants>TRACE;DEBUG;CLIENT_DISCOVERY_BUILD</DefineConstants>

<DebugType>full</DebugType>

<PlatformTarget>AnyCPU</PlatformTarget>

<ErrorReport>prompt</ErrorReport>

</PropertyGroup>
好,那这一段主程序代码到底有什么作用呢?首先,我们需要为我们的服务创建一个Uri。

要创建这个Uri首先要知道本机的IP。这里如果你直接Copy Chris Tacke的代码也许不能运行(特别是Vista用户),可能会抛出一个这样的异常:

public Form1()

private void menuCalculate_Click(object sender, EventArgs e)

代码很短,不过很重要的一点是我们没有使用DeviceClient的默认构造器,我们把RemoteAddress中的”localhost”替换成了服务所在主机的IP(你可以在MyProcessClient类的找到相应的静态字段)。

点击menuCalculate我们看到以下的结果:

PC机上



设备上




下载完整代码

总结


从上面的例子我们看到,在Windows Mobile上构建一个WCF的应用程序并不是太难,代码量也不大,只是我们缺少相应的文档资源, 也许本文能帮你节约一点上手的时间。

希望这篇短文能对大家有所帮助,尽管它并没有对某些细节做清楚的阐述,但是相信您已经能够按照文中的做法,在Windows Mobile上轻松构建出你自己的WCF程序,那么本文的目的也就达到了。

Regards

©Freesc Huang

黄季冬<fox23>@HUST
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: