After posting the previous article, discussing client side app trends from a Microsoft developer perspective, I’ve been asked to write something about server side too.
But I feel that for the server side following the trends is a lot less critical, simply because most of the time the developers are the ones who choose the backend platforms and technologies and not the end users. (You can argue that on the client side you are the one who selects the target platforms for your apps too, but wait: you do that by checking the numbers not by checking your preferences: how many possible customers use each possible platform, what do they desire, who pays for premium services and on which types of devices, etc.)
So if you’re a Microsoft-oriented developer you can stick with SQL Server for data storing purposes and ASP .NET WebAPI (with Entity Framework for object-relational mapping) to serve JSON data needed in your client side apps, be them running on Android, iOS, Windows desktop or in a Web browser, without assuming any trend-related risks.
But of course, one can see that many developers look to (and many job offerings are now for) node.js and associated technologies like the MongoDB. Microsoft itself offers node.js development tools in Visual Studio, and a Mongo-based DocumentDB service in Azure!
The latter – namely the NoSQL object oriented databases – have a great technical reason for existence: the developers don’t need an ORM anymore if they embrace the new storage; of course, queries that require traversing many implicitly clustered documents to just read and aggregate some field values would have less performance than if they were run in a relational data context, but many times this is bearable. Especially with cache tools like Redis which can actually hold anything and everything in memory for really fast access, and in conjunction with RAM being very cheap now (you can get it directly in the cloud and increase the paid amount only when you actually need it.)
For node.js, however, my feeling is that trends are somehow not in sync with client side development trends, and it’s even ironical if you think about it more than a minute:
- node.js on the server side eventually allowed developers to use the same programming language on both server and client sides (reaching a unified technology stack), but this was only temporary since client side apps for iOS and Android aren’t usually done with WebViews (and they won’t ever be done like that).
In conclusion, in my opinion for the server side you are more free to choose whatever technology you wish to learn and use, but personally I’d stick with .NET and WebAPI for the runtime, and either SQL Server or a new NoSQL database for data storage. (MongoDB does have a .NET API which you can use to implement your business logic in C#, for example, don’t worry.)