-2

We have an existing cross-platform Mobile Application, that also has an accompanying web application, that uses AWS as a back end (RDS for Database, Four server instances, and a Load Balancer to distribute traffic). APK and IPA files are packaged and sent to the stores, while components are retrieved from our server per request, which enables us to reduce the number of store builds, and make the process easier for getting changes out to clients.

We are at the stage of Development that we need to move to another platform to better facilitate our fast growing client base.

Due to the conditions upon our clients, these things must be considered.

  • must be cross platform (Android / iOS).
  • must be offline based (users need to be able to access without an internet connection)
  • must be able to sync with an existing database when there is a connection
  • requires Authentication
  • Cloud based (? may not be the right term, but meaning the ability for us to store components on a server and have a device check for updates and download a local copy - enabling us to work and distribute fixes faster)
  • Ideally compatible with AWS

We are currently looking at Xamarin to facilitate us for this move, however there is a lot of documentation and plugins out there to do all sorts of different things.

As developers, we all have some .net / c# experience, however none particularly with Xamarin.

We have a particular timeline that we need to adhere to (and need to ramp up in the next couple of weeks), and right now are essentially stuck in Limbo in a research phase, as we can't afford to get some things right. We are unable to move forward until we know Xamarin (or some other framework) is able to do everything that we need it to do.

It's hard to escape from the 'code it all ourselves' mentality - especially as we don't know where to start looking in terms of third party packages for Xamarin, and their documentation itself.

A lot of documentation mentions various systems of Azure - we would not be against moving to Azure over AWS if it _had to be done*, but because of the existing infrastructure with AWS - staying with AWS is obviously the preferred option (users need to access the current system whilst we build the new system)

This stack overflow post is to ask for recommendations, comments, or other observations on anything and everything involved with the process in regards to choosing frameworks, design patterns, methodologies, third party packages, etc.

Obviously we would like to use best practises for everything moving forward for optimum scalability and cleaner, more robust code. It's just hard to know where to start!

Any input will be highly appreciated.

Cheers!

edit: I am aware that this is 'asking for recommendations' which is 'specifically off-topic'. I have read the posting guidelines about open ended discussion, and am quite confident that this case is different. There is an underlying problem here, in that we are seeking advice on combinations of frameworks and plugins that are fully compatible with all of the items in the list (above)

Bejasc
  • 930
  • 1
  • 8
  • 20
  • 2
    `This stack overflow post is to ask for recommendations` Which is specifically off topic: Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it. – John3136 May 04 '17 at 03:53
  • Hi John - thanks for your reply. I am aware that this is asking for recomendations, but there is a specific problem here. We need to find a solution that takes in to account all of the points in the above list. To rephrase the post, bluntly, the question would be 'What framework or combination of packages can we explore, that facilitate these things' - It just happens that an answer to this can be open ended, as yes, we are asking for recommendations and pointers to existing software and plugins – Bejasc May 04 '17 at 03:56

1 Answers1

0

Let's try to breakdown each of your requirement and constraint mentioned in the question.

1. You need a offline first architecture (With Sync mechanism)

Xamarin + Azure would make a good comdo for you, as it would support offline storage out of box (With a simple PullAsync call). Albeit there are AWS SDK available for Xamarin. Here it goes http://docs.aws.amazon.com/mobile/sdkforxamarin/developerguide/setup.html

So the call is yours. There are few other ways to achieve caching offline storage in Xamarin, you can build upon those strategy in your logic. Alternatively there is a very interesting C# library Akavache for caching and offline storage.

2. OAuth 2.0 Authentication

Xamarin has a very good library named Xamarin.Auth. Though I would not say it is very easily extendible at this but there has been some serious work going on from Xamarin on this library.

But I would say it is very easy to use. The apps I have developed so far that includes - Google OAuth, Facebook integration, Microsoft account integration. It worked fine for all of them.

3. Cloud based distribution

There are nice tools available with Microsoft. Which makes the distribution easy. Have a look at https://mobile.azure.com . Also hockeyApp is good for distribution I found.

Where to start: A very good starting point for you would be https://channel9.msdn.com . Just go there search with keyword "Xamarin" and view some videos. May be all these cross platform dynamics will be much easier for you.

Overall I found Xamarin a cool product to work with. Because anything that can be done in native Objective C/Swift or Java can very well be done in Xamarin using C#.

Subhamoy
  • 132
  • 3
  • 1
    Thank you for your answer, this is exactly the kind of answer I was hoping to see. We're already going through much of channel9, it's difficult having to not only start at the basics, but choose plugins or standards that are going to accomodate our needs both now, and in the future. In particular, thanks for sharing your knowledge re offline and cloud based distribution, very helpful. In your experience (where applicable), is it viable to use a combination of Azure and AWS, or should it be moved to primarily use Azure – Bejasc May 04 '17 at 04:33
  • 1
    I would suggest move to primarily to Azure as I found Azure to be very flexible with Xamarin. Also Microsoft is putting lot of energy in Xamarin + Azure integration - offline support and sync is one of them. – Subhamoy May 04 '17 at 04:39
  • 1
    Whoever down voted kindly let me know the reason for down vote. It would help me to improve the answer. – Subhamoy May 04 '17 at 04:40
  • 1
    It was a great answer, as I said above, exactly the kind I was hoping for. I voted up, but I'm going to leave the question marked unanswered for some time, in hope to get some more input – Bejasc May 04 '17 at 04:50