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
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.

closed as too broad by user40980, GlenH7, user22815, durron597, JDT Oct 23 '15 at 18:10

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.


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.

Not the answer you're looking for? Browse other questions tagged or ask your own question.