Azure / azure-functions-signalrservice-extension

Azure Functions bindings for SignalR Service. Project moved to https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/signalr/Microsoft.Azure.WebJobs.Extensions.SignalRService .
MIT License
97 stars 46 forks source link

MessagePack v2 support? #286

Open IGx89 opened 2 years ago

IGx89 commented 2 years ago

Hello! I'm in the process of adding MessagePack functionality to my function app. When adding the latest version (2.3.85) I noticed that my function app already had 1.9.11, by way of Microsoft.Azure.SignalR.Serverless.Protocols v1.6.0. I'm guessing that means I'm stuck on MessagePack v1? If so, do you have plans to update that package to MessagePack v2 (and a modern version of (Microsoft.AspNetCore.SignalR.Protocols.MessagePack) anytime soon? It seems a bit odd for this modern library to be dependent on a (EOL?) .NET Core 2-era dependency.

Thanks!

IGx89 commented 2 years ago

Looks like it was explicitly downgraded in #109 two years ago. Is the downgrade reason still relevant?

Y-Sindo commented 2 years ago

We will remove the dependency for the MessagePack in the next release.

Y-Sindo commented 2 years ago

@IGx89 Currently we have a preview version which removes the dependency of MessagePack package by including the source codes directly in our codes. You should be able to override the Microsoft.AspNetCore.SignalR.Protocols.MessagePack version by referencing it in your own project. Could you please have a try for the preview version and tell us if it meets your requirement?

Command to install the preview version via Dotnet CLI:

dotnet add package Microsoft.Azure.WebJobs.Extensions.SignalRService --version 1.9.0-alpha.20220616.1 --source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json

Additional note: The reason why we don't update Microsoft.AspNetCore.SignalR.Protocols.MessagePack to a version which depends on MessagePack V2:

Microsoft.AspNetCore.SignalR.Protocols.MessagePack 3.1.26 for .NET Core 3.1 still depends on MessagePack V1, while .NET Core 3.1 is a Long Time Support version that we need to support. And Microsoft.AspNetCore.SignalR.Protocols.MessagePack 1.1.5 is not only for .NET Core 2.1, but also for .NET Framework, and thus is a LTS version.

IGx89 commented 2 years ago

Thanks a lot! That approach sounds OK to me, confirmed that it works locally. Would maybe be a bit cleaner if you had a separate .NET 6 TFM that changed Microsoft.AspNetCore.SignalR.Protocols.MessagePack to v6 so this would happen automatically without having to override the package version, but understand how an approach like that may be more trouble than it's worth. If you say Microsoft.Azure.WebJobs.Extensions.SignalRService is compatible with both v1 and v6 of Microsoft.AspNetCore.SignalR.Protocols.MessagePack, that's good enough for me :)