BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Articles Discussions on the Future of .NET Core

Discussions on the Future of .NET Core

Key Takeaways

  • The .NET Core platform provides signficant performance benefits as compared to the traditional .NET Framework
  • .NET Core has been well-adopted outside Microsoft and benefits from strong community involvement
  • .NET Core benefits from a server-centric design that is not Windows-focused
  • .NET Core is now a stable platform suitable for new application development

With the release of .NET Core 2.0, Microsoft has the next major version of the general purpose, modular, cross-platform and open source platform that was initially released in 2016. .NET Core has been created to have many of the APIs that are available in the current release of .NET Framework. It was initially created to allow for the next generation of ASP.NET solutions but now drives and is the basis for many other scenarios including IoT, cloud and next generation mobile solutions. In this series, we will explore some of the benefits .NET Core and how it can benefit not only traditional .NET developers but all technologists that need to bring robust, performant and economical solutions to market.

This InfoQ article is part of the series ".NET Core". You can subscribe to receive notifications via RSS.

 

Five veteran developers discuss the .NET Core platform, where it has been and where it is headed.  Read about the strengths and weaknesses of the platform and how its use can benefit your next application.

Panelists

  • Jeff Ammons
  • Jeremy Miller
  • David Pine
  • Mark Rendle
  • Spencer Schneidenbach

InfoQ: Give us a little about yourself and your work with .NET Core at this point.

Jeff: I’ve followed Core since it was called ASP.NET vNext. I nearly left the Microsoft developer space in 2012, but vNext pulled me back in! I began speaking about Core in 2014 because I believed it was a much better foundation for server/web projects.

Jeremy: I lead several community OSS projects in .NET, some that target a mix of the full .NET framework and Netstandard targets.

David: I have been developing with .NET Core since late 2015. I later started a proof-of-concept application in January 2016 and since then our entire team has been actively developing with .NET Core. We build enterprise web applications leveraging ASP.NET Core. Back then it was named ASP.NET 5 and relied on the .xproj file format and project.json. I consider myself an earlier adopter and I have thoroughly enjoyed watching the progression of .NET Core. Likewise, I'm humbled by and grateful for the developer community who has helped shape this Microsoft offering beyond what anyone has anticipated. I believe it's only going to get better.

Mark: I’ve been a .NET user since the start, and have been using .NET Core ever since the first preview was released, back when it was called Project K. I’ve been delivering training courses and consultancy to groups and organisations around the world for a couple of years now, both in .NET Core itself and also the new ecosystems it has opened up, like Linux, Docker, Kubernetes, etc. I’m currently working on a series of online courses on building Cloud Native applications with ASP.NET Core.

Spencer: I’ve worked with .NET Core in some greenfield projects, mostly with ASP.NET Core as a backend to React-Redux applications.  I’ve also given several ASP.NET Core workshops, including one focusing on Angular and another on ASP.NET Core itself… all backed with .NET Core!

InfoQ: What do you like about .NET Core and see as its strengths?

Jeff: In just about every talk I’ve given about Core I’ve gotten the question, “I’m a Windows developer. Why should I care about cross platform?” The answer is performance. Originally .NET was optimized for one user on one Windows computer. Compare that with something like Node that was optimized for huge numbers of users on multiple servers. The Windows-only underpinnings and one user expectation made it more difficult to make super performant apps in a multi-user, server setting. Core gave Microsoft a chance to reset the base to a server centric model.

Jeremy: Personally, I love that it’s cross platform. I’ve been able to shift the majority of my .NET Core development work to OS X. The streamlined csproj file format is also a very big step in the right direction, but I still wished that .Net Core would have kept the much cleaner project.json format. The dotnet cli tooling has been a huge win in my book by making build scripting so much simpler in my OSS tools than it was before and finally having decent command line tooling for starting and managing project files. The combination of improved Nuget tooling and the better csproj file format drastically cuts down the merge conflict problems we frequently hit with the previous generation of Nuget and Visual Studio.Net without having to resort to tools like Paket that aren’t well understood by many developers.

