DT.AzureStorage: netstandard2.0 message format is not backwards compatible with net462
- Vorherrschende Sprache
- C#
- Sterne
- 1.7k
- Forks
- 335
- Ø Merge
- 2 T. 23 Std.
- Gemergte PRs (30 T.)
- 6
Beschreibung
### Description
Upgrading an existing app from .NET Framework to .NET Core or higher may cause existing orchestrations to get stuck due to message serialization compatibility issues.
Related: https://stackoverflow.com/questions/50190568/net-standard-4-7-1-could-not-load-system-private-corelib-during-serialization
New extensibility may be required to help mitigate this problem for users that need to migrate from .NET Framework to modern .NET versions.
### Expected behavior
Switching from .NET Framework to a newer version, like .NET 6, ideally should be safe and not require any special interventions.
### Actual behavior
Changes in the assembly name for primitive types like `Int32` and `String` from .NET Framework to .NET Core unfortunately result in deserialization problems because of the JSON settings used by DT.AzureStorage.
Example:

### Known workarounds
Implement a custom type binder, which is a new feature introduced [here](https://github.com/Azure/durabletask/pull/878). The test code in the PR shows how this specific problem can be mitigated.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Start with the custom type binder and test code referenced in PR #878, then compare the JSON settings used by DT.AzureStorage for netstandard2.0 and net462. Done means an orchestration created on .NET Framework can be deserialized after migration to a modern .NET version without requiring a special user intervention.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- azure, csharp, json
- Bereich
- backend, cloud
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100