【问题标题】:Azure Mobile Services Easy Tables - Am I On The Right Track?Azure 移动服务简易表 - 我在正确的轨道上吗?
【发布时间】:2016-04-20 05:02:01
【问题描述】:

我正在开发一个简单的移动应用程序,以了解有关应用程序开发的更多信息。我正在使用 Xamarin 和 C# 来制作跨平台应用程序。

最终目标是列出愿意联系打高尔夫球的用户。我希望用户能够在一个页面上输入他们的姓名和电子邮件地址,使用 Azure SQL 数据库将条目保存在一个表中,然后在应用程序的另一个页面上的列表中显示它们。

我自己进行了一些相当广泛的研究,但现在我认为是时候进行一些现实生活中的互动来帮助指导我了。所以这是我的实际问题......

看起来“入门”教程here 与我想要做的很接近。但似乎示例中的应用程序使用的数据库存储在本地,而我想创建一个所有用户都可以访问的表。遵循这个演练对我来说是正确的吗?如果没有,我应该怎么做?

请记住,我致力于使用 Azure 移动服务,因此请不要回答暗示我使用不同平台的问题。

谢谢大家!

【问题讨论】:

  • 我知道您声明您致力于 Azure 移动服务。但请注意,这是用于应用程序移动通信的旧 azure 容器。 Azure 已在新的 portal.azure.com 上升级到新的容器系统。新的称为 Azure App Service - Mobile(应用服务的特定版本)。我建议您使用它,因为这将是向前发展的平台/框架。
  • 没错,对于新项目,我们建议您使用 Azure 移动应用。

标签: azure azure-mobile-services


【解决方案1】:

如果您直接从客户端应用程序使用 Azure 存储,请确保您使用共享密钥身份验证。否则,任何人都可以简单地从应用程序中窃取凭据并获得对您的 blob 帐户的完全访问权限。要了解更多信息,请参阅 Shared Access Signatures 和 SO 问题 Azure blob storage and security best practices

来自official documentation

暴露您的任何一个帐户密钥都会使您的帐户面临恶意或疏忽使用的可能性。共享访问签名提供了一种安全的替代方案,允许其他客户端根据您授予的权限读取、写入和删除您的存储帐户中的数据,而无需帐户密钥。

对于新项目,您应该使用Azure Mobile Apps instead of Azure Mobile Services。新服务提供了许多功能,并且是所有未来投资的地方。

例如,现在支持 Blob 存储同步以及常规离线数据同步,并且它使用 SAS 令牌进行安全连接。这是 Xamarin.Forms 的教程:Connect to Azure Storage in your Xamarin.Forms app。它包含一个示例,您可以一键部署到您自己的 Azure 订阅。

对于您的具体问题,您可以修改 Todo 示例(或查看功能更全面的 Field Engineer 示例)并为玩家和游戏添加表格。

【讨论】:

  • 所以我在过去的两周里按照this 教程配置了一个 Xamarin.Android 应用程序。直到我使用 Visual Studio 而不是 Xamarin Studio 对其进行调试时,我才收到一条错误消息,告诉我 Windows Azure 存储帐户 nuget 包依赖于一个不存在于Mono for Android 配置文件。回到您的帖子,我注意到您实际上建议使用 Xamarin.Forms!您能否建议任何解决方法以便我可以使用它?
  • 您可能存在项目配置错误,因为 Mono for Android 具有与 Xamarin.Forms 相同的基本 .NET 程序集。您能否尝试将 Storage nuget 升级到 7.0.1-preview 以查看问题是否仍然存在?如果是这样,我建议在此处或在 Xamarin 论坛上发布一个新标记的 Xamarin。 Storage SDK 有专门在 Mono for Android 上运行的测试。
  • 我从头开始创建项目并尝试安装 7.0.1-preview 块,但现在我收到一条错误消息,告诉我无法安装它的 System.Diagnostics.Tools 包取决于。我将在我的新问题帖子中使用您的建议,以便解决这个问题...
  • @msloan11 我的错误:您应该只将 7.0.1-preview 安装到 Windows 项目中。对于 iOS 和 Android,请将其保留为 6.1.1-preview。
【解决方案2】:

Azure 平台上有许多产品可以让您存储您的高尔夫球手。但是,您链接到的页面是用于 BLOB 存储的,我不建议使用它。

有 Azure 表存储。这是 Azure 平台上的 NoSQL 存储。它具有高度可扩展性和无模式,非常灵活。您可以利用 Azure SDK 对其进行读取和写入 - 如果您愿意,也可以使用 REST。在此处查看教程:https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/

然后是 Azure SQL,它是 Azure 平台上提供的 SQL 服务器。这是一个传统的关系数据库存储,但更具可扩展性(因为它位于 Azure 平台上)。你也可以使用这个解决方案,但它确实需要一些额外的工作,因为你可能想要使用像实体框架这样的 ORM。

所以总的来说 - 我会选择 Azure 表存储。它真的很容易上手,并且会做你想做的事。

【讨论】:

  • 我觉得这正是我需要的!
  • 这行得通,但你会建议移动客户端如何连接到数据库?没有从 Azure 存储获取 SAS 令牌的服务,将主密钥与应用程序一起分发存在安全风险。表存储是一个很好的解决方案,但您应该添加某种 Web API 以实际将令牌提供给经过身份验证的客户端。一种解决方案是在移动应用/移动服务中使用表存储的内置功能,或使用自定义 API。
  • 取决于您的安全要求。我建议您为此打开一个新问题,描述您的安全要求,然后我们将查看选项。
  • 除非整个存储帐户的内容应该可供所有用户编辑(包括架构以及任何 Blob 和队列),否则您的移动客户端绝对需要一个 SAS 令牌。请参阅 Azure 文档中的 Shared Access Signatures。 Azure 存储团队的官方建议是将您的主密钥与您的应用程序一起分发是一种反模式。这就像将您的管理员密码提供给您的数据库。
  • 安全要求其实很宽松!不存储任何接近关键的东西。我只是制作一个公开列表,任何下载该应用程序的人都可以注册,显示他们选择在全名字段和电子邮件字段中输入的任何内容。 @lindydonna-msft,我认为我的应用程序没有足够的用户来保证对您提到的风险的担忧,但是您能否澄清我需要做什么才能使用该应用程序生成 SAS 令牌?我找到了一种使用 Azure Powershell 生成的方法,但这是否足以涵盖我想要做的事情?
猜你喜欢
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多