David: It is obvious that most developers will love that .NET Core is open source, cross platform and extremely performant. But I love that .NET Core is still .NET. If you ever developed in .NET before – specifically C#, you're accustomed to great tooling, an amazing community and one of the most powerful programming languages in the world. I believe that .NET Core is a step in the right direction for Microsoft – but more importantly for all framework developers. Open source and cross platform should be the standard. The fact that I can contribute and influence the C# language or a feature in .NET Core is an incredible achievement for Microsoft. As a developer it's imperative that we're given the ability to read source code, design implementations and architectural inner workings – and for that I tip my "red hat" to Microsoft.

Mark: The primary strength of .NET Core has to be the cross-platform support; the fact that you can develop a single application that can run on Windows or Linux, or be developed on macOS, as well as run on x86 and ARM CPUs, is amazing. On top of that, the proper open-source development has seen some amazing contributions from the community. Performance has been improved, especially on the web side of things, and there’s much more still to come. That we can get all this modern goodness while still continuing to use C# and the familiar frameworks and libraries is just fantastic.

Spencer: Cross-plat is definitely .NET Core’s biggest selling point and biggest strength. I’ve maintained for a while that .NET Core was meant to attract the next generation of developers, not the current folks using the .NET Framework.  However, as more and more features are added to .NET Core (System.Drawing and System.DirectoryServices, anyone?) I think we’ll see more .NET developers and shops moving to .NET Core.

InfoQ: Are there any weaknesses today in .NET Core that you would want resolved in the future?

Jeff: Primarily omissions that will be added over time. The improvement of the past year has been phenomenal. The HUGE weakness until this past fall was the disconnect between the .NET, ASP.NET and Visual Studio teams… It was only after the fall releases that the teams were on the same page enough for me to recommend anyone use Core for production work. A perfect example was the entire fiasco of project.json to *.csproj. That change so late in the process was punishing to anyone who built a production project early. We need to reach the stability plateau for adoption to begin in earnest.

Jeremy: The current csproj file format is still clumsy to use in my opinion if you try to edit it directly. There’s room for improvement in both the tooling and in the format of the file itself to remove MSBuild internal concerns while also pushing the file format in the direction of being user friendly. I would dearly love to see the AssemblyLoadContext concept pushed as a possible lightweight successor to the historic AppDomain model.

David: One of the major weaknesses today of .NET Core is the misunderstandings that come with it. Countless developers are still asking, "What's the difference between .NET Core, .NET Standard and .NET Framework". Likewise, which one should they choose and why. The choices aren't always easy or clear. For example it is actually possible to have a .NET Core application that targets the .NET Framework – which if you think about it is really confusing, because we know that both the .NET Framework and .NET Core are runtime implementations of .NET Standard. The .NET Core terminology is overloaded. There are .NET Core applications, .NET Core CLI, .NET Core SDK and .NET Core runtimes. I believe there is much room for improvement with regards to making all of this easier to digest and use.

Mark: There’s still some work to be done on the performance side of things. Kestrel, the ASP.NET Core web server, performs extremely well in the TechEmpower “plaintext” benchmark, but not so well in the higher-level tests involving database queries and the like. Much of the code that’s been migrated over from the full-fat .NET Framework could be improved a lot in that regard. The great thing is now people are diving into the code and digging these things out.

Spencer: Lack of feature parity with the .NET Framework means that current .NET developers are going to have to decide if some of the core features of the .NET Framework are worth losing if they want to try .NET Core.  If you’re using System.Drawing, System.DirectoryServices, or some framework that only targets the .NET Framework. you’re out of luck right now. ASP.NET Core is already a very mature product and moving from ASP.NET MVC/Web API is fairly straightforward, but that’s not true for everything – Entity Framework 6 to EF Core is not nearly as straightforward.

InfoQ: If you were starting a new project for your organization today would you choose .NET Core over .NET Framework? Why?

Jeff: Yes, I did! Server performance was my primary reason. The next is the merging of MVC and WebAPI controllers. It never made sense to me to have two separate bases. Third would be tag helpers. I prefer my HTML to look as much like HTML as possible. I’ve always hated the

@Html.ActionLink(“Which param is this”, “Or this”, “Wait What Is This One Again”, new { @class = "OhComeOnYouMustBeKidding"})approach. 

Adding CSS classes was obtuse at best. I much prefer

