Skip to content

Commit da34d09

Browse files
authored
Merge pull request #68 from dotnetcore/dev
Feature/Configuration
2 parents 7c7f2dc + 0c878b2 commit da34d09

File tree

60 files changed

+1555
-169
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1555
-169
lines changed

build/releasenotes.props

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
<Project>
22
<PropertyGroup>
33
<EasyCachingCorePackageNotes>
4-
1. TrySet/TrySetAsync.
4+
1. Improve Configuration.
55
</EasyCachingCorePackageNotes>
66
<EasyCachingMemcachedPackageNotes>
7-
1. TrySet/TrySetAsync.
7+
1. Improve Configuration.
88
</EasyCachingMemcachedPackageNotes>
99
<EasyCachingRedisPackageNotes>
10-
1. TrySet/TrySetAsync.
10+
1. Improve Configuration.
1111
</EasyCachingRedisPackageNotes>
1212
<EasyCachingSQLitePackageNotes>
13-
1. TrySet/TrySetAsync.
13+
1. Improve Configuration.
1414
</EasyCachingSQLitePackageNotes>
1515
<EasyCachingInMemoryPackageNotes>
16-
1. Fix bug of TrySet/TrySetAsync.
16+
1. Improve Configuration.
1717
</EasyCachingInMemoryPackageNotes>
1818
<EasyCachingHybridPackageNotes>
19-
1. TrySet/TrySetAsync.
19+
1. Improve Configuration.
2020
</EasyCachingHybridPackageNotes>
2121
<EasyCachingAspectCorePackageNotes>
2222
1. Remove Dependency of IEasyCaching.
@@ -28,13 +28,13 @@
2828
1. Support .NET Core 2.1
2929
</EasyCachingResponseCachingPackageNotes>
3030
<EasyCachingJsonPackageNotes>
31-
1. Configurable JSON serializer
31+
1. Improve Configuration.
3232
</EasyCachingJsonPackageNotes>
3333
<EasyCachingMessagePackPackageNotes>
34-
1. Support .NET Core 2.1
34+
1. Improve Configuration.
3535
</EasyCachingMessagePackPackageNotes>
3636
<EasyCachingProtobufPackageNotes>
37-
1. Support .NET Core 2.1
37+
1. Improve Configuration.
3838
</EasyCachingProtobufPackageNotes>
3939
</PropertyGroup>
4040
</Project>

build/version.props

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<Project>
22
<PropertyGroup>
3-
<EasyCachingCorePackageVersion>0.4.2</EasyCachingCorePackageVersion>
4-
<EasyCachingMemcachedPackageVersion>0.4.2</EasyCachingMemcachedPackageVersion>
5-
<EasyCachingRedisPackageVersion>0.4.2</EasyCachingRedisPackageVersion>
6-
<EasyCachingSQLitePackageVersion>0.4.2</EasyCachingSQLitePackageVersion>
7-
<EasyCachingInMemoryPackageVersion>0.4.3</EasyCachingInMemoryPackageVersion>
8-
<EasyCachingHybridPackageVersion>0.4.2</EasyCachingHybridPackageVersion>
3+
<EasyCachingCorePackageVersion>0.4.5</EasyCachingCorePackageVersion>
4+
<EasyCachingMemcachedPackageVersion>0.4.5</EasyCachingMemcachedPackageVersion>
5+
<EasyCachingRedisPackageVersion>0.4.5</EasyCachingRedisPackageVersion>
6+
<EasyCachingSQLitePackageVersion>0.4.5</EasyCachingSQLitePackageVersion>
7+
<EasyCachingInMemoryPackageVersion>0.4.5</EasyCachingInMemoryPackageVersion>
8+
<EasyCachingHybridPackageVersion>0.4.5</EasyCachingHybridPackageVersion>
99
<EasyCachingAspectCorePackageVersion>0.3.2</EasyCachingAspectCorePackageVersion>
1010
<EasyCachingCastlePackageVersion>0.3.2</EasyCachingCastlePackageVersion>
1111
<EasyCachingResponseCachingPackageVersion>0.3.0</EasyCachingResponseCachingPackageVersion>
12-
<EasyCachingJsonPackageVersion>0.3.1</EasyCachingJsonPackageVersion>
13-
<EasyCachingMessagePackPackageVersion>0.3.0</EasyCachingMessagePackPackageVersion>
14-
<EasyCachingProtobufPackageVersion>0.3.0</EasyCachingProtobufPackageVersion>
12+
<EasyCachingJsonPackageVersion>0.3.5</EasyCachingJsonPackageVersion>
13+
<EasyCachingMessagePackPackageVersion>0.3.5</EasyCachingMessagePackPackageVersion>
14+
<EasyCachingProtobufPackageVersion>0.3.5</EasyCachingProtobufPackageVersion>
1515
</PropertyGroup>
1616
</Project>

