【问题标题】:Writing a WCF Web Service With Potential Future iPhone and Android Clients使用潜在的未来 iPhone 和 Android 客户端编写 WCF Web 服务
【发布时间】:2011-10-10 19:01:43
【问题描述】:

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

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

  • 基于用户名/密码的身份验证
  • 会话(有状态)行为(尽管在本地处理所有会话信息并使服务无状态一个选项)
  • 能够从 ASP.NET MVC Web 应用程序、iPhone/iPad 应用程序和 Android 应用程序(也许还有WP7 等三级平台)

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

【问题讨论】:

    标签: android iphone asp.net-mvc wcf rest


    【解决方案1】:

    【讨论】:

    • 谢谢;虽然我很乐意在 WCF 中找到有关编写(和使用)REST-ful 服务的信息,但我更关心与使服务与所有三个平台兼容的相关考虑。
    • REST 就是 REST。这很简单,无需担心“兼容性”。确保您的 REST 生成/使用 JSON,因为这比 XML 更容易解析(并且不那么模糊)。
    • @PeterKnego:我知道 REST 本身是基本的,但是例如身份验证呢?使用 HTTP 基本身份验证作为调用的一部分是标准做法,还是调用本身通常包含用户名/密码对?
    • @Admin Robinson,现在你问的是一个完全不同的问题,并且可能是一个主要的重复:stackoverflow.com/search?q=rest+authentication - 如果你曾经使用过任何“restful” api,你会很快找到没有标准,每个人玩的游戏都有点不同。 REST 非常简单,几乎与您提出的问题无关。
    • @jfar:呃,不,我仍然在问同样的问题......我在问是否有围绕问题中列出的问题的标准和/或约定。换句话说,是否存在所有三个平台上的标准 API 都支持的身份验证标准?会话管理和其他我可能没有想到的事情也是如此。基本问题围绕着选择技术和习语,以便与所有三个平台兼容。 “否”或“没有任何标准”当然是有效的答案。
    【解决方案2】:

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

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

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

    会话(有状态)行为(尽管在本地处理所有会话信息并使服务无状态是一种选择)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多