This article is a solution idea. If you'd like us to expand the content with more information, such as potential use cases, alternative services, implementation considerations, or pricing guidance, let us know by providing GitHub feedback.
This mobile client app offers social image sharing with a companion web app. The app back-end service does background image processing using an Azure function, and it can notify users of progress via a notification hub. Non-image data is stored in Azure Cosmos DB. The web app accesses the back end service data and images via Azure Traffic Manager.
See the following services, which are featured in this solution architecture:
- Visual Studio Team Services
- Visual Studio
- Visual Studio Tools for Xamarin
- Application Insights
- Visual Studio App Center
- App Service Mobile Apps
Potential use cases
The mobile client app works in offline mode, which allows you to view and upload images, even when you don't have a network connection.
Download an SVG of this architecture.
- Create the app using Visual Studio and Xamarin.
- Add the Azure App Service Mobile Apps back end service to the app solution.
- Implement authentication through social identity providers.
- Store non-image data in Azure Cosmos DB and cache it in Azure Cache for Redis.
- Store uploaded images in Azure Blob Storage.
- Queue messages about newly uploaded images.
- Use Azure Functions to dequeue messages and process images retrieved from blob storage.
- Send push notifications to users through a notification hub.
- Build and test the app through Visual Studio App Center and publish it.
- Control the distribution of user traffic to service endpoints in different datacenters.
- Use Application Insights to monitor the app service.
- Build the web front end, mobile apps, and back end services with C# in Visual Studio 2017 or Visual Studio for Mac.
- Xamarin: Create mobile apps for iOS and Android using C# and Azure SDKs.
- Visual Studio App Center: App Center enables a continuous integration and deployment workflow by pulling code from BitBucket, GitHub, and Visual Studio Team Services.
- An App Service web app can host a customer-facing web app and a service that is used by both the web and mobile client.
- Use Azure Functions for serverless background processing. For example, one Azure function can automatically resize new blobs when they're added to a container, while another function listens for messages on a queue in order to delete multiple background images.
- Application Insights: Detect issues, diagnose crashes, and track usage in your web app with Application Insights. Make informed decisions throughout the development lifecycle.
- Azure Cosmos DB is a fully managed NoSQL document database service. It offers querying and transaction-processing over schema-free data, predictable and reliable performance, and rapid development.
- Azure Queue storage is used for durable messaging between the App Service backend and Azure Functions.
- Blob storage: Azure Storage hosts image files to take advantage of better scalability with lower cost. Communication between the web app and the Azure function is often performed using blob triggers and Azure Queue storage.
- Azure Notification Hubs are used for scalable, cross-platform push notifications.
- Azure Traffic Manager controls the distribution of user traffic for service endpoints in different datacenters in order to deliver a highly responsive and available application.
- Visual Studio Documentation
- Xamarin Documentation
- Visual Studio App Center Documentation
- Azure App Service Overview
- Azure Functions Documentation
- Application Insights Documentation
- Azure Cosmos DB Documentation
- Queue Storage Documentation
- Blob Storage Documentation
- Notification Hubs Documentation
- Traffic Manager Documentation