WCF for .Net Compact Framework 3.5
应用程序开发示例
Visual Studio 2008 为 Windows Mobile 应用程序的开发人员提供了通过 Microsoft .NET Compact Framework 3.5 访问 Windows Communication Foundation (WCF) 功能子集的能力。
.NET Compact Framework 3.5 PowerToys 附带了一个名为 NetCFSvcUtil.exe 的工具,可以为您生成这些服务代理类。由于 NetCFSvcUtil.exe 没有包括在 Visual Studio 2008 中,因此您需要自行下载 Power Toys for .NET Compact Framework 3.5,下载地址请参考文章最后提供的链接。
由于 .NET Compact Framework 3.5 不支持 wsHttpBinding,因此需要将 Visual Studio 创建的默认端点改为 basicHttpBinding 或为该类型添加一个新端点。由于利用 WCF 可以很方便地提供多个端点,而且 wsHttpBinding 为那些支持它的应用程序提高了安全性,因此我们将保留它不动并添加一个使用 basicHttpBinding 的新端点。
关于WCF Service 应用程序的开发,这里不进行具体描述。不过,推荐一篇WCF经典文章:
WCF 开发示例向导 --- 经典推荐!
关于移动设备应用程序,通过Visual Studio 2008,使用“智能设备项目”模板创建一个新项目。将下列 Compact WCF 程序集添加到您的项目引用中:System.ServiceModel.dll 和 System.Runtime.Serialization.dll。这些程序集是开发WCF Client 端程序所必须的。
下面介绍创建WCF for .Net Compact Framework 3.5 应用程序的一些基本步骤。
1. 在创建好智能设备项目程序后,接下来通过Power Toys for .NET Compact Framework 3.5 提供的 netcfsvcuti.exe 工具,创建WCF Service 的代理类和元数据,如Contract等等。
netcfsvcutil /language:cs [url]http://www.entlib.com:8080/IArticleService.svc[/url]
本示例程序调用的WCF Service 是EntLib.com 提供的一个Article Service,用来返回最新的博客技术文章。
上述脚本,产生如下2个文件:
Generating files...
ArticleManager.cs
CFClientBase.cs
此工具不会像桌面 svcutil.exe 工具那样生成 output.config 文件。.NET Compact Framework 3.5 不支持通过配置文件对 WCF 进行配置,因此服务的所有端点信息都需要在代码中。
将上述文件,添加到智能设备项目程序中,后面会调用ArticleManager.cs 文件。
此工具生成的代理类ActicleManager.cs将方法调用转换到 WCF 消息中,然后使用 .NET Compact Framework 消息传送层进行发送。响应消息随后被反序列化并通过该方法的返回值传回应用程序。
2. 编写代码调用WCF Service。
下面的范例代码,调用WCF Service 的ArticleManager.GetRecentArticle() 方法,返回最新的10篇博客文章。
private ArticleEntity[] articleList = new ArticleEntity[]{};
private void btnRetrieve_Click(object sender, EventArgs e)
{
IArticleService articleManager = new ArticleServiceClient();
articleList = articleManager.GetRecentArticle();
lstNewArticle.DataSource = articleList;
lstNewArticle.DisplayMember = "Title";
lstNewArticle.ValueMember = "ID";
}
这里Device调用WCF Service 方法和Windows 桌面程序调用WCF Service基本类似。不过,在Device设备或模拟器调用WCF Service 之前,确认Device设备中的浏览器可以访问WCF URL。本示例的WCF 地址为: [url]http://www.entlib.com:8080/IArticleService.svc[/url]。
WCF服务器不会响应任何设备请求,除非设备或仿真器已插入。
下面是示例程序的运行界面:
示例程序代码:
本示例项目由 [url]http://blog.EntLib.com/yangyang/[/url] 提供,欢迎下载、交流。
参考文章:
1. 使用 .NET Compact Framework 编写 IM 应用程序, MSDN
[url]http://msdn.microsoft.com/zh-cn/magazine/cc164240.aspx[/url]
2. Power Toys for .NET Compact Framework 3.5 开发WCF for CF 3.5 的工具包
[url]http://www.microsoft.com/downloads/details.aspx?familyid=C8174C14-A27D-4148-BF01-86C2E0953EAB&displaylang=en[/url]