sample/EasyCaching.Demo.Providers/Startup.cs

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using EasyCaching.Memcached;
88
using EasyCaching.Redis;
99
using EasyCaching.SQLite;
10+
using EasyCaching.Serialization.MessagePack;
1011
using Microsoft.AspNetCore.Builder;
1112
using Microsoft.AspNetCore.Hosting;
1213
using Microsoft.AspNetCore.Mvc;
@@ -28,11 +29,50 @@ public void ConfigureServices(IServiceCollection services)
2829
{
2930
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
3031

32+
//new configuration
33+
services.AddEasyCaching(option=>
34+
{
35+
//use memory cache
36+
option.UseInMemory("default");
37+
38+
//use memory cache
39+
option.UseInMemory("cus");
40+
41+
//use redis cache
42+
option.UseRedis(config =>
43+
{
44+
config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
45+
}, "redis1")
46+
.WithMessagePack()//with messagepack serialization
47+
;
48+
49+
//use redis cache
50+
option.UseRedis(config =>
51+
{
52+
config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6380));
53+
}, "redis2");
54+
55+
////use sqlite cache
56+
//option.UseSQLite(config =>
57+
//{
58+
// config.DBConfig = new SQLiteDBOptions { FileName = "my.db" };
59+
//});
60+
61+
////use memcached cached
62+
//option.UseMemcached(config =>
63+
//{
64+
// config.DBConfig.AddServer("127.0.0.1", 11211);
65+
//});
66+
67+
//option.UseMemcached(Configuration);
68+
69+
});
70+
3171
//1. Important step for using InMemory Cache
3272
//services.AddDefaultInMemoryCache();
3373

3474
//services.AddDefaultInMemoryCacheWithFactory();
35-
services.AddDefaultInMemoryCacheWithFactory("cus");
75+
//services.AddDefaultInMemoryCacheWithFactory("cus");
3676

3777
//services.AddDefaultInMemoryCache(Configuration);
3878

@@ -51,17 +91,17 @@ public void ConfigureServices(IServiceCollection services)
5191
// option.DBConfig.Password = "";
5292
//});
5393

54-
services.AddDefaultRedisCacheWithFactory("redis1",option =>
55-
{
56-
option.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
57-
option.DBConfig.Password = "";
58-
});
94+
//services.AddDefaultRedisCacheWithFactory("redis1",option =>
95+
//{
96+
// option.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
97+
// option.DBConfig.Password = "";
98+
//});
5999

60-
services.AddDefaultRedisCacheWithFactory("redis2", option =>
61-
{
62-
option.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6380));
63-
option.DBConfig.Password = "";
64-
});
100+
//services.AddDefaultRedisCacheWithFactory("redis2", option =>
101+
//{
102+
// option.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6380));
103+
// option.DBConfig.Password = "";
104+
//});
65105

66106
//services.AddDefaultRedisCache(Configuration);
67107

@@ -105,6 +145,8 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerF
105145
////4. Important step for using SQLite Cache
106146
//app.UseSQLiteCache();
107147

