Exemplo n.º 1
0
        /// <summary>
        /// Returns the default serializer settings.
        /// </summary>
        /// <returns>The default serializer settings.</returns>
        public static JsonSerializerSettings GetDefaultSerializerSettings(ITypeResolver typeResolver, IGrainFactory grainFactory)
        {
            var serializationBinder = new OrleansJsonSerializationBinder(typeResolver);
            var settings            = new JsonSerializerSettings
            {
                TypeNameHandling               = TypeNameHandling.All,
                PreserveReferencesHandling     = PreserveReferencesHandling.Objects,
                DateFormatHandling             = DateFormatHandling.IsoDateFormat,
                DefaultValueHandling           = DefaultValueHandling.Ignore,
                MissingMemberHandling          = MissingMemberHandling.Ignore,
                NullValueHandling              = NullValueHandling.Ignore,
                ConstructorHandling            = ConstructorHandling.AllowNonPublicDefaultConstructor,
                TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple,
                Formatting          = Formatting.None,
                SerializationBinder = serializationBinder
            };

            settings.Converters.Add(new IPAddressConverter());
            settings.Converters.Add(new IPEndPointConverter());
            settings.Converters.Add(new GrainIdConverter());
            settings.Converters.Add(new SiloAddressConverter());
            settings.Converters.Add(new UniqueKeyConverter());
            settings.Converters.Add(new GrainReferenceConverter(grainFactory, serializationBinder));

            return(settings);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Returns the default serializer settings.
        /// </summary>
        /// <returns>The default serializer settings.</returns>
        public static JsonSerializerSettings GetDefaultSerializerSettings(SerializationManager serializationManager, IGrainFactory grainFactory)
        {
            var typeResolver        = serializationManager.ServiceProvider.GetRequiredService <ITypeResolver>();
            var serializationBinder = new OrleansJsonSerializationBinder(typeResolver);
            var settings            = new JsonSerializerSettings
            {
                TypeNameHandling               = TypeNameHandling.All,
                PreserveReferencesHandling     = PreserveReferencesHandling.Objects,
                DateFormatHandling             = DateFormatHandling.IsoDateFormat,
                DefaultValueHandling           = DefaultValueHandling.Ignore,
                MissingMemberHandling          = MissingMemberHandling.Ignore,
                NullValueHandling              = NullValueHandling.Ignore,
                ConstructorHandling            = ConstructorHandling.AllowNonPublicDefaultConstructor,
                TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple,

                // Types such as GrainReference need context during deserialization, so provide that context now.
                Context             = new StreamingContext(StreamingContextStates.All, new SerializationContext(serializationManager)),
                Formatting          = Formatting.None,
                SerializationBinder = serializationBinder
            };

            settings.Converters.Add(new IPAddressConverter());
            settings.Converters.Add(new IPEndPointConverter());
            settings.Converters.Add(new GrainIdConverter());
            settings.Converters.Add(new SiloAddressConverter());
            settings.Converters.Add(new UniqueKeyConverter());
            settings.Converters.Add(new GrainReferenceConverter(grainFactory, serializationBinder));

            return(settings);
        }
Exemplo n.º 3
0
        public GrainReferenceConverter(IGrainFactory grainFactory, OrleansJsonSerializationBinder serializationBinder)
        {
            this.grainFactory = grainFactory;

            // Create a serializer for internal serialization which does not have a specified GrainReference serializer.
            // This internal serializer will use GrainReference's ISerializable implementation for serialization and deserialization.
            this.internalSerializer = JsonSerializer.Create(new JsonSerializerSettings
            {
                TypeNameHandling           = TypeNameHandling.All,
                PreserveReferencesHandling = PreserveReferencesHandling.None,
                DateFormatHandling         = DateFormatHandling.IsoDateFormat,
                DefaultValueHandling       = DefaultValueHandling.Ignore,
                MissingMemberHandling      = MissingMemberHandling.Ignore,
                NullValueHandling          = NullValueHandling.Ignore,
                ConstructorHandling        = ConstructorHandling.AllowNonPublicDefaultConstructor,
                Formatting          = Formatting.None,
                SerializationBinder = serializationBinder,
                Converters          =
                {
                    new IPAddressConverter(),
                    new IPEndPointConverter(),
                    new GrainIdConverter(),
                    new SiloAddressConverter(),
                    new UniqueKeyConverter()
                }
            });
        }
Exemplo n.º 4
0
        /// <summary>
        /// Returns the default serializer settings.
        /// </summary>
        /// <param name="services">
        /// The service provider.
        /// </param>
        /// <returns>The default serializer settings.</returns>
        public static JsonSerializerSettings GetDefaultSerializerSettings(IServiceProvider services)
        {
            var typeResolver        = services.GetRequiredService <TypeResolver>();
            var serializationBinder = new OrleansJsonSerializationBinder(typeResolver);
            var settings            = new JsonSerializerSettings
            {
                TypeNameHandling               = TypeNameHandling.All,
                PreserveReferencesHandling     = PreserveReferencesHandling.Objects,
                DateFormatHandling             = DateFormatHandling.IsoDateFormat,
                DefaultValueHandling           = DefaultValueHandling.Ignore,
                MissingMemberHandling          = MissingMemberHandling.Ignore,
                NullValueHandling              = NullValueHandling.Ignore,
                ConstructorHandling            = ConstructorHandling.AllowNonPublicDefaultConstructor,
                TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple,
                Formatting          = Formatting.None,
                SerializationBinder = serializationBinder
            };

            settings.Converters.Add(new IPAddressConverter());
            settings.Converters.Add(new IPEndPointConverter());
            settings.Converters.Add(new GrainIdConverter());
            settings.Converters.Add(new ActivationIdConverter());
            settings.Converters.Add(new SiloAddressJsonConverter());
            settings.Converters.Add(new MembershipVersionJsonConverter());
            settings.Converters.Add(new UniqueKeyConverter());
            settings.Converters.Add(new GrainReferenceJsonConverter(services.GetRequiredService <GrainReferenceActivator>()));

            return(settings);
        }