Ver.4.0.1
The Beginning of the C-Core removal journey
We moved the gRPC library used by MagicOnion from the C-core to the C# implementation.
MagicOnion server is built on ASP.NET Core and Kestrel for high performance in combination with .NET 5.0.
MagicOnion.Server
is now built on ASP.NET Core gRPC services.- gRPC C-core dependency has been removed completely in the server.
MagicOnion.Client
for .NET Standard 2.1 is now depends onGrpc.Net.Client
.- gRPC C-core is no longer needed on .NET Standard 2.1 (.NET Core 3.x, Xamarin, ...) platform.
- The client library still supports .NET Standard 2.0 platforms (e.g. .NET Framework 4.6.1, .NET Core 2.x and Unity).
Improvements
- Adopt .NET 5.0 (#366)
- Enable nullable reference type annotations (MagicOnion.Server)
Breaking changes
MagicOnion.Hosting
and MagicOnion-standalone server are now dropped
Use MagicOnion.Server
and ASP.NET Core instead of that.
In other words, MagicOnion server doesn't support non-.NET Core platform (e.g. .NET Framework, Unity, Mono ...).
Reorganize project structure
The server/client monolithic package has been decoupled.
MagicOnion
: Meta package forMagicOnion.Server
andMagicOnion.Client
MagicOnion.Client
: MagicOnion client library for .NET Standard 2.0/2.1MagicOnion.Client.Unity
: MagicOnion client library for Unity 2018 or later (The codes are shared withMagicOnion.Client
)MagicOnion.Server
: MagicOnion server library for ASP.NET Core 3.1MagicOnion.Server.HttpGateway
: Swagger extension for MagicOnion.ServerMagicOnion.Server.Redis
: Redis extension for MagicOnion.ServerMagicOnion.Server.OpenTelemetry
: OpenTelemetry extension for MagicOnion.Server (experimental)MagicOnion.Server.Authentication
: Authentication extension for MagicOnion.Server (preview)MagicOnion.Shared
: Shared internal utilities for the client and server.
Use IMagicOnionClientLogger
instead of Grpc.Core.Logging.ILogger
Grpc.Core.Logging.ILogger
API is part of C-core library.
Remove DefaultGroupRepositoryFactory
If you are using MagicOnion.Redis, use UseRedisGroupRepository(Action<RedisGroupOptions> configure, bool registerAsDefault = false)
instead.
services.AddMagicOnion()
.UseRedisGroupRepository(options =>
{
options.ConnectionMultiplexer = StackExchange.Redis.ConnectionMultiplexer.Connect("localhost:6379");
});
// If you want to use Redis backplane by default, you can specify `registerAsDefault: true`.
services.AddMagicOnion()
.UseRedisGroupRepository(options => { ... }, registerAsDefault: true);
Fixes from 4.0.0
- Move namespace Microsoft.AspNetCore.Routing -> Microsoft.AspNetCore.Builder (#370)