DEV Community

James Hickey
James Hickey

Posted on • Edited on • Originally published at blog.jamesmichaelhickey.com

What Is .NET Core? (What Makes It So Special?)

Note: See canonical post at my blog

With all the buzz around .NET Core I figured that I should tackle some of the fundamental issues that make .NET Core a gamechanger.

.NET Core really is the next generation of .NET development and I believe that it's time for .NET developers everywhere to migrate!

What Is .NET Core

For those new to .NET Core, I'd like to quickly explain what .NET Core is.

  • Imagine being able to run C# apps (natively) in Linux.

  • Imagine being able to use "npm like" tools that scaffold new projects for you.

  • What if you didn't need Visual Studio anymore? What if you could build entire apps using VS Code? 🀯

.NET Core is basically the .NET languages (C#, F#, etc.) re-written onto a completely new runtime/sdk.

This runtime is not Windows specific. That means it runs on Linux, Mac and Windows.

It offers developers modern tooling that can scaffold projects, build, run, test and deploy using incredibly easy-to-use CLI tools.

.NET Core isn't simply a huge framework (like .NET Framework) that you built on top of. It's included as NuGet packages that you can use to carefully craft only the little tiny pieces that you need - if you do need that level of flexibility.

Since .NET apps have much less of a footprint, they are perfect for scenarios where you need to build small, high-performing, isolated applications - Micro-services.

Who Is Using .NET Core Anyways?

Aren't all the massive/large scale apps using Nodejs though? Nodejs is typically touted as the highest performing and most scalable platform for building modern web apps. Is that true?

I want to go through some of the companies and products that are currently using .NET Core in production (taken from these case studies on the official .NET site). We'll look at why they decided to use .NET Core and what benefits they found were critical to their businesses.

RayGun: High Performance

Quoting the official site:

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.

That's pretty amazing! That's an increase of 2000% in terms of requests per second. Imagine how much money you could save by moving to a smaller hosting environment because you don't need so much "juice"?

Siemens Healthineers: Linux Enabled

It also gives us strong benefits with regard to operation costs in the cloud, because we can use it to run some workloads on Linux machines.

Not only does .NET Core allow you to run-more-code-on-less-machine, but you can also run an entire .NET Core app within a Linux operating system. Since they are generally free, the cost savings of not requiring paid OS licenses can save a lot of money.

GoDaddy: Scalability

Services can be developed more quickly, perform faster in production, and scale better if they’re written using .NET Core

.NET Core gives us the freedom to take advantage of new infrastructure technologies that run on Linux such as Kubernetes and Docker.

.NET Core was designed to allow you to create small isolated services and scale them independently if needed.

You don't need to buy a new massive server just because one small part of your app is seeing a higher load. Just build a .NET Core app and stick it into a container.

Now you can infinitely scale your app as needed!

VQ Communications: Freedom and Flexibility

The fact that .NET Core is cross-platform allows developers more freedom in how they develop the product because, at the end of the day, it's going to run on .NET Core, and that will be macOS, Linux, or Windows

.NET Core can target Linux, Windows or Mac. This means you can build .NET Core apps using a Mac or Ubuntu - using VS Code or Sublime Text. You have more freedom now to use the tools that work for you.

Personally, I've been using VS Code to build all my .NET Core apps and libraries. I don't need Windows. I don't need Visual Studio. And it's great!

Age Of Ascent: Open For Contributions And Improvements

ASP.NET is open source, that allows us to contribute back to it if we have any performance issues which Microsoft review and together we make a better product.

Ben Adams is considered one of the most knowledgeable .NET developers in the world. He doesn't work for Microsoft - he's the CTO of Illyriad Games.

Since .NET Core is open source - Ben has been able to be a part of many non-Microsoft employed developers who have made .NET Core more performant, added new features and provided insights into the product.

What About Indie And Side Projects?

"But I'm not some super sized-organization" - you might say. What about building my side-projects quickly?

.NET Core gives you some fantastic tools that can accelerate your development:

  • Built-in Dependency Injection
  • Easy and isolated configuration (no more web.config!)
  • Razor Pages (a new type of project that allows you to build web apps quickly)
  • Easy database access with Entity Framework Core
  • Fantastic CLI tools to scaffold and build your apps with more productivity

On top of all that, I've been building an open source library that can accelerate building .NET Core web apps even faster!

Coravel gives you a near-zero config set of tools such as Task Scheduling, Queuing, Caching and a CLI that lets you scaffold even more so you can be super productive.

How To Get Started

Thinking about building your next project using .NET Core? Start here.

Do you have a .NET Framework app that you are considering migrating to .NET Core? Start here.

Already know how to use .NET Core but need more tools that will help you build fully featured web apps? Start here.

You Might Like These

Keep In Touch

Don't forget to connect with me on twitter or LinkedIn!

Navigating Your Software Development Career

An e-mail newsletter where I'll answer subscriber questions and offer advice around topics like:

βœ” What are the general stages of a software developer?
βœ” How do I know which stage I'm at? How do I get to the next stage?
βœ” What is a tech leader and how do I become one?

Sound interesting? Join the community!

Top comments (11)

Collapse
 
jfrankcarr profile image
Frank Carr

While I like .NET Core for the most part, there are two things I don't like.

I don't care for VS Code primarily for one reason, no customizable toolbar and the stubborn insistence of its developers not to create one. It also lacks a lot of modern conveniences out of the box, sometimes reminiscent of 1.0 GUI development tools in the 90's.

Another big limitation for me on .NET Core is the lack of support for a desktop GUI. While web based and console apps work fine for some projects, I have a need for working with a wide variety of hardware devices such as barcode scanners and PLCs in a manufacturing environment. I've read that 3.0 would address this limitation.

Collapse
 
kspeakman profile image
Kasey Speakman • Edited

I use and strongly prefer VS 2017 (not Code) for .NET Core dev. It has complete support for Core nowadays. I mostly do web APIs or services with .NET Core, so console apps are all I really use. But there are a few cases where I need the desktop tech -- access to hardware or interop with other software on the machine. Having to wait until .NET Core 3 for that stuff.

Collapse
 
jamesmh profile image
James Hickey

Thanks for you feedback Frank!

I personally have no need for a customizable toolbar. I find most of the shortcuts / command pallet (by pressing cntrl+shift+p) very productive (just like Sublime Text).

I'm not sure what you mean by saying it lacks modern conveniences? It has a terminal right inside the editor, supports tons of languages (especially given the availability of extensions), natively integrates with git, etc.

I'd be interested to know what conveniences you find are missing, specifically?

I agree about the lack of desktop features. You are able to build .NET Core desktop apps using QML - if that floats your boat lol.

But version 3 should support Windows desktop apps (as you said). That should be pretty cool!

Collapse
 
jfrankcarr profile image
Frank Carr

I'm mainly comparing it to VS 2012 and above, especially 2017. Probably because I've used VS for so long, I find VS Code lacking.

Also, I actually prefer using Notepad++ for a lot of quick things, like editing HTML or modifying a microservice when I don't have VS 2017 installed, because of that darned toolbar. It irks me every time I use Code. I can understand the attraction people who came from a purely text editor and CLI background have for it. But, since I've been writing code using Microsoft tools that have been continuously improving for over 20 years, it almost seems like a step back to the days of writing MASM and C for DOS.

Collapse
 
yaser profile image
Yaser Al-Najjar • Edited

.NET core can target .NET standard... same goes for Xamarin, so writing cross platform apps using .NET standard libraries is really simple and fun !

Collapse
 
rhymes profile image
rhymes

Interesting. I abandoned .NET eons ago when open source or cross platform at Microsoft and in the community were frowned upon. Glad it changed so much.

They'll have a tough job increasing the user base, there are so many options to write high performance apps. Hopefully the wealth of knowledge and libraries will help.

Collapse
 
jamesmh profile image
James Hickey

Microsoft has come a long way. I was on the verge of switching to PHP or something like it. But .NET Core changed that for me.

Microsoft in the past few days just "open sourced" all of it's 60,000+ patents. That's huge! Other organizations can now share their patents. Pretty amazing.

As far as performance goes, you can check out these benchmarks. You'll see that ASP .NET Core is #7 overall. It's clocking in at almost 300,000 requests per second on this particular benchmark, which is supposed to be a representation of a real-world scenario.

Quoting their site:

This test exercises the ORM, database connectivity, dynamic-size collections, sorting, server-side templates, XSS countermeasures, and character encoding.

And that's with C# - love it πŸŽ‰

Collapse
 
rhymes profile image
rhymes

Yeah, although no organization is perfect my opinion changed quite a bit (for the better):

  • TypeScript (Anders Hejlsberg is a great language designer), Visual Studio Code and other projects they open sourced
  • the acquisition of GitHub while it can make someone squirm it's a signal of how serious OSS is for them now
  • the patents you mentioned

.NET has always had good or great performance, from the start and F# seems super interesting to me (and probably a reason I would consider for re-learning .NET :D).

As far as performance goes, you can check out these benchmarks. You'll see that ASP .NET Core is #7 overall. It's clocking in at almost 300,000 requests per second on this particular benchmark, which is supposed to be a representation of a real-world scenario.

Well, as all benchmarks go, they never are real world but it's definitely an impressive placement. .NET probably needs to convince people to migrate to it instead of Go, in terms of marketing I mean.

Microsoft is hiring a lot of Linux and Docker experts lately:

Thread Thread
 
kspeakman profile image
Kasey Speakman

+1 F#

Collapse
 
justageek profile image
Brian Smith • Edited

Given all this info, can anyone suggest the necessary tools to install on Mac OS to get my feet wet with with C# for game development, I've never used C# or worked on games. I'm looking at haxe (haxe.org) and Stencyl (stencyl.com), but I've heard good things about games built using C#.

Collapse
 
jamesmh profile image
James Hickey

Sorry Brian, I have zero experience with .NET game development (other than using XNA Studio in school!)

I know there are a lot of people who are using Unity3D with Mono - but I don't think they'll be moving to .NET Core anytime soon.