代码之家  ›  专栏  ›  技术社区  ›  Chris Brandsma

为什么在.NET Compact Framework上使用WCF over Web服务?

  •  1
  • Chris Brandsma  · 技术社区  · 15 年前

    假设我使用的是通过WCF Web服务从移动设备到服务器的通信。我也可以使用标准的Web服务来实现这一点。

    我已经阅读了移动开发者的WCF指南( http://wcfguidanceformobile.codeplex.com/ ,我只看到wcf支持SSL,而直网服务不支持。

    现在,一个有效的原因可能是您有多个设备类型(桌面、Web、服务器到服务器等),您希望使用不同的协议与服务器进行通信—我不需要这样做。我只需要通过移动设备(.netcf)与我的服务器通话。

    2 回复  |  直到 12 年前
        1
  •  4
  •   Community CDub    8 年前

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

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

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

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

    考虑到这种显而易见的风险,我还想指出,无论您对将要为设备编写的代码做出什么决定,如果您还编写设备将与之通信的Web服务,那么您一定要使用WCF。

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