I am planning to build an enterprise grade mobile application that requires full offline capability. It would be used worldwide. For the backend application, I intend to realise it as microservices using Azure Service fabric. The backend application would be leveraged by both a web admin UI as well as by the above mobile app. For the mobile app, I intend to use Azure App service's the new mobile app service. This would provide me the capability to do offline data sync and also carry out the functions when network reachability is there.
MobileApp --> Azure MobileApp service --> Azure API app service --> Azure Service Fabric (cluster of nodes hosting microservices).
Following are some questions & observations on which I require advice:
The reason I am putting in Azure API service in the middle is because I intend to do API management (I understand Azure has a separate API management offering - any pointers on how I can do true API management in the above architecture would be very helpful. Would API management replace API app service ? )
I intend to use Swagger generated code out of API app service, so that both the web admin UI layer and the Azure Mobile App service layer can leverage. Your thoughts ?
Here I am using 2 paradigms - App Service (for mobile & API) and App Service fabric. I believe this is the only option given the fact that I have a mobile app requiring heavy duty offline feature.
Data Sync from mobile: How do you think I can sync data between Mobile App service and the microservice specific data stores ? Do I need to go via the APIs or I can easily do a data sync with the data stores of individual microservices. Your thoughts please ?
I would put the Azure API management in front of the mobile apps, on the microsoft integration roadmap, there was an announcement that API management will be built into App Services (and thus mobile services) by the end of 2016:
https://www.microsoft.com/en-us/download/details.aspx?id=50408
The first preview is in "Power Apps" https://azure.microsoft.com/nl-nl/documentation/articles/powerapps-configure-apis/
where API management policies are incorporated directly
For more info on creating an API management layer on top of mobile services:
http://giventocode.com/azure-api-management-and-azure-mobile-services
Related
What is the best way to build Teams messaging extension using the bot framework without ngrock. My organization is not even allowing me to use it for testing or development. My web search pointed me to Azure Service Bus, Azure Relay and a dedicated NGINX Linux server with public IP. Just wanted to know what would be the ideal way and the costs associated it if someone has already developed an app?
A bot is essentially a web API and so it can be hosted on any web service.
I am abit confused when one of the following approaches should be prefered over each other:
Option #1 Host a Bot on Azure Bot Service
Option #2 Host a bot as a plain PaaS Web API
Currently I am hosting my bot on a plain Azure PaaS App Services. It is working very well.
However, I expect there must be some advantages to hosting a bot on Azure Bot Service.
When I go through the documentations the following example shows how to Create an Azure Bot Service in Azure Portal, download its code, change it then deploy it again to the same Azure Bot Service:
https://learn.microsoft.com/en-us/azure/bot-service/bot-service-build-download-source-code?view=azure-bot-service-4.0
In contrast, the following example shows how to build a bot in Visual Studio and publish it to an Azure Web App:
https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-howto-deploy-azure?view=azure-bot-service-4.0
What are the advantages of hosting a bot on Azure Bot Service?
Is there any resource or article that contrasts the two options?
They are essentially the same thing under the hood. A bot is basically just an API endpoint so there are many ways to host you bot. If you create A bot service you get options to add other services from the creation page. Whereas if you just create a web app or app service you will have to manually add these things.
Creating a Web App Bot will allow you to all in one step create:
Bot Channels Registration
Choose a template to start with
Configure a Luis app
Add Azure Storage
Add application insights
how can you Intergrate Asp.net web api with azure mobile service so as to do offline-online syncing xamarin.android app?
any code or samples
As I known, Mobile Apps in Azure App Service supports Offline Sync while Azure Mobile Services (with the URL like: service.azure-mobile.net) do not support this built-in feature. If you use Azure Mobile Service, I assumed that you need to Migrate your existing Azure Mobile Service to Azure App Service, in order to use offline sync feature.
For developing a Xamarin.Android App with offline sync, you could follow this official tutorial for creating an Azure Mobile App backend and download the Xamarin.Android demo project, then follow this tutorial to enable offline sync for your mobile app. Additionally, you could refer to adrian hall's book about Data Access and Offline Sync for a better understanding of offline sync.
We're getting ready to rewrite an old native windows mobile application that accesses data through a VPN. We'd like the new version (.NET Windows 10 mobile application) to access data through web services that are protected by Okta. What is the best way to do this?
Thanks!
The best way to do this depends on how the web services are protected.
The main thing to keep in mind is that you don't want to store any secrets on the mobile application.
In an ideal world, these web services would be secured with something like OpenID Connect (OIDC), allowing you to authenticate against Okta (the "IDP") to get access to the web services (the "Relying Parties").
However, the real world is messy, where some web services are protected via SAML, OIDC, OAuth, custom headers, etc.
Without knowing more about your setup, my recommendation would be to build against OIDC, using a proxy server (or "API Gateway") as needed to secure your web services using OIDC.
One of my co-workers at Okta has written a sample iOS application in Xamarin that implements OIDC, I suggest taking a look at the ViewController.cs file in that repository.
I want to use a web cache for my api which is hosted in an Azure website.
How can I do that?
you could implement this yourself within the api. you have not indicated how your api is developed, for asp.net web api, you could use, for example cachecow
If you're looking to use an Azure service to do so outside your API - Azure API Management has built-in response caching capability