An Open Source Project that Helps .NET Developers Build Resilient Microservices for the Cloud

Steeltoe connects to registries like Netflix Eureka to register and discover services. This makes the interactions between your microservices reliable and fault tolerant. Use it to ensure that consumers of your services know exactly where to find healthy service instances.

Steeltoe makes microservices for .NET painless. For all their benefits, microservice architectures expose many distributed computing problems that traditional monoliths avoided. Steeltoe brings the power of resilient, scalable microservices to .NET developers, without all the headache. Steeltoe includes:

“...perhaps the most compelling innovation with this round involves support for a library you may not have heard of: Steeltoe. It is an open source effort, stewarded by Pivotal, to construct a Netflix-inspired microservices model for full-fledged .NET Framework applications — not just .NET Core, not Xamarin, but the full enchilada.“

Steeltoe Configuration builds upon the .NET configuration API. The service enables developers to configure an application with values from a variety of sources, using Configuration Providers. Each provider reads a set of name-value pairs from a given source location. The data is then added to a multi-level configuration dictionary.

Each value contained in the configuration is tied to a string-typed key or name. The values are organized by key into a hierarchical list of name-value pairs. The components of the keys are separated by a colon (e.g. spring:application: key = value).

Microservices frequently depend on other services, but keeping track of dependent services can be a pain (especially when running at scale). How do service consumers find and load balance requests across healthy instances of a dependent service?

Eureka, Netflix's implementation of the Service Discovery application pattern, provides a centralized repository for microservices to register themselves and look up other registered services.

Steeltoe provides a Service Discovery client so your .NET app can connect to a Eureka server and register itself, or fetch a list of healthy service instances.

The Steeltoe Circuit Breaker bring Hystrix to .NET. The service aggregates all the metrics from your microservices into a dashboard so you can see how your app is behaving.

Cloud-native architectures are typically composed of multiple layers of distributed services. End-user requests may comprise multiple calls to these services. If a lower-level service fails, this failure can cascade up to the end user and spread to other services. Heavy traffic to a failing service can also make it difficult to repair. With the Circuit Breaker frameworks, you can prevent failures from cascading and provide fallback behavior until a failing service is restored to normal operation.

When applied to a service, a circuit breaker watches for failing calls to the service. If failures reach a certain threshold, it “opens” the circuit and automatically redirects calls to the specified fallback mechanism. This gives the failing service time to recover.

Connectors enable your apps to discover services bound to your apps on Pivotal Cloud Foundry. Connectors also support settings-based configuration. That means developers can supply configuration settings at development and testing time, but then have those settings overridden when pushing the application to Pivotal Cloud Foundry.

All connectors use configuration information from Pivotal Cloud Foundry’s VCAP_SERVICES environment variable to detect and configure the available services. This a standard across the platform that is used to hold connection and identification information for all service instances.