解决方案构想
本文是一种解决方案构想。 如果你希望我们在内容中扩充更多信息,例如潜在用例、备用服务、实现注意事项或定价指南,请通过提供 GitHub 反馈来告知我们。
此移动客户端应用提供与配套 Web 应用共享的社交图像。 应用后端服务使用 Azure 函数执行后台图像处理,并且可以通过通知中心向用户通知进度。 非图像数据将存储在 Azure Cosmos DB 中。 Web 应用通过 Azure 流量管理器访问后端服务数据和图像。
请参阅以下在此解决方案体系结构中提供的服务:
- Visual Studio Team Services
- Visual Studio
- Visual Studio Tools for Xamarin
- Application Insights
- Visual Studio App Center
- 应用服务移动应用
可能的用例
移动客户端应用在脱机模式下工作,这样即使在没有网络连接的情况下,你也可以查看和上传图像。
体系结构
下载此体系结构的 SVG。
数据流
- 使用 Visual Studio 和 Xamarin 创建应用。
- 将 Azure 应用服务移动应用后端服务添加到应用解决方案。
- 通过社交标识提供者实现身份验证。
- 将非图像数据存储在 Azure Cosmos DB 中,并将其缓存在 Azure Cache for Redis 中。
- 将上传的图像存储在 Azure Blob 存储中。
- 将有关新上传图像的消息排队。
- 使用 Azure Functions 将消息移出队列并处理从 Blob 存储中检索到的图像。
- 通过通知中心向用户发送推送通知。
- 通过 Visual Studio App Center 生成和测试应用并发布应用。
- 控制用户流量如何分布到不同数据中心内的服务终结点上。
- 使用 Application Insights 监视应用服务。
组件
- 在 Visual Studio 2017 或 Visual Studio for Mac 中使用 C# 生成 Web 前端、移动应用和后端服务。
- Xamarin:使用 C# 和 Azure SDK 创建用于 iOS 和 Android 的移动应用。
- Visual Studio App Center:App Center 通过从 BitBucket、GitHub 和 Visual Studio Team Services 拉取代码,实现持续集成和部署工作流。
- 应用服务 Web 应用可以托管面向客户的 Web 应用以及由 Web 客户端和移动客户端使用的服务。
- 使用 Azure Functions 进行无服务器后台处理。 例如,一个 Azure 函数可以在将新 Blob 添加到容器时自动调整其大小,而另一个函数则侦听队列上的消息以删除多个背景图像。
- Application Insights:使用 Application Insights 在 Web 应用中检测问题、诊断故障和跟踪使用情况。 在整个开发生命周期内做出明智的决策。
- Azure Cosmos DB 是一个完全托管的 NoSQL 文档数据库服务。 它提供基于无架构数据的查询和事务处理、可预测且可靠的性能以及快速开发。
- Azure 队列存储用于应用服务后端与 Azure Functions 之间的可持久消息传送。
- Blob 存储:Azure 存储承载图像文件,以便以更低的成本利用更好的可伸缩性。 Web 应用与 Azure 函数之间的通信通常是使用 Blob 触发器和 Azure 队列存储执行的。
- Azure 通知中心用于可缩放的跨平台推送通知。
- Azure 流量管理器控制不同数据中心内服务终结点的用户流量分布,以提供具有高响应能力和高可用性的应用程序。