为什么在.net Compact Framework上使用wcf而不是Web服务?

时间:2009-07-08 02:06:18

标签: .net wcf web-services compact-framework

让我们假设我正在使用通过WCF Web服务从我的移动设备与我的服务器进行通信。我也可以使用标准的Web服务来完成这项工作。

我已经阅读了WCF移动开发人员指南(http://wcfguidanceformobile.codeplex.com/),我唯一看到的是WCF支持SSL,而直接Web服务却没有。

现在,一个有效的理由可能是你有多个设备类型(桌面,网络,服务器到服务器等),你想用它们使用不同的协议与服务器通信 - 我没有这个需要。我只需要通过移动设备(.netcf)与我的服务器通信

2 个答案:

答案 0 :(得分:4)

John is correct ASMX Web服务现在被认为是传统技术。通常,在编写通过任何类型的网络与其他进程通信的代码时,您的默认选择应该是WCF。

当您使用完整的.NET框架(即在服务器和桌面上)时,这始终是正确的。有时您可能需要使用其他技术(例如原始套接字),但从不使用ASMX。

.NET CF上的WCF不同。它是WCF的一个非常有限的端口,实际上你可以用旧的Web客户端做一些事情,你不能用.NET CFCF上的WCF:在旧的Web客户端,你可以使用Windows身份验证和HTTP和HTTPS。使用.NET CFCF上的WCF,您只能使用带有HTTPS的Windows身份验证。该特定问题实际上阻止我们在Microsoft Dynamics Mobile设备上使用WCF。

这种限制是有原因的,因为您不应该在生产场景中使用带有HTTP的Windows身份验证,因为用户名和密码将以明文形式传输,但我们需要它用于测试目的。

由于存在明显的风险,我还想指出,无论您为将要为您的设备编写的代码做出什么决定,如果您还要编写Web服务,您肯定应该使用WCF。设备将与之通信。

即使您在.NET CF上使用旧的Web客户端技术,您仍然可以与WCF服务进行通信。这就是我们对Dynamics Mobile的所作所为。

答案 1 :(得分:3)