ASP.NET has a new version coming out soon. ASP.NET vNext will have a new project file management system (long overdue) and a lot of integration points with modern front-end web development tooling, like Grunt and Bower.
I'm a web developer, and all of the back-end systems I work with are Microsoft based (ASP.NET MVC and Web API, SQL Server, Azure, etc.). I must be super excited about this new stuff coming soon, right?
Nah, not really.
Just another back end?
If you are a front-end web developer, you need your AJAX request to hit a back-end endpoint and give you a response. That kind of framing of the back-end, that it can be encapsulated or black-boxed, also means its implementation could be changed and you wouldn't really care. Why should it matter if the back end is written with node.js, Ruby on Rails, Java, Azure Mobile Services, or ASP.NET? From the front-end web developer perspective, I just want a response. Obviously, it needs to be fast, scalable, robust, secure, and that kind of thing, but all major server-side frameworks have that figured out.
It seems to me that back-end tooling is becoming a commodity. Here's what I mean. Quick - which cloud provider is the best one? I don't know. Aren't they all about the same? Maybe they have different SLAs, or broader or narrower service offerings, but just to get a web app running with a database, they are all about the same. If one was $5/month cheaper, wouldn't you switch to them? Unless the support or extra services or the hassle of changing cloud providers were worth an extra $5/month to you, you'd switch.
I think of ASP.NET and SQL Server the same way. It's back-end tooling. It involves maybe 10-25% of my coding week. I'm not dissatisfied with the tools. I just don't use them that much. I guess they could get a little better, but that won't make me need to use them more or care more about how they are implemented.
Plus, the user gets to see most of the page, just maybe without all the data yet or with empty drop downs while the data is still on its way to the page. I think that gives the user a sense that we're getting you the parts of the page as soon as we can, instead of building everything up on the server as one big ball of templated data while you look at a white, empty browser window.
Where does the Microsoft ecosystem add value in modern web development?
In spite of its limitations for front-end development, Visual Studio is still a very good IDE. Different colors for keywords and navigation within and across files is very good. But most of the value I get from continuing to use Visual Studio is a result of the Web Essentials extension. It's nice to run JSHint with every save and to get pointers in the IDE about CSS rules, potential browser issues, and unclosed HTML tags. If I switched to Notepad, I'd be giving up some things that really do make my coding day a little brighter.
Working with the current Visual Studio project system has been more than just an annoyance; it's been a source of real pain. Looks like the new project/file system may help in vNext.
Local Web Server
Simple and unobtrusive, IIS Express is a great place to test run your web app, and the integration with Visual Studio is limited but sufficient.
The alternative would be HTML files that you double click to open and debug in the browser. It would work, but you'd have to keep you file system and text editor open all the time, and you wouldn't have server-side debugging of your API layer.
Security is probably the main thing that has kept me from dumping ASP.NET and using HTML files instead. I've never worked on a web app where security wasn't important. You need a way to know who's knocking on the server's door, and when that request is bouncing around on the back-end servers, you need to know what group/role that user is in so you can turn features on and off.
I still use MVC and Web API for their security, and I'm glad their namespaces are finally going to be merged in vNext. That means I won't have any more code that filters MVC requests one way and Web API requests another way.
Web API is totally relevant for modern web development. All web apps need a way of interacting with a back end, and Web API sets up as a simple, thin transport layer so you can do whatever back-end stuff you need to do on the server. Content negotiation is nice if you have a public API, but I've only written internal APIs that send/receive JSON.
I guess I am looking forward to some of the improvements in ASP.NET vNext.
If I was building a new web app today, would I use ASP.NET as the back end? Probably, but it would be the same way I've used it the last 4-5 years: minimal MVC page serving, an API service layer, and a security layer.
The most interesting, highest customer value web development stuff is happening on the front end, and I don't see that changing anytime soon.