Almost a year and a half after the announcement of its open source .NET Core project, Microsoft has officially announced the release of .NET Core 1.0, ASP.NET Core 1.0, and Entity Framework Core 1.0, available on Windows, OS X and Linux. The announcement represents a major step in Microsoft’s push to transform .NET into a development platform that developers can use across multiple operating systems.
In its announcement, Microsoft said:
“This is the biggest transformation of .NET since its inception and will define .NET for the next decade. We’ve rebuilt the foundation of .NET to be targeted at the needs of today’s world: highly distributed cloud applications, micro services and containers.”
Here is an overview of what was announced:
- .NET Core 1.0: Open source cross-platform .NET platform. You can install it on Linux (RHEL, Ubuntu, Fedora, openSUSe), Mac, Docker containers running on macOS, Windows, or Linux. Extensions are available to Visual Studio to leverage .NET Core. Example of code can be found here.
- NET Core 1.0: ASP.NET Core 1.0 based on .NET Core 1.0 and used for building web apps that can run on Windows, Linux, and macOS.
- Entity Framework Core 1.0: Allows .NET developers to work with database using .NET objects. Entity Framework Core 1.0 supports multiple databases SQL Server, SQLite, Postgres, InMemory, among others.
In addition to these releases, Microsoft announced a number of important partnerships. In fact, Red Hat, one of the world’s primary Linux vendors, will officially support .NET on its Red Hat Enterprise Linux operating system. Also, Codenvy has helped Microsoft integrate Visual Studio IDE with open source Eclipse.
Why this makes sense for Microsoft
Ensuring .NET Core 1.0 runs across multiple operating systems represents an enormous change for Microsoft. The traditional Microsoft of the Bill Gates/Steve Ballmer-era took a much different approach — the “old” Microsoft strongly supported running software on its own Windows operating system. This was primarily driven by the fear that support for competing platforms would cannibalize Windows market share.
However, since Satya Nadela became CEO, we have seen Microsoft place a lot of prominence on a cross-platform philosophy. These steps were necessitated by the need to remain competitive in the marketplace, where fragmentation occurs at platform and operating systems level.
The move to cross-platform started with Windows 10. Through Universal Windows Apps, Microsoft provided developers with a common Windows platform and one API layer across Windows 10 devices – desktop, phone, tablet, and XBox. This in turn meant that developers could code only once for all Windows 10 devices. The recent acquisition of Xamarin, a cross-platform vendor that allows developers to use .NET technologies for building applications across platforms, including Linux, as well as Android and iOS is another good example in that regard.
The move to an open source company for profits
Another critical thread of this strategy has been to look for ways to make profit while making a transition to open source. A good example of this movement to open source was the announcement of making .NET open source back in 2014. Or even the decision to open source the Xamarin software development kit post acquisition. The move to open source does make financial sense for Microsoft, especially when it can sell cloud services such as Microsoft Azure to these developers. In fact, as per the recent 10-Q, cloud services represent the largest portion of Microsoft revenues. This was closely followed by gaming and office.
Making .NetCore open source and integrating Visual Studio with Eclipse does come with other benefits:
- Opens up Visual Studio Team Services to New Audience: Developers who are actively using Linux never really considered Visual Studio. With Microsoft joining the Eclipse Foundation and announcing functionalities such as Azure Toolkit for Eclipse, Microsoft has essentially made it easier for these Java developers to build, develop, test, and deploy closed based Azure applications. And then, with additional plugins like Team Explorer Everywhere, it Microsoft can cross-sell Visual Studio Team Services products to these developers. Add to that, an access to a new distribution channel — i.e. the Eclipse Marketplace.
- Lines up new users for Azure cloud: Support and love for Linux also opens up door for developers interested in a new subscription for Microsoft’s cloud computing platform, Azure instead of competing cloud services like Amazon WebServices or Google. And then, with services such as Linux Integration Services (LIS) drivers, Azure does appear viable cloud platform for Linux.
- Increased exposure for Xamarin products: Similarly, making .NET Core available on Linux and OS, provides a new opportunity to better sell Xamarin products such as Xamarin Test Cloud. Finally, the move to open source is handy in attracting the development teams to C#, thereby making the language comparative to Objective-C or Swift.
What does this mean for Red Hat?
The relationship between Red Hat and Microsoft has been developing for quite some time. In November 2015, Microsoft announced a partnership with Red Hat, which made Red Hat Enterprise Linux the preferred choice for enterprise Linux workloads on Microsoft Azure.
With the latest announcement, Red Hat has new opportunities to attract developers that traditionally worked with Microsoft products.
As Red Hat explained in its announcement, the relationship will provide: “The ability to follow a microservices-based approach, where some components are built with .NET and others with Java, but all can run on a common, supported platform in Red Hat Enterprise Linux and Red Hat OpenShift.”
The impact on modern QA teams
As the provider of software quality tools for the connected world, we know that major announcements like this can raise questions for teams responsible for building and testing software.
First and foremost, having an insightful, powerful code review tool directly within Visual Studio can help prevent buggy code downstream and reduce testing time.
Secondly, it’s important that your test cases are platform and operating system agnostic. An ability to reuse test cases across devices and an operating system reduces testing time. You can leverage Selenium and tools like TestLeft, which enables testers to easily write tests within Visual Studio, to build tests can be reused across platforms.
Having a test framework that scales across operating system and devices is critical. To reduce maintenance costs and create solid test automation strategy, focus on creating more unit tests, followed by API tests, and then fewer UI tests. In case you are someone looking for insights into how to go about building a test design, this could be a good starting point.
Most importantly, many of these applications you deploy on .NET core will have numerous API dependencies. As a result, API functional, load, and security testing should be a part of your strategy.
Finally, ensuring proper coverage exists for requirements at the GUI and API levels can be challenging when you are developing tests across platforms. And over time as you write more automated (GUI and API) as well as manual tests, maintaining traceability between the requirements and defects raised in correspondence can become tough. Test management systems, such as QAComplete, can help ensure proper API and functional GUI test coverage exists for requirements.
What are your thoughts on the latest development from Microsoft? Let us know in the comments below.