Silky Microservice Framework
A high-performance microservice framework for .NET — make distributed calls as simple as local ones
🚀 Interface as Service
Interfaces annotated with [ServiceRoute] automatically expose HTTP WebAPI and RPC endpoints — no Controller needed, convention over configuration
🔗 Transparent RPC
Dynamic proxy via DotNetty + Autofac — inject any service interface and call it like a local method, network details fully hidden
🏗️ Multiple Host Types
Web Host, General Host, WebSocket Host, and Gateway Host — choose the right host for every scenario
🗺️ Multi Registry Center
Built-in support for Zookeeper, Nacos, and Consul — switch by changing one config line, real-time online/offline awareness
🛡️ Service Governance
Out-of-the-box load balancing (polling/random/hash), circuit breaking, retry, rate limiting, and fallback — powered by Polly
⚡ Cache Interception
Distributed cache interception on RPC calls reduces network IO dramatically, boosting system throughput; Redis-backed
🔄 TCC Distributed Transaction
Framework-level TCC transaction support via AOP interceptor + Redis journal, guaranteeing cross-service data consistency
🔍 Full-Link Tracing
Integrates SkyAPM to trace HTTP, RPC, TCC, and EFCore operations end-to-end, pinpointing bottlenecks fast
🌐 WebSocket Support
Built-in WebSocket host with server-push capability, proxied through the gateway to front-end clients
📊 Dashboard
Built-in cluster management dashboard — visualize service instance health, CPU usage, and service entry configuration
📝 Swagger API Docs
Aggregates API documentation for all microservices at the gateway level with online debugging support
🔌 Highly Extensible
Fully compatible with the ASP.NET Core middleware pipeline; swap out any component and integrate EFCore, MassTransit, CAP, etc.
Minimal Code, Rapid Microservice Development
Just 3 lines of configuration to transform a standard .NET application into a microservice with service registration, discovery, and RPC:
// Program.cs
var hostBuilder = Host.CreateDefaultBuilder(args)
.ConfigureSilkyGeneralHostDefaults(); // General Host (RPC only)
await hostBuilder.Build().RunAsync();
Define a service interface with [ServiceRoute] — Silky generates the WebAPI and RPC endpoint automatically:
[ServiceRoute]
public interface IGreetingAppService
{
Task<string> SayHelloAsync(string name);
}
Other microservices call it via dependency injection — the framework routes the call to the correct instance at runtime:
public class OrderAppService : IOrderAppService
{
private readonly IGreetingAppService _greetingService; // Inject another microservice's interface
// ...
}
