使用潜在的未来 iPhone 和 Android 客户端编写 WCF Web 服务

Writing a WCF Web Service With Potential Future iPhone and Android Clients

我们目前正在重写我们的旗舰产品,并且已经到了必须考虑远程和移动访问我们产品的选项的地步。一般来说,我们的产品是由我们的客户购买和自托管的。当前状态使用 WCF 服务而不是 NetTcpBinding 来处理与我们的桌面应用程序的交互,这工作正常。但是,这显然不适合我们的网络和移动客户端。

由于在 Windows 桌面应用程序开发方面经验丰富,所以在选择 Web 服务技术和策略时,我有点不太了解,尤其是在必须考虑与其他平台的兼容性时。考虑到以下要求,您会推荐哪种 WCF Web 服务技术?

  • 基于用户名/密码的身份验证
  • 会话(有状态)行为(尽管在本地处理所有会话信息并使服务无状态是一种选择)
  • 能够从 ASP.NET MVC Web 应用程序、iPhone/iPad 应用程序和 Android 应用程序(以及以后的 WP7 等第三平台)调用相同的服务

我知道我可以实现一个 REST-ful 服务并推出我自己的会话管理和身份验证解决方案,但如果可能的话,我更愿意遵守行业惯例。是否有 WCF 技术(或一组技术)以与我列出的三个平台兼容的方式处理这些问题?


REST 仅使用 HTTP 协议,因此充当 HTTP 客户端的每个设备都可以使用它。它不是协议 - 您正在定义通过 REST 使用的协议。每个移动平台都能够使用 REST 服务,因此您不应该在这里遇到任何阻塞问题,如果您不确定,只需尝试做一些概念证明。

使用 WCF 并检查新的 Web-API(它仍然只是预览版,但它将是 WCF 的未来版本),因为它简化了使用 WCF 的 REST 服务开发并添加了新功能。对于身份验证,您可以使用 HTTP 中可用的任何内容 - 使用 HTTPS 的基本身份验证将起作用,或者您可以检查 OAuth。

我对您的要求有一个大问题:

Session (stateful) behavior (though handling all of the session information locally and making the service stateless is an option)

表示状态传输的 REST 状态。从本质上讲,所有状态都应在请求内传输,因为您正在发布新资源,获取现有资源并将它们放回原处。通过放置或发布资源,您正在进行资源中定义的状态转换。完全有状态的通信适用于 RPC。但是如果不深入了解您的产品,真的很难再考虑这个问题。


Windows 通信基础 (WCF) 中的 REST