<a asp-controller=”book” asp-action=”edit” class=”MyCSS”>Edit</a>

Jeremy: Absolutely yes, and we are already doing this. The major reason is .Net Core being cross platform for more hosting or development options.

David: I would choose .NET Core over .NET Framework. To me it is an easy choice, as I'm not developing any new WinForms, WPF, WCF or ASP.NET WebForms applications. I'm happy to use the latest and greatest technologies from Microsoft. The only thing that I have really missed thus far is SignalR – which is hopefully coming soon. The progression is straightforward in my mind… and it’s a step in the right direction. The only concern I have is one that pertains to the adoptability of .NET Core. It is a bit frustrating that there is a choice at all. In fact, I'd prefer if Microsoft simply stated we need to all use .NET Core now and you can have target framework moniker (TFM) that targets the .NET Framework.

Mark: For new projects, I would absolutely default to using .NET Core wherever possible. The most obvious reason is that the improved performance and reduced footprint of .NET Core apps means a real cost saving on infrastructure, whether in cloud or private datacenter. I mostly work on web and backend services, and being able to develop and deploy applications across platforms, using container orchestration tools like Docker and Kubernetes, is a real advantage. For mixed projects, where there are WPF, UWP or Xamarin mobile components, using .NET Standard lets you share packages between full .NET or Xamarin projects and .NET Core web or service projects.

Spencer: My organization is pretty bought into the .NET Framework, so probably not at this point. However, we’re looking to re-tool our platform at some point and .NET Core will definitely be given serious consideration.  It would be nice not having to be locked into Windows-based hosting, but it’s not a big deal right now!

InfoQ: Do you think .NET Core will grow beyond Microsoft or stay within the existing .NET developer community?

Jeff: I hope so. This is the first chance Microsoft has had to approach the generation of web developers who believe they have to have a Mac. I teach Core in my classes and we start with VS Code. I’m liking Code more and more, but there is no doubt the full Visual Studio is super productive. So far, most students who’ve started with Mac or Linux have switched to Windows when we get deep into ASP, even with Core. Hopefully we can improve the experience for non-Windows, non-Visual Studio developers.

Jeremy: If ASP.Net Core based architectures keep climbing up the TechEmpower charts, maybe. .Net Core will have to overcome decades of stereotypes about Microsoft development technologies and culture.

David: I'd argue that .NET Core has already grown beyond Microsoft. Statistically speaking, the .NET Core repositories are literally accepting pull requests every day from non-Microsoft employees. Also the .NET Foundation has over 1,700 companies contributing to the .NET ecosystem – with over 550 repositories of .NET focused source code! This is insane if you think about – literally none of this would be possible without Microsoft going open source. The .NET developer community is as strong as it has ever been.

Mark:I would love to see .NET Core grow and grow, and attract more developers from other ecosystems. There is a lot of community support, but it does seem to be coming mostly from the pre-existing .NET community, although you can see more interest from certain sectors. A good example is Samsung, who have adopted .NET Core for their Tizen operating system. Amazon and Google have ramped up support on their cloud platforms, including providing great SDK support, and that is good to see. It feels like the Core project was the start of a more open Microsoft engaging more actively with other communities, and I hope that will continue, and get those communities engaging with Microsoft.

Spencer: Hard to say.  I think that Microsoft’s biggest problem in the open source space is trust, but they’re already making huge strides to correct that – Visual Studio Code is an example of a product that has been a huge hit in all corners of open source. I think only time will tell.

InfoQ: Where do you see .NET Core going over the next two years?

Jeff: I expect the same trajectory I saw with MVC. At first Microsoft devs hated it because it was different than Web Forms. Then they grudgingly tried it. Then they got better with it. Then they loved it. Now they feel the same way about Core.A HUGE difference is that your knowledge of MVC and WebAPI translates over much more so than your Web Forms skills transferred to MVC.

Jeremy: If it really is feasible to use older .Net libraries in projects that target Netstandard 2.0, I see more development teams finally making the jump to .Net Core that might have been hesitant because of their dependencies not yet targeting Netstandard.