148+
//app.UseEasyCaching();
149+
108150
app.UseMvc();
109151
}
110152
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
namespace EasyCaching.Core
2+
{
3+
using Microsoft.AspNetCore.Builder;
4+
using System;
5+
6+
public static class EasyCachingApplicationBuliderExtensions
7+
{
8+
/// <summary>
9+
/// Uses the easy caching.
10+
/// </summary>
11+
/// <returns>The easy caching.</returns>
12+
/// <param name="app">App.</param>
13+
public static IApplicationBuilder UseEasyCaching(this IApplicationBuilder app)
14+
{
15+
if (app == null)
16+
{
17+
throw new ArgumentNullException(nameof(app));
18+
}
19+
20+
var options = app.ApplicationServices.GetService(typeof(EasyCachingOptions));
21+
22+
if (options != null && options is EasyCachingOptions)
23+
{
24+
foreach (var serviceExtension in ((EasyCachingOptions)options).Extensions)
25+
{
26+
serviceExtension.WithServices(app);
27+
}
28+
}
29+
30+
return app;
31+
}
32+
}
33+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
namespace EasyCaching.Core
2+
{
3+
using System.Collections.Generic;
4+
5+
/// <summary>
6+
/// EasyCaching options.
7+
/// </summary>
8+
public class EasyCachingOptions
9+
{
10+
/// <summary>
11+
/// Initializes a new instance of the <see cref="T:EasyCaching.Core.EasyCachingOptions"/> class.
12+
/// </summary>
13+
public EasyCachingOptions()
14+
{
15+
Extensions = new List<IEasyCachingOptionsExtension>();
16+
}
17+
18+
/// <summary>
19+
/// Gets the extensions.
20+
/// </summary>
21+
/// <value>The extensions.</value>
22+
internal IList<IEasyCachingOptionsExtension> Extensions { get; }
23+
24+
/// <summary>
25+
/// Registers the extension.
26+
/// </summary>
27+
/// <param name="extension">Extension.</param>
28+
public void RegisterExtension(IEasyCachingOptionsExtension extension)
29+
{
30+
Internal.ArgumentCheck.NotNull(extension, nameof(extension));
31+
32+
Extensions.Add(extension);
33+
}
34+
}
35+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
namespace EasyCaching.Core
2+
{
3+
using Microsoft.Extensions.DependencyInjection;
4+
using System;
5+
6+
/// <summary>
7+
/// EasyCaching service collection extensions.
8+
/// </summary>
9+
public static class EasyCachingServiceCollectionExtensions
10+
{
11+
/// <summary>
12+
/// Adds the easycaching.
13+
/// </summary>
14+
/// <returns>The easy caching.</returns>
15+
/// <param name="services">Services.</param>
16+
/// <param name="setupAction">Setup action.</param>
17+
public static IServiceCollection AddEasyCaching(this IServiceCollection services, Action<EasyCachingOptions> setupAction)
18+
{
19+
if (setupAction == null)
20+
{
21+
throw new ArgumentNullException(nameof(setupAction));
22+
}
23+
24+
//Options and extension service
25+
var options = new EasyCachingOptions();
26+
setupAction(options);
27+
foreach (var serviceExtension in options.Extensions)
28+
{
29+
serviceExtension.AddServices(services);
30+
}
31+
services.AddSingleton(options);
32+
33+
return services;
34+
}
35+
}
36+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
namespace EasyCaching.Core
2+
{
3+
using Microsoft.AspNetCore.Builder;
4+
using Microsoft.Extensions.DependencyInjection;
5+
6+
/// <summary>
7+
/// EasyCaching options extension.
8+
/// </summary>
9+
public interface IEasyCachingOptionsExtension
10+
{
11+
/// <summary>
12+
/// Adds the services.
13+
/// </summary>
14+
/// <param name="services">Services.</param>
15+
void AddServices(IServiceCollection services);
16+
17+
/// <summary>
18+
/// Withs the services.
19+
/// </summary>
20+
/// <param name="app">App.</param>
21+
void WithServices(IApplicationBuilder app);
22+
}
23+
}

src/EasyCaching.Core/EasyCaching.Core.csproj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,10 @@
2222

2323
<ItemGroup>
2424
<Folder Include="Internal\" />
25+
<Folder Include="Configurations\" />
2526
</ItemGroup>
2627
<ItemGroup>
2728
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.1" />
28-
</ItemGroup>
29-
<ItemGroup>
30-
<Compile Remove="BaseEasyCachingProvider.cs" />
31-
</ItemGroup>
29+
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.1.1" />
30+
</ItemGroup>
3231
</Project>

src/EasyCaching.Core/IEasyCachingProviderFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public IEasyCachingProvider GetCachingProvider(string name)
2121
{
2222
Internal.ArgumentCheck.NotNullOrWhiteSpace(name, nameof(name));
2323

24-
var provider = _cachingProviders.FirstOrDefault(x => x.Name.Equals(name));
24+
var provider = _cachingProviders.FirstOrDefault(x => x.Name.Equals(name, System.StringComparison.OrdinalIgnoreCase));
2525

2626
if (provider == null) throw new System.ArgumentException("can not find a match caching provider!");
2727

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
namespace EasyCaching.HybridCache
2+
{
3+
using EasyCaching.Core;
4+
5+
/// <summary>
6+
/// EasyCaching options extensions.
7+
/// </summary>
8+
public static class EasyCachingOptionsExtensions
9+
{
10+
/// <summary>
11+
/// Uses the hybrid.
12+
/// </summary>
13+
/// <returns>The hybrid.</returns>
14+
/// <param name="options">Options.</param>
15+
public static EasyCachingOptions UseHybrid(this EasyCachingOptions options)
16+
{
17+
options.RegisterExtension(new HybridCacheOptionsExtension());
18+
19+
return options;
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)