lith 4 jaren geleden
bovenliggende
commit
437ed9cb7e

+ 7 - 7
dotnet/Library/Sers/Sers.Core/Sers.Core/Module/Rpc/RpcContextData.cs

@@ -5,31 +5,31 @@ using System.Runtime.CompilerServices;
 namespace Sers.Core.Module.Rpc
 {
     public class RpcContextData
-    {
-        //public RpcContextData() 
-        //{
-        //}
+    { 
 
 
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public string Serialize()
         {
             //return Vit.Core.Module.Serialization.Serialization.Instance.SerializeToString(this);
-            return Vit.Core.Module.Serialization.Serialization_Text.Instance.SerializeToString(this);        
+            //return Vit.Core.Module.Serialization.Serialization_Text.Instance.SerializeToString(this);        
+            return Vit.Core.Module.Serialization.Serialization_MessagePack.Instance.SerializeToString(this);
         }
 
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public byte[] ToBytes() 
         {
             //return Vit.Core.Module.Serialization.Serialization.Instance.SerializeToBytes(this);
-            return Vit.Core.Module.Serialization.Serialization_Text.Instance.SerializeToBytes(this);
+            //return Vit.Core.Module.Serialization.Serialization_Text.Instance.SerializeToBytes(this);
+            return Vit.Core.Module.Serialization.Serialization_MessagePack.Instance.SerializeToBytes(this);
         }
 
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static RpcContextData FromBytes(ReadOnlySpan<byte>data)
         {
             //return Vit.Core.Module.Serialization.Serialization.Instance.DeserializeFromSpan<RpcContextData>(data);
-            return Vit.Core.Module.Serialization.Serialization_Text.Instance.DeserializeFromSpan<RpcContextData>(data);
+            //return Vit.Core.Module.Serialization.Serialization_Text.Instance.DeserializeFromSpan<RpcContextData>(data);
+            return Vit.Core.Module.Serialization.Serialization_MessagePack.Instance.DeserializeFromSpan<RpcContextData>(data);
         }
 
 

+ 5 - 2
dotnet/Library/Vit/Vit.Core/Test/Vit.Core.Module.Serialization.Qps/Program.cs

@@ -52,7 +52,10 @@ namespace App
 
 
                 // 4线程 87万
-                var Instance = Vit.Core.Module.Serialization.Serialization_Text.Instance;
+                //var Instance = Vit.Core.Module.Serialization.Serialization_Text.Instance;
+
+                // 4线程 200万
+                var Instance = Vit.Core.Module.Serialization.Serialization_MessagePack.Instance;
 
                 while (true)
                 {
@@ -61,7 +64,7 @@ namespace App
                         for (var t = 0; t < 10000; t++)
                         {
                             var data = new RpcContextData { route = "/a" };
-
+                            //data.http.method = "GET";
                             //var str = Instance.SerializeToString(data);
 
                             var bytes = Instance.SerializeToBytes(data);

+ 1 - 4
dotnet/Library/Vit/Vit.Core/Test/Vit.Core.Module.Serialization.Qps/RpcContextData.cs

@@ -6,10 +6,7 @@ namespace Sers.Core.Module.Rpc
 {
     public class RpcContextData
     {
-        //public RpcContextData() 
-        //{
-        //}
-
+       
 
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public string Serialize()

+ 1 - 1
dotnet/Library/Vit/Vit.Core/Test/Vit.Core.MsTest/Module/SerializationTest.cs

@@ -64,7 +64,7 @@ namespace Vit.Core.MsTest.Module
 
             string str = obj.Serialize();
 
-            Serialization.Newtonsoft.SetDateTimeFormat("yyyy-MM-dd");
+            Serialization_Newtonsoft.Instance.SetDateTimeFormat("yyyy-MM-dd");
 
             string str2 = obj.Serialize();
             var jtObj = str2.Deserialize<JObject>();

+ 2 - 2
dotnet/Library/Vit/Vit.Core/Vit.Core/Module/Serialization/Serialization.cs

@@ -20,8 +20,8 @@ namespace Vit.Core.Module.Serialization
 
         public static Serialization Instance { get; set; } = Serialization_Newtonsoft.Instance;
 
-        public static readonly Serialization_Newtonsoft Newtonsoft = Serialization_Newtonsoft.Instance;
-        public static readonly Serialization_Text Text = Serialization_Text.Instance;
+        //public static readonly Serialization_Newtonsoft Newtonsoft = Serialization_Newtonsoft.Instance;
+        //public static readonly Serialization_Text Text = Serialization_Text.Instance;
 
 
  

+ 119 - 0
dotnet/Library/Vit/Vit.Core/Vit.Core/Module/Serialization/Serialization_MessagePack.cs

@@ -0,0 +1,119 @@
+using System;
+using System.Runtime.CompilerServices;
+using MessagePack;
+
+namespace Vit.Core.Module.Serialization
+{
+    /// <summary>
+    /// 参考 https://github.com/neuecc/MessagePack-CSharp
+    /// </summary>
+    public class Serialization_MessagePack : Serialization
+    {
+
+        public new static readonly Serialization_MessagePack Instance = new Serialization_MessagePack();
+
+
+
+        #region (x.2)object <--> String
+
+        #region SerializeToString
+
+        [MethodImpl(MethodImplOptions.AggressiveInlining)]
+        public override string SerializeToString<T>(T value)
+        {
+            //var bin = MessagePackSerializer.Serialize(
+            // value,
+            // MessagePack.Resolvers.ContractlessStandardResolver.Options);
+
+            return MessagePackSerializer.ConvertToJson(SerializeToBytes(value));
+        }
+
+
+
+        [MethodImpl(MethodImplOptions.AggressiveInlining)]
+        public override string SerializeToString(object value,Type type)
+        {     
+            return MessagePackSerializer.SerializeToJson(value);
+        }
+
+        #endregion
+
+        #region DeserializeFromString
+
+   
+
+        /// <summary>
+        /// 使用Newtonsoft反序列化。T也可为值类型(例如 int?、bool) 
+        /// </summary>
+        /// <param name="value"></param>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        [MethodImpl(MethodImplOptions.AggressiveInlining)]
+        public override object DeserializeFromString(string value, Type type)
+        {
+            throw new NotImplementedException();
+            //return MessagePackSerializer.Deserialize(type, value);
+        }
+
+        #endregion
+
+        #endregion
+
+
+
+        #region (x.3)object <--> bytes
+
+        #region SerializeToBytes
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        [MethodImpl(MethodImplOptions.AggressiveInlining)]
+        public override byte[] SerializeToBytes<T>(T value)
+        {
+            return MessagePackSerializer.Serialize<T>(value,
+             MessagePack.Resolvers.ContractlessStandardResolver.Options);          
+        }
+
+
+
+        [MethodImpl(MethodImplOptions.AggressiveInlining)]
+        public override byte[] SerializeToBytes(object value,Type type)
+        {
+            return MessagePackSerializer.Serialize(type,value,
+             MessagePack.Resolvers.ContractlessStandardResolver.Options);
+        }
+        #endregion
+
+
+        #region DeserializeFromBytes
+
+        [MethodImpl(MethodImplOptions.AggressiveInlining)]
+        public override T DeserializeFromBytes<T>(byte[] bytes)
+        {   
+            return MessagePackSerializer.Deserialize<T>(bytes,
+             MessagePack.Resolvers.ContractlessStandardResolver.Options);
+        }
+
+        [MethodImpl(MethodImplOptions.AggressiveInlining)]
+        public override object DeserializeFromBytes(byte[] bytes, Type type)
+        {
+            return MessagePackSerializer.Deserialize(type,bytes,
+             MessagePack.Resolvers.ContractlessStandardResolver.Options);
+        }
+        #endregion
+
+        #endregion
+
+
+
+
+ 
+
+
+ 
+
+    }
+}

+ 2 - 1
dotnet/Library/Vit/Vit.Core/Vit.Core/Vit.Core.csproj

@@ -22,7 +22,8 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
+    <PackageReference Include="MessagePack" Version="2.2.85" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
     <PackageReference Include="System.Buffers" Version="4.5.1" /> 
     <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="2.0.0" /> 
     <PackageReference Include="System.Text.Json" Version="5.0.1" />