作为从 WCF 迁移到 gRPC 的一部分,我正在处理NetDataContractSerializer,它用于在客户端序列化对象并在服务器端反序列化。客户端和服务器都与通信中使用的类型共享相同的 DLL。
作为客户端应用程序更新过程的一部分,从服务器下载具有新/更改/删除通信对象定义的共享 DLL 的实际版本。用于更新过程的基本通信对象永远不会改变。所以更新期间的序列化/反序列化工作。
我想尽可能少地重写现有代码。我发现我可以用NetDataContractSerializer
Newtonsoft 的 Json.NET 序列化替换,如下所述:
如何将 JSON 反序列化为正确类型的对象,而无需事先定义类型?在这里https://www.newtonsoft.com/json/help/html/SerializeTypeNameHandling.htm。
但我想知道是否:
- 一般有更好的解决方案吗?
- 是否有一些基于 .NET 框架 4.8 的一部分的解决方案,并且也可以在 .NET 5.0 中工作而无需参考第三方 DLL?
- 是否有一些二进制序列化替代方案对消息大小更友好/更快?我不必以可读的形式发送消息。