diff --git a/samples/apis/Backet.Api/Controllers/BacketController.cs b/samples/apis/Backet.Api/Controllers/BacketController.cs index 9fa2994..405abc0 100644 --- a/samples/apis/Backet.Api/Controllers/BacketController.cs +++ b/samples/apis/Backet.Api/Controllers/BacketController.cs @@ -45,6 +45,7 @@ namespace Backet.Api.Controllers { var id = "da8a489fa7b4409294ee1b358fbbfba5"; var grain = clusterClient.GetGrain(id); + clusterClient. return grain.RemoveFirstItem(); } } diff --git a/src/Pole.Core/DependencyInjection/ISingleDependency.cs b/src/Pole.Core/DependencyInjection/ISingleDependency.cs deleted file mode 100644 index 33e6a12..0000000 --- a/src/Pole.Core/DependencyInjection/ISingleDependency.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Pole.Core.DependencyInjection -{ - public interface ISingleDependency - { - } -} diff --git a/src/Pole.Core/DependencyInjection/ITransientDependency.cs b/src/Pole.Core/DependencyInjection/ITransientDependency.cs deleted file mode 100644 index ef11b57..0000000 --- a/src/Pole.Core/DependencyInjection/ITransientDependency.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Pole.Core.DependencyInjection -{ - public interface ITransientDependency - { - } -} diff --git a/src/Pole.Core/Extensions/IServiceCollectionExtensions.cs b/src/Pole.Core/Extensions/IServiceCollectionExtensions.cs new file mode 100644 index 0000000..8464d7b --- /dev/null +++ b/src/Pole.Core/Extensions/IServiceCollectionExtensions.cs @@ -0,0 +1,36 @@ +using Microsoft.Extensions.DependencyInjection; +using Pole.Core.Abstraction; +using Pole.Core.Channels; +using Pole.Core.EventBus; +using Pole.Core.Processor; +using Pole.Core.Processor.Server; +using Pole.Core.Serialization; +using Pole.Core.UnitOfWork; +using Pole.Core.Utils; +using Pole.Core.Utils.Abstraction; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Pole.Core.Extensions +{ + public static class IServiceCollectionExtensions + { + public static IServiceCollection AddPole(this IServiceCollection services,Action config) + { + services.AddSingleton(); + services.AddTransient(typeof(IMpscChannel<>), typeof(MpscChannel<>)); + services.AddScoped(); + services.AddScoped(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + + + services.AddSingleton(); + services.AddSingleton(); + services.AddHostedService(); + return services; + } + } +} diff --git a/src/Pole.Core/Extensions/IServiceProviderExtensions.cs b/src/Pole.Core/Extensions/IServiceProviderExtensions.cs new file mode 100644 index 0000000..608a6ab --- /dev/null +++ b/src/Pole.Core/Extensions/IServiceProviderExtensions.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Builder; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Pole.Core.Extensions +{ + public static class IApplicationBuilderExtensions + { + public static IApplicationBuilder UsePole(this IApplicationBuilder applicationBuilder) + { + Startup.StartRay(applicationBuilder.ApplicationServices); + return applicationBuilder; + } + } +} diff --git a/src/Pole.Core/Observer/Abstraction/Attributes/ObserverAttribute.cs b/src/Pole.Core/Observer/Abstraction/Attributes/ObserverAttribute.cs deleted file mode 100644 index 63f9f54..0000000 --- a/src/Pole.Core/Observer/Abstraction/Attributes/ObserverAttribute.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Pole.Core.Observer -{ - /// - /// 标记为观察者 - /// - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] - public class ObserverAttribute : Attribute - { - /// - /// 事件监听者标记 - /// - /// 监听者分组 - /// 监听者名称(如果是shadow请设置为null) - /// 被监听的Type - /// 监听者的Type - public ObserverAttribute(string group, string name, Type observable, Type observer = default) - { - Group = group; - Name = name; - Observable = observable; - Observer = observer; - } - /// - /// 监听者分组 - /// - public string Group { get; set; } - /// - /// 监听者名称(如果是shadow请设置为null) - /// - public string Name { get; set; } - /// - /// 被监听的Type - /// - public Type Observable { get; set; } - /// - /// 监听者的Type - /// - public Type Observer { get; set; } - } -} diff --git a/src/Pole.Core/Observer/Abstraction/IObserver.cs b/src/Pole.Core/Observer/Abstraction/IObserver.cs deleted file mode 100644 index 22bc455..0000000 --- a/src/Pole.Core/Observer/Abstraction/IObserver.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Orleans.Concurrency; - -namespace Pole.Core.Observer -{ - public interface IObserver : IVersion - { - Task OnNext(Immutable bytes); - Task OnNext(Immutable> items); - /// - /// 重置状态 - /// - /// - Task Reset(); - } -} diff --git a/src/Pole.Core/Observer/Abstraction/IVersion.cs b/src/Pole.Core/Observer/Abstraction/IVersion.cs deleted file mode 100644 index 67f6c26..0000000 --- a/src/Pole.Core/Observer/Abstraction/IVersion.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Threading.Tasks; - -namespace Pole.Core.Observer -{ - public interface IVersion - { - Task GetVersion(); - Task GetAndSaveVersion(long compareVersion); - } -} diff --git a/src/Pole.Core/Pole.Core.csproj b/src/Pole.Core/Pole.Core.csproj index 013f267..3a39e45 100644 --- a/src/Pole.Core/Pole.Core.csproj +++ b/src/Pole.Core/Pole.Core.csproj @@ -6,6 +6,7 @@ + diff --git a/src/Pole.Core/DependencyInjection/IScopedDenpendency.cs b/src/Pole.Core/Processor/IProcessorServer.cs similarity index 66% rename from src/Pole.Core/DependencyInjection/IScopedDenpendency.cs rename to src/Pole.Core/Processor/IProcessorServer.cs index abe7aae..3ad156f 100644 --- a/src/Pole.Core/DependencyInjection/IScopedDenpendency.cs +++ b/src/Pole.Core/Processor/IProcessorServer.cs @@ -1,10 +1,13 @@ using System; using System.Collections.Generic; using System.Text; +using System.Threading; +using System.Threading.Tasks; -namespace Pole.Core.DependencyInjection +namespace Pole.Core.Processor { - public interface IScopedDenpendency + public interface IProcessorServer { + Task Start(CancellationToken stoppingToken); } } diff --git a/src/Pole.Core/Processor/Server/BackgroundServiceBasedProcessorServer.cs b/src/Pole.Core/Processor/Server/BackgroundServiceBasedProcessorServer.cs new file mode 100644 index 0000000..fe8a0b8 --- /dev/null +++ b/src/Pole.Core/Processor/Server/BackgroundServiceBasedProcessorServer.cs @@ -0,0 +1,44 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace Pole.Core.Processor.Server +{ + public class BackgroundServiceBasedProcessorServer : BackgroundService, IProcessorServer + { + private readonly IServiceProvider _serviceProvider; + private Task _compositeTask; + + public BackgroundServiceBasedProcessorServer(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + public async Task Start(CancellationToken stoppingToken) + { + + ProcessingContext processingContext = new ProcessingContext(stoppingToken); + List loopProcessors = new List(); + var innerProcessors = _serviceProvider.GetServices(); + var loggerFactory = _serviceProvider.GetService(); + foreach (var innerProcessor in innerProcessors) + { + LoopProcessor processor = new LoopProcessor(innerProcessor, loggerFactory); + loopProcessors.Add(processor); + } + var tasks = loopProcessors.Select(p => p.Process(processingContext)); + + _compositeTask = Task.WhenAll(tasks); + await _compositeTask; + } + protected override Task ExecuteAsync(CancellationToken stoppingToken) + { + return Start(stoppingToken); + } + } +} diff --git a/src/Pole.Core/Utils/Abstraction/IInstanceIPV4_16IdGeneratorIdSolver.cs b/src/Pole.Core/Utils/Abstraction/IGeneratorIdSolver.cs similarity index 100% rename from src/Pole.Core/Utils/Abstraction/IInstanceIPV4_16IdGeneratorIdSolver.cs rename to src/Pole.Core/Utils/Abstraction/IGeneratorIdSolver.cs