Releases: Cysharp/MagicOnion
Ver.4.1.0
Changes
Breaking changes
MagicOnion.Client (StreamingHubClient) versioning
MagicOnion.Client (4.1.x or later) is not compatible with MagicOnion.Server v4.0.x or ealier.
MagicOnion.Client 4.0.x or earlier + MagicOnion.Server v4.1 is still compatible.
Client 4.0.x | Client 4.1.x | |
---|---|---|
Server 4.0.x | ✓ | Not Compatible |
Server 4.1.x | ✓ | ✓ |
Introduce StreamingHubClient.ConnectAsync
Added ConnectAsync
method to wait for StreamingHub connection establishment. ConnectAsync
will be able to catch errors while trying to connect.
For example, if the channel has not been established, or if there is an authentication error.
try
{
var client = await StreamingHubClient.ConnectAsync<Hub, HubReceiver>(channel, this);
// Do stuff...
}
catch (RpcException ex)
{
// An error occurred while connecting to the server.
}
NOTE:
StreamingHubClient.Connect
is marked as deprecated. UseConnectAsync
instead.
Improvements
- Update NuGet packages #402
- Bump minimum unity version to 2018.4.13f1+ #401
- Add package.json to MagicOnion.Client.Unity #400
- Better StreamingHubCilent Errors #393
Fixes
Ver.4.0.4
Ver.4.0.3
Ver.4.0.2
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)
Ver.4.0.0
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.
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);
Ver.3.0.12
Renewd MagicOnion.OpenTelemery package
3.0.11
3.0.10
Changes
Improvements and fixes
- #279 Bump MessagePack from 2.1.80 to 2.1.90
New features
#274 MagicOnion.Server.Authentication (Preview)
MagicOnion.Server.Authentication
package provides a simple authentication mechanism on MagicOnion. Currently, the package is marked as preview.
$ dotnet add package -v 3.0.10-preview MagicOnion.Server.Authentication
MagicOnion.Server.Authentication
provides two API surfaces.
- Fundamental attributes (e.g.
AuthorizeAttribute
,AllowAnonymousAttribute
) - JWT-based authentication implementation framework
To use the framework, 3rd-party developers can implement JWT-based authentication with minimal effort. The developers just implement below interfaces.
MagicOnion.Server.Authentication.Jwt.IJwtAuthenticationProvider
System.Security.Principal.IIdentity
- Application-specific JWT payload
Sample code: https://github.com/Cysharp/MagicOnion/tree/master/samples/JwtAuthentication
3.0.9
Changes
Improvements and fixes
#269 Add NuGet package icon
#254 Add AssemblyDefinition for Unity package and organize MagicOnion, MagicOnion.Abstractions
⚠NOTE: If you installed the previous version in your project, delete existing MagicOnion package before upgrading.
- Separate
MagicOnion.Abstractions
fromMagicOnion
in Unity project.- The soruce code structures are same as solution/projects for .NET (
MagicOnion.sln
).
- The soruce code structures are same as solution/projects for .NET (
- Restore and separate MagicOnion extensions for Unity.
UnityDebugLogger
andChannelExtensions
are removed at v3.0. But we did not intented to that.- Now, the classes are placed into
MagicOnion.Unity
directory.