I’ve been away from hands on development work for the past couple of years and focusing more on delivery management. I’m looking to get a couple of new projects ASP.NET MVC apps off the group and I’m getting back into doing some hands on work.
My question is around architectural approaches and how they might have changed since I’ve been away. In the past I would have taken a n-tier approach to the kind of systems I’m looking at so typically that would be made up with:
Web front end
|
Web controllers
|
Tasks
|
Domain model
|
Data access layer
The controllers would have been a very thin layer pushing data into the tasks layer which would push things into the data access layer. Everything would have been hooked together using dependency injection and would be as loosely coupled as possible.
Each layer would typically be a separate class library apart from the controllers and the web front end which would both be inside an MVC project.
Is that kind of approach still a standard one or have things shifted in the last couple of years? Any comments/recommendations etc. would be appreciated.
The biggest change is that the web front end (the part that runs in the browser) has gotten more sophisticated. There are many frameworks that provide enriched functionality at the client; Angular is just one of them. You can look here to find out more about what frameworks are available and what functionality they provide.
There is the notion of a Single Page Application now, which runs entirely in the browser and is fed data by REST services.
Data stores can now be NoSQL. Entity Framework even supports them. Asynchronous programming has become a popular tool; have a look at NodeJS.