Happy Holidays All!
I'm looking for some advice on best practices for modern application architecture.
Background:
We have a custom ERP software that was written (and still being used) in about twenty Access 2003 databases. Each module covers some functionality of the business with minor linking in between.
The good news is we're finally ready to start building new applications, and, going to be replacing these legacy modules as time allows. In addition the database schema is somewhat of a mess that I also intend on cleaning up eventually.
Current setup:
These VMs are running on VMware with HA configured (2 physical hosts, properly provisioned)
SQL server VM
a RDP / File Server / Application server VM
2 AD servers (one per host, non-HA)
My partner has recommended going with a 3 tier architecture to allow for flexibility and uniformity, with specifically a WCF middle-tier to allow for binary communication in-house and an http endpoint for any extranet needs. That would go on the application server.
Desktop apps would then be deployed to each user computer as necessary. (We have a current update batch file which users are used to running to pull down new code bases, all applications run locally). The applications would then pull from the WCF middle tier and access the data that way.
Is 3 tier still the best approach? Also in terms of the desktop apps would you recommend UWP or Windows Forms? Is EF still the preferred ORM?
Users have Windows 10 desktops. We don't have any real need for the extranet yet but it's on the list wish for the executive board (EG: They want an app that our reps can use on their mobile devices).
Any thoughts or advice on the high level layouts would be greatly appreciated. Looking for lessons learned and what kind of traps I should be looking out for.
Thanks in advanced.
I still prefer 3-tier that separates the UI from the database with the middle tier which can be simple web services.