David: I do not think that .NET Core is really going anywhere specifically. It will become more widely adopted as it grows in popularity. Its tooling will become more efficient, bug-free and helpful – increasing developer productivity. I believe .NET Core will become the industry standard for new development efforts within the .NET ecosystem. I wouldn't mind seeing ASP.NET Core introduce a better SPA story. I know that there is a JavaScriptServices repository that helps you build Angular or React or whatever, but I want Microsoft to take a stab at a client-side framework. They have TypeScript already, so they’re already heading the right direction!

Mark: We’re at the point in the adoption curve now where big enterprise customers are starting to look seriously at .NET Core for new projects, so that’s going to continue and hopefully drive the wider ecosystem forward. Looking at the roadmaps for .NET Core, ASP.NET Core, C# and other projects, there are some amazing things coming down the line. One of my favourite projects is CoreRT, which provides Ahead-of-Time compilation for .NET, so you can build standalone executables with no runtime dependencies. They’re adding support for WebAssembly as well, so we’ll be able to write C# code and compile it to do complicated processing in browsers. I’m excited to see what else might happen!

Spencer: Increased feature parity with the .NET Framework, likely helped along with .NET Standard.

InfoQ: Final comment?

Jeff: We are approaching the point when stability over time will become a much larger factor in adoption of Core than new features. I’m a fan of the LTS vs Current model used by Node, Ubuntu, etc. As an organization I need to know I can bet on a technology that will remain stable for at least 3-5 years before requiring big changes. At the same time, I want to know innovation is constant.

Jeremy: The killer problem with .NET Core, at least before Netstandard 2, has been how it’s bifurcated the .NET OSS ecosystem much the same way that the infamous Python v3 release did in their world. It’s been very laborious to multi-target both the full framework and .NET Core, and that’s probably acted as a drag upon OSS development.

David: I'm always amazed by the number of .NET developers who have never heard of .NET Core or ASP.NET Core. I believe that this is part of the new Microsoft and something that we as developers can certainly get behind. In all my years of programming this is truly one of those innovative experiences that I'll get tell my grandchildren about, "I remember when Microsoft went open-source and cross-platform at the same time – they called it .NET Core, never mind the name kids – it was impressive". Yes, it is exciting times!

Mark: As you can probably tell from my comments, I’m a big fan of .NET Core. If you’re starting a new ASP.NET project, you should use it. It’s similar enough to .NET that you’ll be up and running in no time. It’s stable, the open-source ecosystem is supporting it, and it’s only going to get better.

About the Panelists

Jeff Ammons is Chief Instructor at Code Career Academy where he teaches both the Microsoft Stack and Node.js for web development near Atlanta. Jeff is a Microsoft MVP and Pluralsight author who speaks frequently at user groups, meetups and conferences. He has worked as a developer for over 25 years for companies large and small in roles from developer to Principal Software Architect. 

Jeremy Miller is a Developer and Software Architect in Austin, TX. Miller is author of several OSS tools in the .Net space. He blogs here.

 

 

 

David Pine is a Technical Evangelist and Microsoft MVP working at Centare in Wisconsin. David loves knowledge sharing with the technical community and speaks regionally at meetups, user groups, and technical conferences. David is passionate about sharing his thoughts through writing as well and actively maintains a blog.

Mark Rendle is a software developer with nearly 30 years of industry experience. He works as a freelance consultant, trainer and developer, and regularly speaks at conferences around the world about .NET Core and building modern applications and services. Follow Mark on Twitter.

 

Spencer Schneidenbach is a software architect, API/integrations expert, and Microsoft MVP living in St. Louis, MO. Spencer blogs here.

 

 

 

With the release of .NET Core 2.0, Microsoft has the next major version of the general purpose, modular, cross-platform and open source platform that was initially released in 2016. .NET Core has been created to have many of the APIs that are available in the current release of .NET Framework. It was initially created to allow for the next generation of ASP.NET solutions but now drives and is the basis for many other scenarios including IoT, cloud and next generation mobile solutions. In this series, we will explore some of the benefits .NET Core and how it can benefit not only traditional .NET developers but all technologists that need to bring robust, performant and economical solutions to market.

This InfoQ article is part of the series ".NET Core". You can subscribe to receive notifications via RSS.

Rate this Article

Adoption
Style

BT