INTRODUCTION
-
What has Red Hat announced?
- Red Hat has announced that .NET Core 2.0, an open source major release with significant improvements over the 1.0 and 1.1 releases, is now generally available for Red Hat Enterprise Linux, OpenShift Container Platform, and related platforms. This release brings .NET Core much closer to being aligned with the traditional .NET Framework, with massively expanded API support for .NET Standard 2.0 and far better support for NuGet packages. This release improves the experience of creating portable .NET server apps across Windows, macOS, and Linux.
- This release follows Microsoft’s own .NET Core 2.0 announcement on August 14. See their announcement on this Channel 9 video.
-
Why is Red Hat making .NET Core 2.0 available?
-
.NET Core on Red Hat platforms complements Java EE in the enterprise. Now that .NET Core is open source, Red Hat can uniquely offer both for a fully open source and heterogeneous data center that has standardized on microservices and Linux containers.
-
-
How does .NET Core 2.0 fit into Red Hat plans/portfolio?
- .NET Core is an important addition to the massive and growing list of open source development tools and platforms.
- .NET Core on Red Hat platforms means customers have a choice for development and deployment - both on-premise and in the cloud - and further supports Red Hat’s Open Hybrid Cloud strategy.
- Red Hat’s .NET Core 2.0 distribution will be delivered in Linux containers, making microservices development very friendly for .NET developers. (We have RPMs available too.)
WHO IS THIS FOR?
-
Why would I want to run my .NET apps on Red Hat platforms?
-
Containers and microservices are the main reasons. Red Hat will be able to differentiate .NET Core to run natively on containers that support an open hybrid cloud strategy. As the benefits of containers expand with OpenShift Container Platform, so does the .NET Core benefits with setup, management, DevOps, etc.
-
-
Why will IT/OPS people care about .NET Core 2.0?
- .NET Core 2.0 provides all of the advantages of running Linux containers on Red Hat Enterprise Linux or OpenShift Container Platform with Kubernetes while allowing .NET developers the freedom to continue developing in their language of choice and on the platform of their choice (e.g., Windows, macOS, Linux). With .NET Core 2.0, there is also the much higher probability of existing code being easier to migrate to RHEL.
- IT/OPS who already love the benefits of OpenShift Container Platform will appreciate deploying .NET Core 2.0 on it.
-
Please summarize Red Hat’s .NET Core 2.0 offering (short version).
- Red Hat provides a distribution of .NET Core 2.0 that enables developers to create C#, F#, and other applications and deploy them as Linux containers on Red Hat Enterprise Linux, OpenShift Container Platform, etc. A no-cost Red Hat Enterprise Linux Developer Subscription is available, including a full suite of tools for Linux container development. Visit the URL: RedHatLoves.NET.
-
Please summarize Red Hat’s .NET Core 2.0 offering (long version)
- Red Hat provides a distribution of .NET Core 2.0 that enables developers to create C#, F#, and other applications and deploy them as Linux containers on Red Hat Enterprise Linux, OpenShift Container Platform, etc. A no-cost Red Hat Enterprise Linux Developer Subscription is available, including a full suite of tools for Linux container development.
- With .NET Core 2.0, developers will find it easy to deploy their existing .NET Core applications onto Red Hat platforms and obtain the scale-out benefits of Linux containers. When deployed on the cloud-based OpenShift Container Platform (public or private), developers can incorporate modern deployment models, including blue/green, canary (aka AB), and/or circuit breaker. Visit the URL: RedHatLoves.NET.
-
I’m a [fill in the blank], why should I care about .NET Core 2.0?
- IT/Ops teams - .NET Core 2.0 apps can be deployed, scaled, and managed like other container-based apps. Deployment is the same for on-premise or cloud.
- Developers - .NET developers maintain the freedom to develop with their language of choice and on the platform of their choice (e.g., Windows, macOS, Linux). They’ll want to move to .NET Core from .NET Framework as that’s where the future is - including microservices and containers.
- Development Mgmt - Building modern application development requires the latest technologies for deploying/scaling/managing, plus they need to introduce techniques such as including blue/green, canary (aka AB), and/or circuit breaker.
- Executives - Standardize on open hybrid cloud, even for what have been traditional Windows .NET applications. Moving to Red Hat platforms is easier than ever with Linux containers.
- Purchasing - They buy the same SKUs as always - .NET Core is already included. And easy to upgrade from RHEL to OpenShift offerings.
- ISVs - Port, port, port their traditional server-based or back-end .NET application to RHEL and OCP. Their solutions will benefit from scale-up capabilities of Linux Containers, and will differentiate themselves by being able to deliver on-premise or in the cloud.
DEVELOPING AND DEPLOYING .NET CORE
-
What advice is there for porting .NET apps to Red Hat Platforms?
In order to make an informed decision, we suggest you
- Look at the Red Hat blog article by Todd Mancini: Observations on Porting from .NET Framework to .NET Core.
- Here’s Microsoft’s introduction to .NET Standard 2.0.
- Microsoft created API Port to see how compatible your code base is with the various versions of .NET Standard.
- Look at Microsoft’s .NET Standard documentation to ensure you can reach the platforms that are important to you.
-
When should I choose .NET Framework versus .NET Core?
Choose .NET Core for your server applications when:
- You want to use Linux containers and/or run on Red Hat Enterprise Linux, OpenShift Container Platform, etc.
- You are creating microservices.
- You need better performance and scalability.
- You need application and version isolation of .NET applications.
-
Are my apps portable from .NET Framework?
- Perhaps, and possibly likely, for server-based applications, but .NET Core 2.0 is required. Seventy percent of NuGet packages are compatible with .NET Standard 2.0. (That’s a LOT of packages.)
- A compatibility shim allows reuse in .NET Core without the need to compile. View this Microsoft page for more information.
-
I tried .NET Core 1.0 and had little success. Why will .NET Core 2.0 be better?
- .NET Core 2.0 is based on .NET Standard 2.0, which has 20,000 more APIs than 1.0. Version 1.0 was more a beta than enterprise ready. .NET Framework uses .NET Standard 2.0 now, so capability and portability are greatly enhanced.
- See this Microsoft introduction and separate video on .NET Standard 2.0 features. And here’s a screenshot too.
-
Source: Scott Hunter slides from RH Summit 2017 session w/ Don Schenck
-
How do I get .NET Core 2.0 from Red Hat?
Two images will be available initially (See Packaging section)
- registry.access.redhat.com/dotnet/dotnet-20-rhel7 (source-to-image builder) and
-
registry.access.redhat.com/dotnet/dotnet-20-runtime-rhel7 (.NET Core 2.0 runtime image)
Plus there are RPMs for yum install. See more infomation Red Hat’s .NET Core 2.0 Getting Started Guide.
-
Can I create my own NuGet server on RHEL or OCP?
- No, NuGet Server only runs on Microsoft Windows at this time.
- You can obtain packages from nuget.org.
- See this blog article, Introduction to NuGet with .NET Core on RHEL.
-
What is the .NET Core 2.0 SDK and how do I get it?
- The .NET SDK, traditionally a separate component for the .NET Framework platform, is bundled in .NET Core 2.0 installation. The Red Hat .NET Core distribution includes both the SDK and the Runtime.
-
Can I use DevStudio/Eclipse IDE for .NET development?
- Yes, but without the essential features you’ve come to expect from IDEs like VS Code. Pending upstream releases of Eclipse will include support for the Omnisharp Language Server, which will address this.
PACKAGING
-
Microsoft has stated these are the main .NET Core components. How is Red Hat packaging them?
- Red Hat .NET Core 2.0 will include all of the components as one installation.
-
Is .NET Core 2.0 available on RHEL?
- Yes, .NET Core 2.0 will be available as RPMs, and the container images will be available in the Red Hat Registry.
-
Is .NET Core 2.0 available on OpenShift?
- Yes. Initially, OpenShift users will manually load the imagestreams that Red Hat will provide as part of .NET Core 2.0 general availability.
- During a soon-to-be-determined release, .NET Core 2.0 will be integrated with OCP (imagestream) and will be dependent on OCP release schedule.
-
How will .NET Core 2.0 be packaged for our customers?
- Red Hat will distribute both RPM and Linux container imagestreams.
-
Does Red Hat’s .NET Core 2.0 implementation have everything that Windows and other Linux distributions have?
- Red Hat’s distribution of .NET Core 2.0 is essentially the same as other Linux distributions, but we do also make it available via Linux containers.
- The Red Hat distribution does not yet include ASP.NET, but it is transparently available to developers via NuGet.
- Runtime Package Store. The package store is a set of components (that we don’t ship) that helps make user-published artifacts smaller. Red Hat’s .NET Core 2.0 Getting Started Guide supplies workarounds for this. (More information can be found here: https://github.com/dotnet/designs/issues/8. Because it is missing from our distribution, we expect some standalone published applications to fail at runtime. Microsoft provides some alternatives here: https://github.com/dotnet/designs/issues/10.)
LIBRARIES AND STANDARDS
-
Are .NET Core 2.0 libraries compatible with prior .NET Standard versions?
- Yes. Per Microsoft, “.NET Standard versions are logically concentric circles: higher versions incorporate all APIs from previous versions. There are no breaking changes between versions.”
-
Can I use libraries from pre-2.0 .NET Standard versions?
- Using pre-2.0 .NET Standard versions with .NET Core 2.0 is not recommended (and should be avoided).
-
Is .NET Standard 2.0 bundled with the above?
- No, .NET Standard 2.0 is a specification only. With .NET Standard 2.0, application compatibility has improved across .NET Core 2.0 and .NET Framework 4.6.1.<
-
Where can I find more information on .NET Standard 2.0?
-
Microsoft’s github site does a good job providing more info: https://github.com/dotnet/standard/blob/master/docs/faq.md.
-
RESOURCES
-
Where can I find more information about Red Hat’s .NET Core 2.0?
- Visit RedHatLoves.NET (This redirects to the general Topic page for .NET Core:)
- The Red Hat Developer Program technology page on .NET Core.
- Red Hat blogs on .NET Core:
- Send email to dotnet AT redhat DOT com