Top 10 Advantages of .NET Core
This article was written by Irina, a software architect at Fortech, experienced in .NET development outsourcing. It presents the top benefits of choosing .NET Core for application development, by analyzing both the business and technical advantages.
As soon as you decide to invest in a software application, you’ve surely identified a need on the market and you already have a solid business plan prepared. You might be an expert in your domain, but when it comes to implementing that idea, the right technologies and tools for it are not always clear from the beginning.
The solution that best fits your needs in terms of technology used, hosting options, 3rd party integrations or platform, is often suggested by the development team, consultants or software architects – that know all the technicalities, as well as the pros and cons for each option available at the moment.
Discover in this article the top 10 advantages of choosing to develop your application with .NET Core:
- .NET Core is Cross-Platform
- .NET Core is Open Source
- Mature Framework and Widely Used Programming Languages
- The .NET Core Supports a Wide Range of Application Types
- Increased Security with .NET Core
- .NET Core Enables Top App Performance
- .NET Core Enables Flexibility
- .NET Core is Cost Effective
- .NET Core has a Large Community
- .NET Core was Created by Microsoft
When you start creating an application, you go on the road with a few things already settled.
One of them is the Operating System (OS) that your app targets. The decision is driven by the context, the market, the end users or, in some cases, even by your development team.
Because the market and your budget are not linear, constantly evolving and changing, you need to be able to adapt your business fast. If at a given time you need to be able to support more users at the same time, you might find yourself in a position where you should add more resources to servers – which means a bigger investment in infrastructure from your side. You might be able to avoid this by changing the hosting from Windows to Linux.
Before .Net Core, in April 2014, if you started a project in the .NET framework, you already knew that you’ll be stuck with Windows, and all the licensing and infrastructure costs involved. Deciding to suddenly switch to another platform, would be possible only by starting the app from scratch. This would require a new platform, a new development team, with different skills and of course, will mean a new business investment. In many cases, you won’t able to reuse the code already written, and porting the app will come with its own challenges.
.NET is a Portable and Runnable Framework
The .Net framework has been re-invented, and what was once limited to Windows is now officially portable and runnable on just about any platform you need. You have a wide variety of hosting models, you can target macOS, Linux, Windows or even run it with Docker. You can switch very easily to another platform if your business context requires it. For example, if we are talking about servers to host web apps, you can host them on Linux with Nginx or Apache, as windows services, in IIS (the Microsoft proprietary web server), in process, or out-of-process, with IIS as a reverse proxy, with Kestrel, HTTP.sys, or with Docker.
With .Net Core 2.2, you’ll even be able to create your own server programmatically, with all the power and responsibility that comes with it in terms of security and reliability. It will have only those features you need, giving you the most flexibility you can get on the market by removing any provider facing dependencies (even if it’s only a hosting web server).
The fact that .Net Core is a cross-platform framework allowed VQ Communications to have the same code base on two platforms, thus addressing a potential scalability issue. They say this gives the developers more freedom on how they develop the product because it simply runs on the platform they need it to run on.
Having the same codebase for multiple operating systems reduces costs by eliminating the hassle of having to maintain, develop, track, fix and test the same bugs in at least two places.
The Benefits of Open Source Frameworks
Open-source projects don’t suffer from bureaucracy or command-and-control development philosophies, benefiting from fast release cycles, abundant support, and modern tooling. This is due to the distribution of users and the lock-free. This world is as Agile as it gets, incorporating many best practices, real-world uses cases and scenarios, and vivid and modern development workflows.
Most of the mainstream issues were already solved, and the developers can stop reinventing the wheel and focus on business cases, shifting to more high-value work and a high customer focus and business domain expertise.
Developing apps by using an open source platform may add longevity as a feature because you’re not locked into a certain vendor, and you can always find someone from the contributors’ pool to keep you running. Moreover, if the market changes or evolves, or the business requirements change drastically, you might find yourself in a position where the only option to keep you afloat is to start investing in another solution provider, infrastructure, or consultancy hours.
By choosing an open-source framework, you can increase your project’s chances of success by directing the budget to other services like hosting, change management, training or even marketing. Overall, it can decrease the total cost of ownership for the project.
Additionally, by choosing to develop your application with an open source platform, your business will be able to evolve as the market evolves, without needing bigger and bigger investments in those areas that don’t bring an immediate return.
.NET as an Open Source Framework
.Net is the highest velocity application framework in open source as stated by Cloud Native Computing Foundation. Due to the fact that many developers use it, the framework is highly optimized as they find and fix bugs, add features and contribute with ideas and implementations.
In 2017, the dotnet project had over 28 000 commits from the community, being in the top 30 highest velocity open source projects.
The dotnet project is part of the .Net Foundation, a non-profit organization that fosters and supports 25.000 contributors, 1700 companies and has more than 55 active projects.
This foundation gathers passionate developers and encourages communities around the world to meet and share knowledge, offering project guidance and mentorship, facilitating open source in the Microsoft ecosystem.
By being so close to the developer’s world, listening to their voices, taking into consideration their proposals, and basically supporting them. Overall open-source means people collaborating for a common goal.
Major players like Samsung, JetBrains and RedHat joined Microsoft in this initiative deciding to guide and shape the future of the .NET framework.
For example, Samsung announced the collaboration with Microsoft on open source projects for Tizen. With this, they reached out to a new pool of capable developers with strong technical knowledge and expertise, offering them the opportunity to work on cool and futuristic applications for Smart TVs, smartphones, IoT or wearables.
Since joining the foundation, Samsung is continuously contributing to ARM support for .NET Core, Xamarin.Forms and Visual Studio Tools for Tizen.
The .Net framework has been around for 18 years. This means that millions of apps, in different domains were developed with it. It proved its flaws and strengths.
According to similartech.com, 1.17% of worldwide websites are made with .Net, being outclassed only by PHP due to the large usage of WordPress.
In 2017, StackOverflow states that C# is the 3rd most used programming language of the year meaning that C# has a lot of support and a large community of users.
“Developers can reuse their C# skills to build native Android, iOS and Windows applications that deliver the right information to the right person at the right time.” Alaska Airlines
Coding in a language that is stable and always evolving, is a major plus for a developer. Not only it makes the day to day life easier and more enjoyable, but it increases productivity and sometimes prevents unwanted bugs.
C# is a multi-paradigm language, strongly-typed, modern and last but not least, object-oriented with a huge support for asynchronicity. Its history started in 2002, with the 1.0 version.
No matter what the business domain of an application is, at a certain point it might be valuable to develop a whole suite of other apps revolving around it, that can reach different markets and end users. With the .Net framework, you have the ability to develop apps in a multitude of domains, such as gaming, mobile, IoT, AI – you name it, it can be done with .Net.
A few days ago, Microsoft announced a collaboration with SWIFT, the world leader in secure financial services. This means putting AI and data in the center of Fintech is changing perspectives from the ground up, by creating an ecosystem that enables faster and more efficient and secure operations for banks and corporations.
Recently more and more businesses saw a huge potential in AI and Machine Learning, Big Data. They started to invest in integrating such components in their applications. Healthcare, banking, education, business, marketing and pretty much everything we use in our daily life could have such components, making our life easier.
Security nowadays it’s getting more and more highlight. Having an application exposed over the web is a major thing and protecting it should be a major concern for any serious business. You wouldn’t leave your child alone at night, outside, in another city, wouldn’t you?
A few years back, when we were talking about security in a web application, HTTPS redirection seemed to be the key, while protection against SQL Injection and CSRF were pretty much all the important things worth mentioning, at least for most developers.
Now, with the different and modern architectures, with REST APIs and microservices, looking at security in the way we used to, it’s not enough anymore. We hear about JWT Tokens, Claim-based authorization, Policy-based authorization, Resource-based authorization, payload protection, ephemeral keys, IP safelisting and many more terms that are hard to understand, and even harder to implement.
If all these aren’t scary, what do you do about security-sensitive data that a web app often needs – like connection strings, credentials, keys – but shouldn’t be stored it in code, or source control, even if encrypted?
Fortunately, .Net offers a wide range of easy to use mechanisms for authentication, authorization, data protection, and attack prevention.
For example, DataProtection API and Secret Manager, along with the Azure Key Vault Provider can be used to protect data, generate keys, rotate keys or generate ephemeral keys. Moreover, you can build on top of these APIs, by extending them to cover the business scenarios you need.
In terms of authentication, ASP.NET Core Identity allows you to integrate your app with all major external providers.
Facebook, Google, WS-Federation, Windows or two-factor authentication might be valid requirements in real-life scenarios and without the right framework, it can be very hard to implement. Thus, having everything ready to be extended is a big win.
.Net Core was designed to have a pay-for-what-you-use model, where performance is a key feature. With each released version they add a few percents on performance. For example, TechEmpower benchmark compares different application frameworks and one of the results looks like this.
Data sourced from official tests available at TechEmpower Round 16.
StackOverflow, the leading knowledge website for programmers, serves 5.3M page views/day with just 9 servers.
Raygun, a company from New Zealand, developed a cloud-based error and crash reporting platform that monitors web and mobile applications. The core of their app was written in the .Net framework, but they had APIs that received data from customers written in Node.js on Linux, to support elasticity. Over time they noticed the Node.js framework was becoming slower and heavyweight with each version and decided to scale up (to add more resources to the servers), but they realized the costs to support this will rise significantly.
As a consequence, they decided to port their API’s to .NET Core to reuse the core product know-how and ended up increasing their throughput by 2000% using the same-size servers as before.
“Using the same-size server, we were able to go from 1,000 requests per second per node with Node.js to 20,000 requests per second with .NET Core.” John-Daniel Trask, Chief Executive Officer and Co-Founder, Raygun
Paired with the right database and architecture, this framework is the perfect solution for any kind of business that might face the need to scale eventually.
Flexibility for a business means the ability to evolve, change visions and goals and adapt easily to different external scenarios.
In terms of code and choosing of the right framework, we are talking about databases and infrastructure mainly.
Databases – Being able to switch to another kind of database and reuse the code already written is something impossible to do in some frameworks because the framework comes as a package with the language and preferred tools, the database being a part of it. Changing it can be dictated by the performance needs, licensing costs, or scalability, hosting options or even the business domain.
Infrastructure – a new and modern infrastructure can add throughput, minimize downtimes and sustain a reliable business.
“.NET Core gives us the freedom to take advantage of new infrastructure technologies that run on Linux such as Kubernetes and Docker.” Jeremiah Gowdy, Principal Software Architect, GoDaddy
When choosing the appropriate technology for your application, one of the first things you might want to look at is the IDEs and tools that are either mandatory for that technology or simply make the developers more productive. A lot of them are free, but the for sure, the best ones often come with licensing costs per developer, per year and the total price can sum up to thousands of dollars. Regardless if you are a startup trying to find your way into the market, or a big company already there, that money can be better spent somewhere else, with a higher return, or not spent at all.
A few years ago, Microsoft developed Visual Studio Code, an IDE that can be used for commercial apps. This was so good, small and extensible and updated, that became the preferred IDE even for front-end developers who were using IDEs that need a paid license.
In terms of infrastructure, with .Net Core and the multitude of hosting options, you have the freedom to switch to Linux and to pick a provider of your choosing – that offers you a great SLA or is cheaper. Furthermore, you can choose to host your application in the cloud, by relying on the services of any cloud provider (such as Azure).
In terms of databases or storage, you have unlimited options. You are not forced to use a big, paid solution, so you can easily go to something that is Open-Source – like PostgreSQL.
Even if costs aren’t an issue, not being forced to invest in something that isn’t really necessary gives your business flexibility, and maybe more capacity to invest in the development of your team or even R&D.
Like it or not, when a framework is used by many developers and businesses, it means that it must have something good to attract them. It also proves its stability and a high level of trust from the community, even more, if it’s not something that is super new, mainstream, that everyone wants to try.
Under the .Net Foundation umbrella, passionate people that work in different domains, with different expertise and know-how, contribute and share ideas, shaping thus the way applications come to life.
Having such a big corporation behind a framework doesn’t mean that you will need to pay for everything you use from them, tools or languages or IDEs.
It means that you have a guarantee that all the good ideas that come from the developer’s communities will see the light of the day as soon as possible. They will sometimes be bundled with the coolest paradigms out there, and as a result, you’ll get the most modern, flexible and well-maintained framework you can get for an application.
When you choose the right technology for your business’s application, you shouldn’t pick a framework that is popular because the context made it that way – there was no other competing option out there at that point, or the cost of ownership was smaller because it was open source.
You should analyze and consider every reason that could add value to your business, like flexibility and cost reduction, performance, infrastructure and all the benefits that come from them.
You will want something that is fast and cross-platform, that is stable and mature while having open-source advantages and can easily be integrated with other libraries, databases, and modern tooling.
By choosing .NET Core, you can benefit from all the advantages above and develop a large variety of applications for different domains, while reusing your existing resources and the developers’ technical expertise and passion.
Related .NET Development Articles
REST API in ASP.NET CORE
Visual Studio 2017 and ASP.NET Core MVC
Introduction to .NET Core
DI or no DI in the .NET Framework
Often, .NET software engineers are reluctant to use dependencies in their code. This is caused by the poor understanding of the types of dependencies available and the advantages they bring. Learn in this article how to recognize the good dependencies and write easily adaptable and maintainable code.
Visual Studio Template for Your Microservices Architecture
Maintaining consistency in .NET projects that rely on the microservices architecture might seem difficult without the right tools. By configuring a custom template, Visual Studio enables you and your team to use the same structure across all your projects. Create your own by following this step by step tutorial.