As web and mobile development have become increasingly important, .NET has faced an increasing amount of competition from open source platforms, as well as some confusion over its direction.
That wasn’t helped by problems in communication like when, some years back, a Microsoft executive announced in a rather off-hand way that Silverlight was dead. Or the lack of news about WPF for several years. Or even the way the WinRT framework in Windows 8 appeared to suggest that the .NET Framework was being superseded by “modern” apps.
To avoid such confusion, Microsoft clearly addressed any concerns about the long-term future of .NET when it made .NET open source and cross platform, as .NET Core. “These changes by Microsoft make investments in .NET even more valuable,” says Vassil Terziev, the chief innovation officer at Progress Software. “Businesses can now continue to develop in .NET without also being forced to run Windows in the data center. It gives .NET shops even more flexibility and control over their costs and deployments, while not forcing them to retrain their engineering teams.”
Still, .NET Core didn’t address one of the continuing problems: Microsoft kept bringing .NET to new platforms, but it was a slightly different .NET every time. “Moving forward, one of our primary goals is to unfragment .NET,” says Scott Hunter, a member of the .NET engineering team.
“We’re adding consistency to .NET. No matter where you are on the .NET continuum, whether you’re in the .NET Framework or in .NET Core, a huge, consistent piece of .NET will be exactly the same,” Hunter says. “There are the different app models like WinForms, WPF, Xamarin, ASP.NET and the Entity Framework, and then there’s all the .NET that's just generic. We’re going to take all that and wrap it into .NET Standard.”
That will make .NET code far more portable among Xamarin, UWP, .NET Core and the full .NET Framework. “If you write against .NET Standard, that's a contract saying it will run on Xamarin, on .NET Core and on the full framework,” Hunter says. It’s also where new APIs will be added, to make sure they’re available to .NET Core and Xamarin — and .NET Standard 2.0 will bring all the APIs that are in Xamarin and make them available in .NET later this year. “In the same timeframe, UWP apps will benefit from a bunch of APIs that were hidden from them,” he adds.
That consistency will make it easier to take advantage of the cross-platform options of Xamarin and .NET Core and keep .NET relevant to businesses.
The more familiar .NET technologies will keep getting new features too, Hunter says. “As far as their WinForms and WPF investments go, [businesses] should be feel comfortable that those are going to be great moving forward and will get new language features and new APIs. WinForms and WPF are still just as relevant today: If you're trying to build desktop apps, they are great frameworks. With Centennial you can take those desktop apps and take advantage of Windows 10 features like live tiles and desktop search — and you’ll continue to see us bridge some of those gaps as we move forward.”
Switching to .NET
All this means that existing .NET developers aren’t moving away from the platform, says Paul Veitch, senior director for technology services at managed services provider Avanade (a Microsoft joint venture with Accenture). In the last year, he says, he’s no longer hearing the old frustration that the Silverlight technologies they’d developed for were no longer going to be supported. Instead there’s a new sense of excitement.
Businesses who work with Avanade might be the least likely to move off .NET, but Veitch also notes the number of enterprises he works with that are switching to Microsoft and moving to .NET from other platforms.
“We see new customers coming from mainframes, from Cobol, from Java, from a plethora of other technologies, and having a Microsoft strategy. They need to figure out how to use it all, but there’s genuine excitement about what Microsoft is doing.”
In some ways, Microsoft’s new direction may make more sense to businesses that aren’t already using .NET. “Our clients are looking with some surprise at the Microsoft changes under Satya Nadella,” Veitch says. “The people who are still trying to digest that are customers that have been on the Microsoft platform for a long time. Organizations that aren't traditionally Microsoft customers are looking at what Microsoft is doing and seeing some radical new things happening.”
Some of the increased interest in .NET may come from uncertainty about the future of Java EE. Although Oracle has recently announced some of its plans for Java EE version 8, Veitch believes the lack of earlier information has caused concern. “The marketplace has been saying that perhaps Oracle is no longer actively developing Java, potentially causing people to think again about their investment in it.”
Those businesses don’t always point to the improved cross-platform support as a reason for the move and .NET Linux deployments aren’t yet significant, Veitch says, but he expects it to become more important over time. And .NET Core is more suited to new development than for porting existing apps, he says. “Businesses already using .NET are taking a watching brief around .NET Core. The level of maturity is good now but it’s a recent innovation and lots of things that have been around for a long time in .NET Framework aren't there yet. Porting a legacy app that’s been around for a number of years to .NET Core is difficult at this point. They’re definitely looking at it for new developments, rather than for porting applications wholesale.”
Interest in .NET Core is often tied to plans to use platform-as-a-service (PaaS) services on Azure, or containers and microservices, notes Veitch. “They’re looking at it alongside a devops and containerization strategy; they want to be able to develop .NET Core for a lighter footprint in containers.”
That was actually one of the goals for .NET Core, Scott Hunter points out. “We want to make sure .NET is an awesome platform for building containers and microservices. You will see us in future build frameworks on top of .NET Core specifically in the microservices world.” To make that work, even ASP.NET will become modular. “In the microservice world lot of folks try to make things as small and fast as possible. ASP.NET will be very small and very modular. If you just want something small without MVC, routing, controllers and so on, you can have that. You can use as much or little of the framework as you want. For the first time, we give you a dial and you can dial it down to nothing and then dial in as much on top as you need.”
Hunter has ambitious targets for how small the runtime can get in a container — at least three times smaller than options like Node and Java. “Our target is to be under 100MB for the runtime running a container for a microservice,” says Hunter. The Visual Studio IDE, which continues to be very popular in the .NET world, will also make deploying containers and microservices more approachable for .NET developers, he promises. “If you’re a container person, think how much work it is to set up continuous integration and continuous development and testing. When you want to move the container to the hub and publish it, there are a whole bunch of steps to set up. You can envision us making that three clicks and you're done, to get a full workload running on platform.”
Xamarin has been an important part of generating interest in .NET. “Most of the businesses I deal with treat iOS and Android as primary core platforms,” Veitch notes. “Xamarin had already got them excited and they got even more excited when Microsoft bought them because that made them feel they’d made a good strategic decision to pick up the technology.”
There’s less interest in porting existing iOS and Android apps to Xamarin and more in using it to build hybrid apps using a native container for HTML5 code. “They like the updateability but they recognize they can't get all the features, performance and behavior of native apps in HTML5. Using a native container and having HTML5 sit inside it means they’re not compromising on functionality. And they’re looking for applications that can adapt and deliver different capabilities on different devices and screens.”
Xamarin also solves the problem of what to do with any remaining Silverlight apps, Hunter says. “Either mobile or web would be the right direction to move with Silverlight apps. Xamarin is the easiest transition because it’s a fully managed stack and with Xamarin Forms you have a consistent UI that runs across iOS and Android.” In the future, Xamarin might even create UWP apps.
Like Veitch, Terziev says existing .NET developers view cross-platform development with .NET Core as a strong option for the future, but they’re not rushing to replace existing apps. “The .NET community is obviously much more mature now, and they’ve been around the block a few times with big shifts in .NET.
As a result, I think there is more of a cautious embracing of the bleeding edge coming out of Redmond. We still have customers happily extending WinForms and WebForms apps because those remain some of the most “drag-and-drop” friendly technologies born on .NET. The only Microsoft UI technology we’ve seen a wholesale switch from is Silverlight, and in those cases most developers landed in either HTML5 or back in WPF. We expect things like .NET Core to primarily show up in new projects where, in the past, technology decisions (like Linux servers) may have pushed a .NET team to consider NodeJS or Java.”
A wide variety of services are adding support for .NET. “There are lots of libraries creating hooks into MVC and Microsoft technologies right now. There’s something of a head of steam building,” Veitch says.
There’s even a new set of .NET libraries for Google cloud platform services like BigQuery and Google Storage, and the IronPython project (Python for .NET) is restarting after a two-year hiatus. “Now that we’ve got a really open platform that runs everywhere, it's got all this interest,” Hunter explains. “The .NET Core has brought a renaissance in .NET.”
Having launched a Windows version of its open source database, RethinkDB has seen increasing interest from .NET developers, which community manager Christina Keelan attributes to the cross-platform promise of .NET Core. “People want to be able to develop in Visual Studio on a Windows desktop and deploy to Linux servers. RethinkDB's changefeeds, which allow queries to receive live updates, are particularly attractive to .NET developers who are building real-time web applications with ASP.NET and Microsoft's SignalR framework.”
Brian Chavez created the C# RethinkDB.Driver client library so he could use Mono to run .NET web applications on Ubuntu, but he’s enthusiastic about .NET Core as an official cross-platform .NET experience.
The open source nature of .NET is important to many businesses too, says Hunter. “I've heard companies say they run an 80-20 model where they use 80 percent open source as part of their DNA.” That helped drive Microsoft’s decision to open source the entire .NET platform. “I never want to sit down with a customer who says I chose someone else over you because they’re more open.”
Opening .NET up for community contributions has helped bring it to a wider range of platforms than Microsoft could ever have done on its own, including FreeBSD. And AWS quickly created an SDK for .NET. “Being cross-platform gives legitimacy to the platform,” Hunter says. “You’re not isolated to a Microsoft world. We don’t hamstring the Linux version; we make sure the performance is in the same ballpark as on Windows.”
This story, "What should you do with your .NET apps?" was originally published by CIO.