When it comes to custom application development, there are many decisions to make: project timeline, budget, security, integrations, hosting among many others; however, the single most important decision that will most likely influence the rest is the technology stack and the programming language that will power the application and the underlying framework.
While every project is different and will have its own unique business objectives, use cases, and functional requirements, most custom applications are build using on of the big three programming languages (and their underlying ecosystems):
- PHP (open-sourced, used by Drupal, Wikipedia, even Facebook)
- Java (owned by Oracle, powers Netflix and Android’s 2.5 billion devices)
- And .NET (pronounced dot net) – an enterprise-level, cross-platform, and now open-sourced development framework by Microsoft.
At Primacy, we have been using .NET for close to two decades. Initially released in 2003, the framework is well suited for web application development and has seen many changes throughout the years. We’ve used .NET to build many different kinds of solutions, including mobile, desktop, and VR, but mostly web-based: e-commerce, content management, as well as custom applications and integration services.
We find ourselves using the .NET framework so often because .NET is probably one of the easiest frameworks to learn and manage (mostly thanks to its flagship programming language – C# and a very powerful database engine – SQL Server) as well as a very rich and diverse ecosystem of tools, libraries, and products making it a powerful and flexible ecosystem.
However, the framework had one big disadvantage – it wasn’t cross-platform, which means.NET-built applications could not work on non-Microsoft operating systems. Since .NET is a Microsoft technology, it used to run only on Microsoft Windows OS – which means a website developed in .NET could not run on Linux or Mac OS systems. This may not have been a huge deal 10 years ago before the advent of cloud computing when most enterprises had their data centers and hosted their applications on Windows servers – which natively support .NET, but it is a big deal now.
According to Gartner, cloud hosting is becoming mainstream at most enterprises, and many companies considering cloud-only solutions to cloud-first, meaning their digital products will only run in the cloud.
Therefore, if you built something in .NET, it would be prudent to consider how well the application will run in the cloud and which cloud it should leverage for hosting. Ideally, the application should run in any cloud configuration and/or architecture (Windows or Linux) regardless of the cloud provider (Azure, AWS, Google Cloud).
What does this mean when it comes to .NET? This means .NET needs to adopt to be server, operating system, and cloud-provider independent – just like PHP and Java, which from their initial release, were considered technology agnostic with solutions running on Windows, Linux, Mac OS without the need to make alterations to the overall design and architecture of the product.
This is why Microsoft released .NET Core  (The name ‘Core’ was dropped sometime last year from the product description and the framework is simply referred to as .NET.) The .NET (Core) release marked a significant milestone in the history of .NET– the framework is now cross-platform (supports Windows, Linux, Mac OS), open-sourced (anyone can contribute to it – just like PHP) and still fully backed by Microsoft.
The .NET framework also made a very important architectural change – the product designers put a lot of emphasis on the API-first development methodology and micro service-oriented approach, which, for example, means the API initially built for the web-based product can later be fully leveraged by other platforms – such as desktop software, VR or mobile app – thus shortening the development and release cycle for each respective medium.
The .NET runtime also supports asynchronous programming, so applications can be implemented to be more performant and scalable. The asynchronous framework allows developers to write programs that don’t block on each statement or instruction, meaning the server can move on to other operations before waiting for previous tasks to be completed.
.NET can also simplify application deployment and DevOps workflows by allowing developers to deploy custom solutions to cloud hosting containers – an infrastructure layer that provides a clean way to package and run the software in an isolated environment which can improve testing, scalability, and security. 
While .NET had its limitations in 2003, Microsoft has supported the framework and in recent releases made accommodations for application deployment, platform portability, cloud computing, speed of execution, and the rich open-source development ecosystem.
It’s easier than ever to use .NET to power customer solutions. Primacy has developed our own .NET framework to power our own builds for clients. This way, we spend less time setting up new business applications or framework-level coding and can get to building business applications even faster.