1

We are looking to develop an application wherein the requirement is such that we need some help on designing the architecture. I am putting down below the requirements of the application.

Brief Description

1) The application shall work on web + Android + Offline desktop version (Offline version meaning entirely offline environment wherein full functionality shall work without internet)

  • if possible offline android as well (which as per my research is difficult to do in same backend so caching can be used for temporary offline usage)

2) While designing the architecture we want to minimise the rework such that we shall be able to use the same Database, Logic code and Frontend as much as possible

3) Everytime application is updated then web and android will reflect it immediately due to API integration. And for offline application, we want to update the logic and database everytime it connects to internet.

Challenges I am facing

1) Database choice : Since it has to be an offline solution as well, I understand that we will have to use either SQLite or SQL compact edition so that we can use the free version and installation file is also not very big

2) Logic : Due to offline requirement, we may have to put entire logic in Asp.net / (any other suggestions) since stored procedures are not supported in above mentioned databases Some links I found regarding this :

https://www.codeproject.com/Questions/346702/How-to-make-work-an-Online-Web-application-Offline

3) Application framework : Which framework MVC / MVVM etc would be suitable to minimise the work for web based and offline app.

4) Frontend : I understand that we will have to make different screens for web and android. However want to know whether we can use HTML 5 (cache feature) or Angular JS which can be used in offline environment as well or do we have to make offline screens seperately?

Build an ASP.Net web app with offline functionality https://www.html5rocks.com/en/tutorials/appcache/beginner/

5) Can apache cordova be used in someway for better architecture (I dont know much about it hence)

6) I am sure I might be missing something. If you can offer some suggestion on best way to go about developing this application then will really appreciate your help

Community
  • 1
  • 1

1 Answers1

0

Your requirements are not very clear to me.

But if i have backend which is catering to multiple clients with different devices.

I will take the following strategy.

I will expose the backend functionality through rest/HTTP and let the clients consume them.

If i want to make the same UI and functionality and want to do it quickly for different mobile platforms. i will go for a Cordova,Phonegap or a Xamarin app. But keep it in mind that they lack some native functionality.

For web i will go with a UI framework which is device screen size responsive like like openUI5 ( i am sure there are dozen others ), such that an user can open the application in a web browser in any device and it gets rendered easily.

For Desktop based apps again i have to develop a separate UI. If you again have multiple flavors in Desktop application like Windows , Mac etc. You can take multiple strategies like Have a common Java layer + Minimal native layers for each OS or having full blown native layers or have the logic exposed as API in a low level language as C++ and then let high level languages consume them.

For all the apps you can use DBs like SQLite . Have the common DB and scripts ready which easily replicate the table structure for you.

Determination of a technology for the backend can be upto you (depending upon your requirements) and should not matter to clients if you expose your functionality in a restful manner.

Hope this helps.

Best Regards,

Saurav

saurav
  • 5,388
  • 10
  • 56
  • 101