gpt4 book ai didi

web-services - Azure:是否创建Web服务

转载 作者:行者123 更新时间:2023-12-02 07:41:51 24 4
gpt4 key购买 nike

我正在钛合金上开发一个应用程序,它可以连接到位于 Windows Azure 的数据库。我想知道:

  1. 是否有必要创建 Web 服务来从 Azure 获取数据存储,如 Windows Azure 已提供的 REST API
  2. 就我而言,创建 Web 服务有哪些优点和缺点?
  3. 从所有方面(包括性能、开销、安全性等)来看,创建 Web 服务或直接使用 REST API 哪种方式更可取?

最佳答案

首先我要说的是,我对Titanium Alloy并不熟悉,但我看到它是一个移动开发框架。我将像回答任何想要使用存储服务的移动解决方案一样回答这个问题。

一 - 无需 Web 服务作为代理即可获取 Azure 存储中的数据;然而,这有一些缺点,我将在下面谈到。您当然可以直接使用 REST API,从任何可以使用 HTTPS 并解释结果的设备中获取您需要的任何内容。

二 - 直接使用表存储、队列和私有(private) BLOB 容器的 REST API 的问题是调用者必须拥有凭据才能获取数据。存储帐户只有一种凭证,即帐户 key 和帐户名。目前还没有对不同服务或服务方面的细粒度控制,因此这意味着拥有这些凭据的任何人都可以对该帐户中的数据执行任何他们想要的操作,除非删除帐户(尽管他们当然可以删除帐户中的数据)帐户,甚至用他们整个翻录的电影收藏替换您的数据)。因此,如果您将凭据包含在移动客户端代码中,它们就会暴露,绝对不建议这样做。

对此的一个选项是使用 Shared Access Signatures (SAS) 。 SAS 产品会生成一个使用凭据签名的 URL,并且可以在一定时间内有效。这里的问题是您需要一些东西来为客户端生成 SAS url,这意味着您将在某个地方拥有一个 Web 服务。但是,您可以减少访问 Web 服务的次数,因为 SAS 会生成并使用一段时间,然后您需要再次访问该服务才能获取另一个服务。

我会警告这种方法,因为 SAS 生成的 URL 只是一个 URL。拥有此 URL 的任何人都可以执行创建 SAS 时分配给 SAS 的任何权限。当然,如果您使用 HTTPS 进行这些调用(您应该这样做),那么签名部分就会被加密;但是,请注意,中间人攻击实际上仍然可能发生。为了解决这个问题,人们通常会将 SAS 过期时间限制在几秒或几分钟,但在那时,根据您的负载,您可能最好通过 Web 服务路由所有内容,这样会比身份验证更舒服正在发生。例如,如果您的负载很小,或者查询之间的时间比您希望 SAS 保持有效的时间长,那么这可能不太合适。我已经看到这种“代客 key ”模式取得了巨大的成功,所以不要将我的警告视为这是一个坏主意,您只需要知道使用它们意味着什么。

三 - 如果您可以将一些处理工作转移到其他服务器上,那就太好了。从安全角度来看,您将更安全地通过处理身份验证的网络服务(直接或通过身份提供商)。您将通过这种方式控制对系统的所有访问。就性能而言,如果您随后转身并调用表存储,您将看到一个命中,因为存在多个跃点。这可以通过在您的服务级别进行缓存来缓解(这是一个完全不同的主题)。

您可能想要查看的一个选项是使用 Azure Mobile Services 。这为您提供了一个后端。默认情况下,它使用 SQL 数据库,但使用 new Custom API feature您可以从节点脚本中执行您需要执行的任何操作,包括访问表存储 API(请参阅此 post by Chris Risner 作为示例)。这种方法将消除您对运行的 Web 服务的需求,因为移动服务将充当该角色,但您需要了解定价模型并根据您自己的场景进行一些比较。

关于web-services - Azure:是否创建Web服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18017073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com