Browse Source

Resolve #1503 Reuse Contract Resolver, improve performance.

pull/1505/head
maliming 7 years ago
parent
commit
e27de68142
  1. 11
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingContractResolver.cs
  2. 2
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/JsonNetAuditSerializer.cs
  3. 5
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs
  4. 5
      framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/NewtonsoftJsonSerializer.cs
  5. 7
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs
  6. 5
      framework/test/Volo.Abp.AspNetCore.Tests/Volo/Abp/AspNetCore/AbpAspNetCoreTestBase.cs

11
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingContractResolver.cs

@ -1,4 +1,5 @@
using System;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Reflection;
using Newtonsoft.Json;
@ -35,5 +36,13 @@ namespace Volo.Abp.Auditing
return property;
}
private static readonly ConcurrentDictionary<List<Type>, AuditingContractResolver> AuditingContractResolverdDictionary = new ConcurrentDictionary<List<Type>, AuditingContractResolver>();
public static AuditingContractResolver GetSharedAuditingContractResolver(List<Type> ignoredTypes)
{
return AuditingContractResolverdDictionary.GetOrAdd(ignoredTypes,
x => new AuditingContractResolver(ignoredTypes));
}
}
}

2
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/JsonNetAuditSerializer.cs

@ -18,7 +18,7 @@ namespace Volo.Abp.Auditing
{
var options = new JsonSerializerSettings
{
ContractResolver = new AuditingContractResolver(Options.IgnoredTypes)
ContractResolver = AuditingContractResolver.GetSharedAuditingContractResolver(Options.IgnoredTypes)
};
return JsonConvert.SerializeObject(obj, options);

5
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs

@ -18,6 +18,9 @@ namespace Volo.Abp.Http.Client.DynamicProxying
protected IApiDescriptionCache Cache { get; }
private static readonly CamelCasePropertyNamesContractResolver SharedCamelCasePropertyNamesContractResolver =
new CamelCasePropertyNamesContractResolver();
public ApiDescriptionFinder(
IApiDescriptionCache cache,
IDynamicProxyHttpClientFactory httpClientFactory)
@ -97,7 +100,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
typeof(ApplicationApiDescriptionModel),
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
ContractResolver = SharedCamelCasePropertyNamesContractResolver
});
return (ApplicationApiDescriptionModel)result;

5
framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/NewtonsoftJsonSerializer.cs

@ -9,6 +9,9 @@ namespace Volo.Abp.Json.Newtonsoft
{
private readonly AbpJsonIsoDateTimeConverter _dateTimeConverter;
private static readonly CamelCaseExceptDictionaryKeysResolver SharedCamelCaseExceptDictionaryKeysResolver =
new CamelCaseExceptDictionaryKeysResolver();
public NewtonsoftJsonSerializer(AbpJsonIsoDateTimeConverter dateTimeConverter)
{
_dateTimeConverter = dateTimeConverter;
@ -37,7 +40,7 @@ namespace Volo.Abp.Json.Newtonsoft
if (camelCase)
{
settings.ContractResolver = new CamelCaseExceptDictionaryKeysResolver();
settings.ContractResolver = SharedCamelCaseExceptDictionaryKeysResolver;
}
if (indented)

7
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.Extensions.Localization;
@ -9,6 +9,9 @@ namespace Volo.Abp.Localization.Json
{
public static class JsonLocalizationDictionaryBuilder
{
private static readonly CamelCasePropertyNamesContractResolver SharedCamelCasePropertyNamesContractResolver =
new CamelCasePropertyNamesContractResolver();
/// <summary>
/// Builds an <see cref="JsonLocalizationDictionaryBuilder" /> from given file.
/// </summary>
@ -38,7 +41,7 @@ namespace Volo.Abp.Localization.Json
jsonString,
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
ContractResolver = SharedCamelCasePropertyNamesContractResolver
});
}
catch (JsonException ex)

5
framework/test/Volo.Abp.AspNetCore.Tests/Volo/Abp/AspNetCore/AbpAspNetCoreTestBase.cs

@ -11,12 +11,15 @@ namespace Volo.Abp.AspNetCore
public abstract class AbpAspNetCoreTestBase<TStartup> : AbpAspNetCoreIntegratedTestBase<TStartup>
where TStartup : class
{
private static readonly CamelCasePropertyNamesContractResolver SharedCamelCasePropertyNamesContractResolver =
new CamelCasePropertyNamesContractResolver();
protected virtual async Task<T> GetResponseAsObjectAsync<T>(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK)
{
var strResponse = await GetResponseAsStringAsync(url, expectedStatusCode);
return JsonConvert.DeserializeObject<T>(strResponse, new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
ContractResolver = SharedCamelCasePropertyNamesContractResolver
});
}

Loading…
Cancel
Save