.net cloud native microservices microsoft PCF pivotal application service Pivotal Cloud Foundry pks steeltoe windows_server

The .NET Renaissance is Happening Now. Here’s Why It’s a New Era for .NET Developers.

When Shawn Neal set out to bring DevOps tooling to the Windows community, he wasn’t sure what it would ultimately lead to. But he knew it was something he had to do.

“Open source is in my DNA. If something is useful and it works, we should share it with others,” Neal said.

A simple, yet powerful, sentiment. These days, it rings true in once-unthinkable places: with Windows and .NET communities.

Neal helped bring Vagrant, Packer and Chef to the world of Windows. Since then, he’s continued his efforts with open-source .NET at Pivotal. A hefty chunk of his expertise is captured in a new whitepaper he co-authored, “Cloud Native .NET The Right Way.”

On the eve of the first Cloud Native .NET track at Cloud Foundry Summit, we sat down with Neal to discuss the state of .NET, and why he’s bullish on its future.

How would you describe the state of the .NET Framework over last 10 years?

The .NET world takes its cues from Microsoft. The community looks to Microsoft to lead the way, to show them where to go, how to change.

To be sure, Microsoft introduced incremental upgrades, but seemed more focused on JavaScript, WPF, and other non-.NET technologies. CIOs and other executives saw .NET apps as a liability. There wasn’t a clear path to modernize applications. The anxiety with .NET shops was palpable. It was easy to understand why people would feel this way. When your most important business systems run on .NET, and you’re not sure of the tech’s future, there’s a real risk there.

A few developers started to “forklift” their apps to Azure. That can offer incremental benefits, but doesn’t give you cloud-native velocity. Other engineers tried ServiceStack and Nancy for microservices, with mixed results.

And then Microsoft announced .NET Core. This move, I think, was the catalyst for the .NET Renaissance we talk about. It changed everything. Overnight, executives had a way forward. And they could use their existing talent. Engineers had new tools to bring more agility to their business.

Now, you’re seeing .NET developers adopt modern practices and good architecture. Engineers are leveling up their skills. And the really interesting thing? Microsoft isn’t the only voice. Pivotal jumped in with Steeltoe to bring modern microservices patterns to .NET teams. There are other examples too, like HashiCorp and Chef.

Everything has changed for the better. It’s exciting.

Why do you say .NET Core was the catalyst for this?

The executives and operations folks I talk to feel this way for one simple reason: .NET Core isn’t tied to Windows. In 2018, the operating system is a commodity. That’s true of Windows or Linux. Now, people care about platforms and distributed systems.

When the OS doesn’t matter – when Windows doesn’t matter – you can break free from the APIs that tethered you to the OS. Deep integration with the OS is now an anti-pattern. It’s slow, inefficient, and you have to deal with licensing.

All that said, you are still going to have plenty of Windows Server deployments, and lots of .NET Framework apps for the next decade. That’s because of the ASP.NET Webforms module. A huge part of your portfolio uses this component. Even still, these apps can benefit from a modern platform like Pivotal Cloud Foundry. They run well, and you save money on infrastructure. Testing gets automated, and the security is vastly improved. You get zero downtime updates, and Windows Server updates automatically.

How are teams modernizing their .NET apps?

You can go a few different directions. It depends on the app’s architecture, and how frequently it’s updated.

For your most important apps, it’s common to rewrite your .NET Framework monolith into .NET Core microservices. We call this pattern replatforming. You can use the Pivotal Application Service, powered by Linux, for this scenario.

You’ll need to run Windows in some cases. Mainly we see ASP.NET Webforms, WCF services, or apps running on older versions of ASP.NET MVC fitting in this bucket. We usually steer folks to PAS for Windows.

There’s a lot of interest in Kubernetes and .NET Core. We’d recommend this path for stateful workloads, and apps that don’t change often. If you’re not going to get a big ROI from adopting cloud-native patterns, Kubernetes can be a good strategy. There’s lots happening here, and Pivotal’s Windows engineering team is also looking closely at this space. In the meantime, PKS is worth a look in these cases.

Pivotal Cloud Foundry offers an application runtime for Windows Server and Linux. Use this decision tree to map your .NET apps to the best service.

No matter what path you choose, think about those 12-factor patterns. You should selectively apply the most important factors for a given scenario. Be pragmatic about it. I’d say you should focus on storing config in the environment, treat backing services as attached resources, execute the app as one or more stateless processes, and treat logs as event streams.

Happily, these ideas have been around for a while. That means .NET teams can use the proven microservices patterns, pioneered by Netflix. With Pivotal's Steeltoe project, it’s much simpler to build .NET microservices.

Let’s change gears. You created the .NET Cookbook for Pivotal customers. Why?

Way back with PCF 1.6, we had an MVP that proved you could run a Windows workload on the platform. And it generated a ton of interest. After all, most big companies have a mix of tech.

In the months that followed, we saw firms running Windows apps in production on PCF.

As you can imagine, we fielded tons of questions. The .NET experience can be jarring, because there is bare-bones OS inside of the platform. You don’t do domain joins, you don’t use MSIs to install dependencies. It’s an adjustment because you don’t have an OS giving you everything!

So, we quickly compiled hundreds of useful troubleshooting tips in the Cookbook working shoulder-to-shoulder with .NET teams.

Use the .NET on PCF Cookbook to Get Started with Cloud-Native .NET

[Editor’s note: talk to your Pivotal account team if you’d like access to the .NET Cookbook.]

Customers tend to value the tips and tricks that help them bootstrap their .NET apps with Pivotal Cloud Foundry.

First, of course, is Getting Started. Here, we describe PCF platform concepts, application manifest, as well as some very basic things to get logs from your app. We also tell you how to avoid common pitfalls. Don’t use Windows auth, for example.

Second, is Config Management. How do you deal with dependencies? As a .NET dev, you have to contend with tech that’s not inherently 12 factor. Cloud Foundry as a few workarounds for your here. Mature high-velocity dev teams should use a CI tool to do this at scale.

Finally, Application Performance Management (APM). It’s really hard to run a production app without APM. So we have a few tips on how to get New Relic or AppDynamics up and running.

Our goal with the Cookbook is to help you get to cf push, as fast as possible. That’s the moment of truth when the developer realizes what’s possible with PCF. And we’re continuing to evolve the Cookbook as we learn more, and release new products, like PAS for Windows.

The .NET on PCF Cookbook: Simplifying Config for Cloud Native .NET apps.

What have you observed about Pivotal’s work with .NET teams in the enterprise?

The tech is great, but it comes down to people. What matters is how they work and how they get their stuff done. After they work with Pivotal, and know how to harness the automation of a modern platform, the feeling is often “we can move mountains!”

It’s very humbling to see, especially after the ups-and-downs the .NET community has experienced in recent times. Now, there’s a future for .NET teams, and they can continue to deliver better business outcomes.

Want to know more about cloud-native .NET? Check out the whitepaper, and attend the .NET track at CF Summit. Then, sign-up for a free trial of Pivotal Web Services, and push code to an app platform running .NET Core!