We’ve talked several times in this space about cross-platform development, mainly with regard to mobile app development. The software project management, business strategy, and marketing advantages of being able to develop one code base and release the app for both iOS and Android at the same time are manifold: quicker time to market, better resource allocation, easier testing cycle, more consistent application look and feel, and more.
Of course, there are more “platforms” in the world than just Android and iOS: desktop platforms (mainly Windows and macOS) are still alive and kicking, not to mention web and cloud applications. What if the mobile cross-platform concept could be extended to the web, desktops, and servers?
Enter .NET Core
With the release of and subsequent updates to the .NET Core framework, Microsoft is attempting to do just that. In a departure from its traditional proprietary model, Microsoft has teamed up with a development community to make .NET Core a free, open-source framework for cross-platform development. Version 2.0 was released in August 2017, and frequent updates are expected.
As a subset of the .NET Framework, .NET Core was designed to run on Windows, macOS, and Linux. It includes the .NET runtime, as well as language compilers, SDK tools, and framework libraries.
.NET Core is an attempt to reunify a highly fragmented .NET Framework landscape, which is littered with different versions for the many different devices running it and even for different versions of the Windows operating system. Because it’s open-source, Microsoft expects that it will have more versions released per year than .NET Framework, and the feature sets of the two will not always be in sync.
Working With .NET Core
Unlike .NET Framework, .NET Core is not, first and foremost, intended for GUI app development; its focus is more on console-based server applications (read: cloud software). That said, it also supports development for the Universal Windows Platform, Microsoft’s platform for cross-form-factor Windows application development, and Xamarin Forms, for mobile-device apps.
An important element of the .NET ecosystem that has come into prominence with .NET Core is the .NET Standard libraries. .NET Standard is an API specification that defines the APIs that work across the .NET landscape. Some 32,000 APIs are included, making the .NET Standard libraries a key to true cross-platform development.
At present, .NET Core is essentially the only framework that combines cross-platform, cross-form-factor development with the depth of the .NET ecosystem, making it an important part of Microsoft’s corporate strategy. It’s a pretty radical change for Microsoft, which has long focused only on the Windows universe and only reluctantly acknowledged, let alone supported, anything else. Witness, for example, Microsoft Office for Mac, which seems always to have been a few steps behind its Windows counterpart.
With this change in direction for the .NET ecosystem, Microsoft seems to recognize that its long-time bread and butter, the Windows desktop, is starting to run its course, and the future belongs to mobile (a market that Microsoft utterly failed to capture) and the cloud. Microsoft’s embrace of the open-source model, with active community involvement, is also a refreshing turn for the company. It’s a win-win situation for all involved: Developers can leverage the rich .NET ecosystem over a wide range of target platforms and devices, while retaining the value of the .NET languages they are already familiar with; and Microsoft remains a major force in guiding the future path of software development, even as it loosens its licensing grip. This is a strategy that Microsoft needs to stay relevant among developers, and one that should work quite well for everyone for the foreseeable future.