Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save nixxholas/303378b6fe5eeaa53ad247e54c24f548 to your computer and use it in GitHub Desktop.
Save nixxholas/303378b6fe5eeaa53ad247e54c24f548 to your computer and use it in GitHub Desktop.
A look at Progress’ report on the state of .NET in 2018

As first stated in the whitepaper, the dotnet yesterday was just as silo'ed as it was, being able to run on its own, that's all.

The Old .NET Family

Today, we're looking at one of the world's most mature framework that is now turning into somewhat like an open community project. IMO, its a move to reorganize a family of platforms that would better suit today's needs as .NET is long due for that. In an attempt to cover how .NET Core has changed in my personal opinion, .NET has been recreated from the ground up by creating a universal base class library known as the .NET Standard, notably .NET Standard 2.0 as of the time of this article. This means that the API that you have implemented might more or less work well with another .NET app based on another platform such as Xamarin or Unity. For instance, platform specific implementations/APIs that are exclusively meant to be built for Unity will exist there, but commonly used libraries are shared across various platforms in order to unify a certain amount of code, making code reusability extremely likely.

The .NET Family

Quoting from the whitepaper,

Visual Studio for Mac' is a full-featured native IDE and brings most of the VS development comforts over to MacOS for modern mobile, web and cloud development.

I might be misinterpreting 'full-featured' in this context, but i'm assuming that 'full-featured' equates to the unique selling point features of what Visual Studio has to offer, such as Intellisense and proper code syntax validations. Sometimes, the view syntaxes don't even validate at all, where I'd eventually end up having to get another editor to be able to see that the frontend scripts I wrote are fine. Intellisense isn't implemented for Razor yet, you won't get the usual 'Manage Nuget Packages' windows and proper code formatting. All these have not been addressed on the whitepaper. But bear in mind that this is my personal experience with Visual Studio and it'll be great if we can get a poll/survey out for other developers to voice out their positive and negative experiences they have with VS for Mac.

Apart from that, there are alternatives for a well-rounded IDE on Mac for .NET, notably Jetbrains' Rider. The reason why this was mentioned is because Rider has a refined code formatting function, working syntax validation for View-level code, EcmaScript support, etc. Once again, personal opinion. I seriously feel that VS for Mac is close to being on par with Rider but for the time being i'd recommend Rider over VS for Mac until the missing functions that assist with developers in a big way are implemented.

One thing I would like to point out is the results shown with the effect of an open source effort. Throughout the past year, have you noticed the tremendous effort made by the community to push out constructive advice to the core team in order to streamline the critical tasks at hand? That way the core devs can focus more on organizing and executing tasks while the community works with what they have and proceed to look for constructive ideas as to resolve an issue or to propose a function that will further empower the community in developing apps based on the .NET family.

Addressing the .NET Core section

In this section, I would like to point out a phrase which I feel could be further elaborated.

One of the fastest full-featured Web frameworks Web Framework Benchmarks by TechEmpower

By my personal judgement, it seems like the latest r15 of TechEmpower's benchmark results produced show that .NET Core falls along the above average/average rankings of several types of tests. Alright, let's dive deeper into the history of .NET Core in its appearances in TechEmpower's benchmarks. In the r13 benchmark results, TechEmpower made a special mention about .NET Core's significant improvements in the plaintext benchmark due to its transition from mono and has made an 85900% improvement since r11.

An extra snippet from r13;

The best part, in our opinion, is that Microsoft is making performance a long-term priority. There is room to improve on our other more complex tests such as JSON serialization and Fortunes (which exercises database connectivity, data structures, encoding of unsafe text, and templating). Microsoft is taking on those challenges and will continue to improve the performance of its platform.

Moving forward, .NET Core has improved by rougly 400,000 more responses/s in terms of plaintext response from r13 to r15. From the looks of it, the benchmarks may have changed but don't get me wrong, TechEmpower didn't announce officially in their blog that the benchmarks have indeed changed during that period of time.

Judging just by the r13 to r14 differences, we can see that .NET Core is improving at a steady rate. Diving deeper, the TechEmpower Results Dashboard will provide current/up to date results so that you can get yourself the latest and greatest of all their benchmarks!

Finally, we should make sure that we're not just relying on one kind of benchmark to judge and decide on the state of .NET Core in terms of performance. The .NET Core team has been maintaining a benchmark project on their github that showcases the metrics of certain performance data via the PowerBI tool. Be sure to check it out because the metrics are not just related to performance, there's also reliability metrics and more!

UI Kits?

This is a weird section that the Progress whitepaper has covered. It doesn't make sense, let me explain. Instead of writing a thorough list of the commonly used UI frameworks that .NET Core developers implement, Progress decided to write up on their own UI framework. It's not illegal to write on your own UI framework, but its a whitepaper afterall. I really respect that they have spent the time, effort and manpower to gather all the enriching information, have it compiled and compressed for us to consume but everything was well written until this part. You simply had to make it go wrong somewhere.

I'm not going to explain much here because once you have read the whitepaper, you'll realize what i'm talking about. I'm not really a frontend guy so I'll leave it to the gurus to share more about with you.

Conclusion

I would like to thank Progress for spending the time and effort to research, study and write up on the .NET ecosystem. As we progress through the next decade, .NET Core would certainly be an extremely well-rounded candidate to be a viable replacement to existing stacks that are due for a thorough refactor like what .NET has been through. Although it is time consuming, expensive and a waste of time to do so, it will definitely benefit everyone involved/at stake in time to come because modern frameworks and platforms are started to mature to the point where mature platforms and frameworks made in the last century are starting to get phased out for more streamlined stacks.

View the original whitepaper here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment