├── .gitignore
├── CoreFramework
├── .template.config
│ └── template.json
├── CoreFramework.sln
├── src
│ ├── Core.Amazon.S3
│ │ ├── AmazonS3ClientExtensions.cs
│ │ ├── AmazonS3ClientFactoryExtensions.cs
│ │ ├── AmazonS3ClientHttpClientNameConstants.cs
│ │ ├── AmazonS3Module.cs
│ │ ├── AmazonS3Options.cs
│ │ ├── AmazonS3StorageException.cs
│ │ ├── AmazonS3StorageServiceCollectionExtensions.cs
│ │ ├── Core.Amazon.S3.csproj
│ │ ├── DefaultAmazonS3Builder.cs
│ │ ├── DefaultAmazonS3ClientFactory.cs
│ │ ├── DefaultTypeClientFactory.cs
│ │ ├── IAmazonS3Builder.cs
│ │ ├── IAmazonS3ClientFactory.cs
│ │ └── ITypeClientFactory.cs
│ ├── Core.Application
│ │ ├── ApplicationServiceCollectionExtensions.cs
│ │ ├── Commands
│ │ │ ├── Command.cs
│ │ │ └── CommandResult.cs
│ │ ├── Core.Application.csproj
│ │ ├── CoreApplicationModule.cs
│ │ ├── Exceptions
│ │ │ └── ValidationException.cs
│ │ ├── Queries
│ │ │ ├── Query.cs
│ │ │ └── QueryResult.cs
│ │ └── ValidationRequestPreProcessor.cs
│ ├── Core.AspNetCore
│ │ ├── ApiResult.cs
│ │ ├── ApiResultWrapAttribute.cs
│ │ └── Core.AspNetCore.csproj
│ ├── Core.Configuration.Dashboard
│ │ ├── Core.Configuration.Dashboard.csproj
│ │ ├── DashboardEndpointRouteExtensions.cs
│ │ ├── DashboardOptions.cs
│ │ ├── DashboardOptionsExtensions.cs
│ │ ├── DashboardServiceCollectionExtensions.cs
│ │ ├── DashboardStaticFileStartupFilter.cs
│ │ ├── IDashboardRouteProvider.cs
│ │ ├── IMethod.cs
│ │ ├── Method.cs
│ │ ├── MethodModel.cs
│ │ ├── RouteProvider
│ │ │ ├── DashboardActionRoute.cs
│ │ │ └── DashboardActionRouteProvider.cs
│ │ ├── ServerCallHandler.cs
│ │ ├── ServiceMethodProviderContext.cs
│ │ ├── ServiceRouteBuilder.cs
│ │ └── wwwroot
│ │ │ └── dist
│ │ │ ├── css
│ │ │ ├── chunk-1939524c.e374acd7.css
│ │ │ ├── chunk-3b55dc7e.3fa8276e.css
│ │ │ ├── chunk-7381cc8c.f3976377.css
│ │ │ ├── chunk-7592249c.200fdbc3.css
│ │ │ ├── chunk-7a1d0272.59c183eb.css
│ │ │ ├── chunk-7af68eda.af8c3925.css
│ │ │ ├── chunk-7c518a68.587716c5.css
│ │ │ ├── chunk-a5f2b902.11c50a80.css
│ │ │ ├── chunk-c1fb19f0.8e29003d.css
│ │ │ ├── chunk-de3d7390.fa808e46.css
│ │ │ ├── chunk-vendors.230de3f5.css
│ │ │ ├── chunk-vendors.230de3f5.css.gz
│ │ │ └── index.cdb09893.css
│ │ │ ├── favicon.ico
│ │ │ ├── img
│ │ │ ├── boxShadow.51818d84.png
│ │ │ ├── login_bg.993b9c92.png
│ │ │ ├── login_footer.0402bdb6.png
│ │ │ ├── logoTitleNew.201b37cb.png
│ │ │ └── pieBg.c69b4de0.c69b4de0.png
│ │ │ ├── index.html
│ │ │ ├── js
│ │ │ ├── chunk-1939524c.329bb04a.js
│ │ │ ├── chunk-1939524c.329bb04a.js.gz
│ │ │ ├── chunk-3b55dc7e.dc8c010e.js
│ │ │ ├── chunk-3b55dc7e.dc8c010e.js.gz
│ │ │ ├── chunk-7381cc8c.6bde186b.js
│ │ │ ├── chunk-7381cc8c.6bde186b.js.gz
│ │ │ ├── chunk-7592249c.311b35c7.js
│ │ │ ├── chunk-7592249c.311b35c7.js.gz
│ │ │ ├── chunk-7a1d0272.f5a9e99f.js
│ │ │ ├── chunk-7af68eda.f77c397f.js
│ │ │ ├── chunk-7af68eda.f77c397f.js.gz
│ │ │ ├── chunk-7c518a68.90291691.js
│ │ │ ├── chunk-7c518a68.90291691.js.gz
│ │ │ ├── chunk-a5f2b902.b6ea9744.js
│ │ │ ├── chunk-a5f2b902.b6ea9744.js.gz
│ │ │ ├── chunk-c1fb19f0.dac6ed4e.js
│ │ │ ├── chunk-c1fb19f0.dac6ed4e.js.gz
│ │ │ ├── chunk-de3d7390.eae09dc8.js
│ │ │ ├── chunk-vendors.2317c5e0.js
│ │ │ ├── chunk-vendors.2317c5e0.js.gz
│ │ │ ├── index.81715ba9.js
│ │ │ └── index.81715ba9.js.gz
│ │ │ ├── lang
│ │ │ ├── en.json
│ │ │ └── zh.json
│ │ │ └── static
│ │ │ ├── business.js
│ │ │ └── config.js
│ ├── Core.Configuration.MySql
│ │ ├── Core.Configuration.MySql.csproj
│ │ ├── MySqlConfigurationBuilderExtensions.cs
│ │ ├── MySqlConfigurationProvider.cs
│ │ ├── MySqlConfigurationSource.cs
│ │ └── MySqlConfigurationStorage.cs
│ ├── Core.Configuration.PostgreSql
│ │ ├── Core.Configuration.PostgreSql.csproj
│ │ ├── PostgreSqlConfigurationBuilderExtensions.cs
│ │ ├── PostgreSqlConfigurationProvider.cs
│ │ ├── PostgreSqlConfigurationSource.cs
│ │ └── PostgreSqlConfigurationStorage.cs
│ ├── Core.Configuration.SqlServer
│ │ ├── Core.Configuration.SqlServer.csproj
│ │ ├── SqlServerConfigurationBuilderExtensions.cs
│ │ ├── SqlServerConfigurationProvider.cs
│ │ ├── SqlServerConfigurationSource.cs
│ │ └── SqlServerConfigurationStorage.cs
│ ├── Core.Configuration
│ │ ├── ConfigurationOptions.cs
│ │ ├── ConfigurationServiceCollectionExtensions.cs
│ │ ├── Core.Configuration.csproj
│ │ ├── CoreConfigurationModule.cs
│ │ ├── DbConfigurationProvider.cs
│ │ ├── DbConfigurationSource.cs
│ │ ├── IConfigurationOptionsExtensions.cs
│ │ └── Storage
│ │ │ ├── ConfigurationMessage.cs
│ │ │ ├── ConfigurationStorageBase.cs
│ │ │ ├── ConfigurationStorageExtensions.cs
│ │ │ ├── DbConnectionExtensions.cs
│ │ │ ├── IConfigurationStorage.cs
│ │ │ └── Model
│ │ │ ├── CreateMessageModel.cs
│ │ │ ├── MessageQueryModel.cs
│ │ │ ├── ModifyMessageModel.cs
│ │ │ ├── PageBaseDto.cs
│ │ │ └── PageResultDto.cs
│ ├── Core.Ddd.Domain
│ │ ├── Core.Ddd.Domain.csproj
│ │ ├── Entities
│ │ │ ├── AggregateRoot.cs
│ │ │ ├── Entity.cs
│ │ │ ├── IAggregateRoot.cs
│ │ │ ├── IEntity.cs
│ │ │ └── ISoftDeleted.cs
│ │ ├── Events
│ │ │ └── EntityEventReport.cs
│ │ ├── Repositories
│ │ │ └── IRepository .cs
│ │ ├── Services
│ │ │ └── IDomainService.cs
│ │ └── Values
│ │ │ └── ValueObject.cs
│ ├── Core.ElasticSearch
│ │ ├── Core.ElasticSearch.csproj
│ │ ├── CoreElasticSearchModule.cs
│ │ ├── DefaultElasticClientBuilder.cs
│ │ ├── ElasticClientFactory.cs
│ │ ├── ElasticClientFactoryExtensions.cs
│ │ ├── ElasticClientTrackingEntry.cs
│ │ ├── ElasticSearchRepositories.cs
│ │ ├── ElasticSearchServiceCollectionExtensions.cs
│ │ ├── IElasticClientFactory.cs
│ │ ├── IElasticSearchRepositories.cs
│ │ └── Options
│ │ │ └── ElasticClientFactoryOptions.cs
│ ├── Core.EmailClient.Mysql
│ │ ├── Core.EmailClient.Mysql.csproj
│ │ ├── EmailClientMysqlModule.cs
│ │ ├── EmailClientOptionsExtensions.cs
│ │ ├── MysqlEmailStorageOptions.cs
│ │ ├── MysqlServiceCollectionExtensions.cs
│ │ └── MysqlStorage.cs
│ ├── Core.EmailClient.PostgreSql
│ │ ├── Core.EmailClient.PostgreSql.csproj
│ │ ├── EmailClientOptionsExtensions.cs
│ │ ├── EmailClientPostgreSqlModule.cs
│ │ ├── PostgreSqlEmailStorageOptions.cs
│ │ ├── PostgreSqlServiceCollectionExtensions.cs
│ │ └── PostgreSqlStorage.cs
│ ├── Core.EmailClient
│ │ ├── Core.EmailClient.csproj
│ │ ├── CoreEmailClientModule.cs
│ │ ├── DefaultEmailClient.cs
│ │ ├── EmailClientBackgroundService.cs
│ │ ├── EmailClientBase.cs
│ │ ├── EmailClientOptions.cs
│ │ ├── EmailClientServiceCollectionExtensions.cs
│ │ ├── EmailSendMailBox.cs
│ │ ├── IEmailClient.cs
│ │ ├── IEmailClientOptionsExtensions.cs
│ │ ├── MailBodyEntity.cs
│ │ ├── MimeMessageExtensions.cs
│ │ └── Storage
│ │ │ ├── DbConnectionExtensions.cs
│ │ │ ├── EmailMessage.cs
│ │ │ ├── IEmailStorage.cs
│ │ │ └── Model
│ │ │ ├── AddEmailModel.cs
│ │ │ ├── QueryEmailModel.cs
│ │ │ └── UpdateEmailModel.cs
│ ├── Core.EntityFrameworkCore.Sharding
│ │ ├── Core.EntityFrameworkCore.Sharding.csproj
│ │ ├── CoreDbContextModelSource.cs
│ │ ├── CoreEntityFrameworkServiceCollectionExtensions.cs
│ │ ├── CoreShardingDbContext.cs
│ │ ├── DbContextModelExtensions.cs
│ │ └── RepositoryExtensions.cs
│ ├── Core.EntityFrameworkCore
│ │ ├── Core.EntityFrameworkCore.csproj
│ │ ├── CoreDbContext.cs
│ │ ├── CoreEfCoreModule.cs
│ │ ├── DbContextExtensions.cs
│ │ ├── DbContextNameAttribute.cs
│ │ ├── EfCoreServiceCollectionExtensions.cs
│ │ ├── EntityFrameworkCore
│ │ │ ├── DefaultDbContextProvider.cs
│ │ │ ├── EfCoreDatabaseApi.cs
│ │ │ ├── EfCoreTransactionApi.cs
│ │ │ └── IDbContextProvider.cs
│ │ └── Repositories
│ │ │ ├── EfCoreRepository.cs
│ │ │ ├── IEfCoreRepository.cs
│ │ │ └── QueryableExtensions.cs
│ ├── Core.EventBus.Mysql
│ │ ├── Core.EventBus.Mysql.csproj
│ │ ├── CoreEventBusMysqlModule.cs
│ │ ├── EventBusMysqlOptions.cs
│ │ ├── EventBusOptionsExtensions.cs
│ │ ├── MysqlServiceCollectionExtensions.cs
│ │ └── MysqlStorage.cs
│ ├── Core.EventBus.PostgreSql
│ │ ├── Core.EventBus.PostgreSql.csproj
│ │ ├── CoreEventBusPostgreSqlModule.cs
│ │ ├── EventBusOptionsExtensions.cs
│ │ ├── EventBusPostgreSqlOptions.cs
│ │ ├── PostgreSqlServiceCollectionExtensions.cs
│ │ └── PostgreSqlStorage.cs
│ ├── Core.EventBus.RabbitMQ
│ │ ├── Core.EventBus.RabbitMQ.csproj
│ │ ├── CoreEventBusRabbitMqModule.cs
│ │ ├── EventBusOptionsExtensions.cs
│ │ ├── EventBusRabbitMqOptions.cs
│ │ ├── EventBusRabbitMqServiceCollectionExtensions.cs
│ │ ├── RabbitMqMessagePublisher.cs
│ │ └── RabbitMqMessageSubscribe.cs
│ ├── Core.EventBus.SqlServer
│ │ ├── Core.EventBus.SqlServer.csproj
│ │ ├── CoreEventBusSqlServerModule.cs
│ │ ├── EventBusOptionsExtensions.cs
│ │ ├── EventBusSqlServerOptions.cs
│ │ ├── SqlServerServiceCollectionExtensions.cs
│ │ └── SqlServerStorage.cs
│ ├── Core.EventBus
│ │ ├── Core.EventBus.csproj
│ │ ├── CoreEventBusModule.cs
│ │ ├── EventBusBackgroundService.cs
│ │ ├── EventBusOptions.cs
│ │ ├── EventBusServiceCollectionExtensions.cs
│ │ ├── IEventBusOptionsExtensions.cs
│ │ ├── Integration
│ │ │ ├── IIntegrationMessageHandlerManager.cs
│ │ │ ├── IIntegrationMessageHandlerProvider.cs
│ │ │ ├── IIntegrationMessagePublisher.cs
│ │ │ ├── IIntegrationMessageSubscribe.cs
│ │ │ ├── IOutBoxSender.cs
│ │ │ ├── IntegrationMessageHandlerManager.cs
│ │ │ ├── IntegrationMessageHandlerProvider.cs
│ │ │ ├── IntegrationMessagePublisherBase.cs
│ │ │ ├── IntegrationServiceCollectionExtensions.cs
│ │ │ └── OutBoxSender.cs
│ │ ├── Local
│ │ │ ├── CoreEventBusLocalModule.cs
│ │ │ ├── EventBusLocalCollectionExtensions.cs
│ │ │ ├── EventBusOptionsExtensions.cs
│ │ │ ├── ILocalMessageHandlerManager.cs
│ │ │ ├── ILocalMessageHandlerProvider.cs
│ │ │ ├── ILocalMessagePublisher.cs
│ │ │ ├── ILocalMessageSubscribe.cs
│ │ │ ├── LocalMessageHandlerManager.cs
│ │ │ ├── LocalMessageHandlerProvider.cs
│ │ │ ├── LocalMessagePublisher.cs
│ │ │ └── LocalMessageSubscribe.cs
│ │ ├── Messaging
│ │ │ ├── Attributes
│ │ │ │ ├── MessageGroupAttribute.cs
│ │ │ │ ├── MessageHandlerLifetimeAttribute.cs
│ │ │ │ ├── MessageHandlerPriorityAttribute.cs
│ │ │ │ └── MessageNameAttribute.cs
│ │ │ ├── Diagnostics
│ │ │ │ ├── DiagnosticListenerConstants.cs
│ │ │ │ └── EventBusDiagnosticListener.cs
│ │ │ ├── IMessage.cs
│ │ │ ├── IMessageHandler.cs
│ │ │ ├── IMessageHandlerManager.cs
│ │ │ ├── IMessageHandlerProvider.cs
│ │ │ ├── IMessageHandlerWrapper.cs
│ │ │ ├── IMessagePublisher.cs
│ │ │ ├── IMessageSubscribe.cs
│ │ │ ├── Message.cs
│ │ │ ├── MessageHandlerExtensions.cs
│ │ │ ├── MessageHandlerLifetime.cs
│ │ │ ├── MessageHandlerManager.cs
│ │ │ ├── MessageHandlerProvider.cs
│ │ │ ├── MessageHandlerWrapper.cs
│ │ │ ├── MessagePublisherMailBox.cs
│ │ │ └── MessageSubscribeBase.cs
│ │ ├── Storage
│ │ │ ├── DbConnectionExtensions.cs
│ │ │ ├── IStorage.cs
│ │ │ ├── MediumMessage.cs
│ │ │ └── StorageMarkerService.cs
│ │ └── Transaction
│ │ │ ├── DbTransactionExtensions.cs
│ │ │ ├── ITransaction.cs
│ │ │ ├── ITransactionAccessor.cs
│ │ │ ├── Transaction.cs
│ │ │ └── TransactionAccessor.cs
│ ├── Core.Excel
│ │ ├── Core.Excel.csproj
│ │ ├── ExcelCellStyle.cs
│ │ ├── ExcelCellStyleAttribute.cs
│ │ ├── ExcelColumn.cs
│ │ ├── ExcelColumnAttribute.cs
│ │ ├── ExcelColumnExtensions.cs
│ │ └── ExcelHelper.cs
│ ├── Core.Framework
│ │ └── Core.Framework.csproj
│ ├── Core.HttpClient
│ │ ├── BaseHttpClient.cs
│ │ ├── Core.HttpClient.csproj
│ │ ├── HttpClientResponse.cs
│ │ ├── HttpClientServiceCollectionExtensions.cs
│ │ └── IBaseHttpClient.cs
│ ├── Core.Infrastructure
│ │ ├── Core.Infrastructure.csproj
│ │ ├── Exceptions
│ │ │ └── DomainException.cs
│ │ ├── Recursive
│ │ │ ├── IRecursiveModel.cs
│ │ │ ├── RecursiveException.cs
│ │ │ ├── RecursiveLoader.cs
│ │ │ └── RecursiveModelDescriptor.cs
│ │ └── Timer
│ │ │ ├── AsyncTimer.cs
│ │ │ └── NonCapturingTimer.cs
│ ├── Core.Json
│ │ ├── Core.Json.csproj
│ │ └── Newtonsoft
│ │ │ └── NewtonsoftJsonSerializer.cs
│ ├── Core.Modularity
│ │ ├── Abstraction
│ │ │ ├── ICoreApplicationManager.cs
│ │ │ ├── ICoreModule.cs
│ │ │ ├── ICoreModuleDescriptor.cs
│ │ │ └── IModuleLoader.cs
│ │ ├── ApplicationBuilderContext.cs
│ │ ├── Attribute
│ │ │ └── DependsOnAttribute.cs
│ │ ├── Core.Modularity.csproj
│ │ ├── CoreApplicationManager.cs
│ │ ├── CoreApplicationManagerFactory.cs
│ │ ├── CoreFrameworkApplicationBuilderExtensions.cs
│ │ ├── CoreFrameworkServiceCollectionExtensions.cs
│ │ ├── CoreModuleBase.cs
│ │ ├── CoreModuleDescriptor.cs
│ │ ├── CoreModuleHelper.cs
│ │ ├── ModuleLoader.cs
│ │ ├── ServiceCollectionContext.cs
│ │ └── ShutdownApplicationContext.cs
│ ├── Core.Permission.PostgreSql
│ │ ├── Core.Permission.PostgreSql.csproj
│ │ ├── PermissionPostgreSqlOptions.cs
│ │ ├── PostgreSqlConfigurationBuilderExtensions.cs
│ │ ├── PostgreSqlOptionsExtensions.cs
│ │ └── PostgreSqlPermissionGrantsStorage.cs
│ ├── Core.Permission
│ │ ├── Core.Permission.csproj
│ │ ├── DefaultPermissionHandlerProvider.cs
│ │ ├── DefaultPermissionService.cs
│ │ ├── DefaultRolePermissionHandler.cs
│ │ ├── IPermissionHandler.cs
│ │ ├── IPermissionHandlerProvider.cs
│ │ ├── IPermissionOptionsExtensions.cs
│ │ ├── IPermissionService.cs
│ │ ├── PermissionAppBuilderExtensions.cs
│ │ ├── PermissionAttribute.cs
│ │ ├── PermissionBackgroundService.cs
│ │ ├── PermissionHandlerContext.cs
│ │ ├── PermissionMiddleware.cs
│ │ ├── PermissionOptions.cs
│ │ ├── PermissionResult.cs
│ │ ├── PermissionServiceCollectionExtensions.cs
│ │ └── Storage
│ │ │ ├── DbConnectionExtensions.cs
│ │ │ ├── IPermissionGrantsStorage.cs
│ │ │ ├── InMemoryConfigurationBuilderExtensions.cs
│ │ │ ├── InMemoryOptionsExtensions.cs
│ │ │ ├── InMemoryPermissionGrantsStorage.cs
│ │ │ ├── Model
│ │ │ ├── MessageQueryModel.cs
│ │ │ ├── ModifyMessageModel.cs
│ │ │ ├── PageBaseDto.cs
│ │ │ └── PageResultDto.cs
│ │ │ └── PermissionGrantsEntity.cs
│ ├── Core.Pipeline
│ │ ├── Core.Pipeline.csproj
│ │ ├── DefaultPipelineBuilder.cs
│ │ ├── DefaultPipelineBuilderFactory.cs
│ │ ├── DefaultPipelineProvider.cs
│ │ ├── HandlerPriorityAttribute.cs
│ │ ├── IPipeline.cs
│ │ ├── IPipelineBuilder.cs
│ │ ├── IPipelineBuilderFactory.cs
│ │ ├── IPipelineProvider.cs
│ │ ├── IRequest.cs
│ │ ├── IRequestHandler.cs
│ │ ├── IRequestPreHandler.cs
│ │ ├── IRequestProHandler.cs
│ │ ├── PipelineModule.cs
│ │ ├── PipelinePriorityAttribute.cs
│ │ ├── PipelineServiceCollectionExtensions.cs
│ │ ├── RequestHandlerPipeline.cs
│ │ ├── RequestPipelineDelegate.cs
│ │ ├── RequestPrePipeline.cs
│ │ └── RequestProPipeline.cs
│ ├── Core.RabbitMQ
│ │ ├── Core.RabbitMQ.csproj
│ │ ├── CoreRabbitMqModule.cs
│ │ ├── DefaultRabbitMqMessageConsumer.cs
│ │ ├── DefaultRabbitMqMessageConsumerManager.cs
│ │ ├── DefaultRabbitMqPersistentConnection.cs
│ │ ├── IRabbitMqMessageConsumer.cs
│ │ ├── IRabbitMqMessageConsumerManager.cs
│ │ ├── IRabbitMqPersistentConnection.cs
│ │ ├── RabbitMqConnectionConfigure.cs
│ │ ├── RabbitMqExchangeDeclareConfigure.cs
│ │ ├── RabbitMqOptions.cs
│ │ ├── RabbitMqQueueDeclareConfigure.cs
│ │ └── RabbitMqServiceCollectionExtensions.cs
│ ├── Core.Redis
│ │ ├── Core.Redis.csproj
│ │ ├── CoreRedisModule.cs
│ │ ├── IRedisCache.cs
│ │ ├── RedisCacheOptions.cs
│ │ ├── RedisCacheServiceCollectionExtensions.cs
│ │ └── StackExchangeRedis.cs
│ ├── Core.Threading.Tasks
│ │ ├── Concurrent
│ │ │ ├── ConcurrentManager.cs
│ │ │ ├── ConcurrentOptions.cs
│ │ │ ├── ConcurrentResult.cs
│ │ │ └── IConcurrentResult.cs
│ │ └── Core.Threading.Tasks.csproj
│ ├── Core.Translate
│ │ ├── BaiDu
│ │ │ ├── BaiDuTranslateOptions.cs
│ │ │ ├── BaiDuTranslateProvider.cs
│ │ │ ├── BaiDuTranslateResponseDto.cs
│ │ │ └── BaiDuTranslateServiceCollectionExtensions.cs
│ │ ├── Core.Translate.csproj
│ │ ├── ITranslateProvider.cs
│ │ ├── TranslateModule.cs
│ │ └── TranslateQueryDto.cs
│ └── Core.Uow
│ │ ├── Core.Uow.csproj
│ │ ├── DefaultUnitOfWork.cs
│ │ ├── DefaultUnitOfWorkAccessor.cs
│ │ ├── IDatabaseApi.cs
│ │ ├── IDatabaseApiContainer.cs
│ │ ├── ISupportsSavingChanges.cs
│ │ ├── ITransactionApi.cs
│ │ ├── ITransactionApiContainer.cs
│ │ ├── IUnitOfWork.cs
│ │ ├── IUnitOfWorkAccessor.cs
│ │ ├── UnitOfWorkAppBuilderExtensions.cs
│ │ ├── UnitOfWorkAttribute.cs
│ │ ├── UnitOfWorkMiddleware.cs
│ │ ├── UnitOfWorkModule.cs
│ │ ├── UnitOfWorkOptions.cs
│ │ └── UnitOfWorkServiceCollectionExtensions.cs
└── test
│ ├── EntityFrameworkCore.Api
│ ├── Controllers
│ │ └── WeatherForecastController.cs
│ ├── CustomerDbContext.cs
│ ├── Entities
│ │ └── Student.cs
│ ├── EntityFrameworkCore.Api.csproj
│ ├── Events
│ │ ├── AddStudentEvent.cs
│ │ └── AddStudentEventHandler.cs
│ ├── Migrations
│ │ ├── 20201030060852_Init.Designer.cs
│ │ ├── 20201030060852_Init.cs
│ │ └── CustomerDbContextModelSnapshot.cs
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── Startup.cs
│ ├── StartupModule.cs
│ ├── WeatherForecast.cs
│ ├── appsettings.Development.json
│ └── appsettings.json
│ ├── Test
│ ├── AmazonS3Test.cs
│ ├── BaseTest.cs
│ ├── EmailClientTest.cs
│ ├── PipelineTest.cs
│ ├── Test.csproj
│ └── wwwroot
│ │ ├── email_content.html
│ │ └── picture.gif
│ └── eventBus
│ ├── PublishApi
│ ├── Controllers
│ │ └── WeatherForecastController.cs
│ ├── Event
│ │ ├── CustomerEvent.cs
│ │ └── CustomerHandler.cs
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── PublishApi.csproj
│ ├── Startup.cs
│ ├── StartupModule.cs
│ ├── WeatherForecast.cs
│ ├── appsettings.Development.json
│ └── appsettings.json
│ └── SubscriptionApi
│ ├── Controllers
│ └── WeatherForecastController.cs
│ ├── Event
│ ├── CustomerEvent.cs
│ ├── EventHandler.cs
│ └── EventHandler1.cs
│ ├── Program.cs
│ ├── Properties
│ └── launchSettings.json
│ ├── Startup.cs
│ ├── StartupModule.cs
│ ├── SubscriptionApi.csproj
│ ├── WeatherForecast.cs
│ ├── appsettings.Development.json
│ └── appsettings.json
└── README.md
/CoreFramework/.template.config/template.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/template",
3 | "author": "GaoBo",
4 | "classifications": [ "AspNetCoreTemplate" ],
5 | "name": "AspNetCoreTemplate",
6 | "identity": "AspNetCoreTemplate", // Unique name for this template
7 | "shortName": "CoreTemplate", // Short name that can be used on the cli
8 | "tags": {
9 | "language": "C#" // Specify that this template is in C#.
10 | },
11 | "sourceName": "Core.", // Will replace the string 'Sayedha.StarterWeb' with the value provided via -n.
12 | "preferNameDirectory": true
13 | }
14 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/AmazonS3ClientFactoryExtensions.cs:
--------------------------------------------------------------------------------
1 | using Amazon.S3;
2 |
3 | namespace Core.Amazon.S3
4 | {
5 | public static class AmazonS3ClientFactoryExtensions
6 | {
7 | public static AmazonS3Client CreateClient(this IAmazonS3ClientFactory clientFactory)
8 | {
9 | return clientFactory.CreateClient(Microsoft.Extensions.Options.Options.DefaultName);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/AmazonS3ClientHttpClientNameConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Core.Amazon.S3
2 | {
3 | public class AmazonS3ClientHttpClientNameConstants
4 | {
5 | public const string AmazonS3ClientHttpClientName = nameof(AmazonS3ClientHttpClientName);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/AmazonS3Module.cs:
--------------------------------------------------------------------------------
1 | using Core.Modularity;
2 | using Microsoft.Extensions.Configuration;
3 | using Microsoft.Extensions.DependencyInjection;
4 |
5 | namespace Core.Amazon.S3
6 | {
7 | public class AmazonS3Module : CoreModuleBase
8 | {
9 | public IConfiguration Configuration { get; }
10 |
11 | public AmazonS3Module(IConfiguration configuration)
12 | {
13 | Configuration = configuration;
14 | }
15 |
16 | public override void ConfigureServices(ServiceCollectionContext context)
17 | {
18 | context.Services.AddAmazonS3(Configuration.GetSection("Amazon:S3"));
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/AmazonS3Options.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Core.Amazon.S3
4 | {
5 | public class AmazonS3Options
6 | {
7 | public string ServiceURL { get; set; }
8 |
9 | public string UserName { get; set; }
10 |
11 | public string Password { get; set; }
12 |
13 | public int RetryCount { get; set; } = 100;
14 |
15 | public TimeSpan? Timeout { get; set; } = TimeSpan.FromMinutes(60);
16 |
17 | public bool UseHttp { get; set; } = true;
18 |
19 | public bool ForcePathStyle { get; set; } = true;
20 |
21 | public string SignatureVersion { get; set; } = "v1";
22 |
23 | public int MaxConnectionsPerServer { get; set; } = int.MaxValue;
24 |
25 | public bool AllowAutoRedirect { get; set; } = false;
26 | }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/AmazonS3StorageException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 |
4 | namespace Core.Amazon.S3
5 | {
6 | public class AmazonS3StorageException : Exception
7 | {
8 | public HttpStatusCode Status { get; }
9 | public string Reason { get; }
10 |
11 | public AmazonS3StorageException(HttpStatusCode status, string reason, string message)
12 | : base($"Request to amazon s3 storage failed, status code: {(int)status}, reason: {(string.IsNullOrEmpty(reason) ? status.ToString() : reason)}, message:{message}")
13 | {
14 | Status = status;
15 | Reason = reason;
16 | }
17 |
18 | public AmazonS3StorageException(HttpStatusCode status, string reason, string message, Exception innerException)
19 | : base($"Request to amazon s3 storage failed, status code: {(int)status}, reason: {(string.IsNullOrEmpty(reason) ? status.ToString() : reason)}, message:{message}", innerException)
20 | {
21 | Status = status;
22 | Reason = reason;
23 | }
24 | }
25 | }
26 |
27 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/Core.Amazon.S3.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0
5 | enable
6 | disable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/DefaultAmazonS3Builder.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.DependencyInjection;
2 |
3 | namespace Core.Amazon.S3
4 | {
5 | public class DefaultAmazonS3Builder : IAmazonS3Builder
6 | {
7 | public DefaultAmazonS3Builder(IServiceCollection services, string name)
8 | {
9 | Services = services;
10 | Name = name;
11 | }
12 |
13 | public string Name { get; }
14 |
15 | public IServiceCollection Services { get; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/IAmazonS3Builder.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.DependencyInjection;
2 |
3 | namespace Core.Amazon.S3
4 | {
5 | public interface IAmazonS3Builder
6 | {
7 | string Name { get; }
8 |
9 | IServiceCollection Services { get; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/IAmazonS3ClientFactory.cs:
--------------------------------------------------------------------------------
1 | using Amazon.S3;
2 |
3 | namespace Core.Amazon.S3
4 | {
5 | public interface IAmazonS3ClientFactory
6 | {
7 | AmazonS3Client CreateClient(string clientName);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Amazon.S3/ITypeClientFactory.cs:
--------------------------------------------------------------------------------
1 | using Amazon.S3;
2 |
3 | namespace Core.Amazon.S3
4 | {
5 | public interface ITypeClientFactory
6 | where TClient : class
7 | {
8 | TClient CreateClient(AmazonS3Client adapter);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Application/Commands/Command.cs:
--------------------------------------------------------------------------------
1 | using MediatR;
2 |
3 | namespace Core.Application.Commands
4 | {
5 | public interface ICommand : IRequest
6 | {
7 | }
8 |
9 | public interface ICommand : IRequest
10 | where TResponse : ICommandResult
11 | {
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Application/Commands/CommandResult.cs:
--------------------------------------------------------------------------------
1 | namespace Core.Application.Commands
2 | {
3 | public interface ICommandResult
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Application/Core.Application.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0
5 | enable
6 | disable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Application/CoreApplicationModule.cs:
--------------------------------------------------------------------------------
1 | using Core.Modularity;
2 | using Microsoft.Extensions.DependencyInjection;
3 |
4 | namespace Core.Application
5 | {
6 | public class CoreApplicationModule : CoreModuleBase
7 | {
8 | public override void ConfigureServices(ServiceCollectionContext context)
9 | {
10 | context.Services.AddApplication();
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Application/Exceptions/ValidationException.cs:
--------------------------------------------------------------------------------
1 | namespace Core.Application.Exceptions
2 | {
3 | public class ValidationException : Exception
4 | {
5 | public ValidationException(string message)
6 | : base(message)
7 | {
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Application/Queries/QueryResult.cs:
--------------------------------------------------------------------------------
1 | namespace Core.Application.Queries
2 | {
3 | public interface IQueryResult
4 | {
5 | }
6 |
7 | public abstract class QueryPagedResult : IQueryResult
8 | {
9 | protected QueryPagedResult(IQueryPaging queryPaging)
10 | {
11 | PageIndex = queryPaging.PageIndex;
12 | PageSize = queryPaging.PageSize;
13 | }
14 |
15 | public int PageIndex { get; set; }
16 |
17 | public int PageSize { get; set; }
18 |
19 | public int TotalPages
20 | {
21 | get
22 | {
23 | if (TotalCount <= 0)
24 | return 0;
25 | if (PageSize <= 1)
26 | {
27 | return TotalCount;
28 | }
29 | var pageCount = TotalCount / PageSize;
30 | if (TotalCount % PageSize > 0)
31 | {
32 | pageCount++;
33 | }
34 | return pageCount;
35 | }
36 | }
37 |
38 | public int TotalCount { get; set; }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.AspNetCore/Core.AspNetCore.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Configuration.Dashboard/DashboardEndpointRouteExtensions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Routing;
2 | using Microsoft.Extensions.DependencyInjection;
3 | using System;
4 |
5 | namespace Core.Configuration.Dashboard
6 | {
7 | public static class DashboardEndpointRouteExtensions
8 | {
9 | public static void MapDbConfigurationDashboard(this IEndpointRouteBuilder builder)
10 | {
11 | if (builder == null)
12 | throw new ArgumentNullException(nameof(builder));
13 | builder.ServiceProvider.GetRequiredService().Build(builder);
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Configuration.Dashboard/DashboardOptions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace Core.Configuration.Dashboard
5 | {
6 | public class DashboardOptions
7 | {
8 | public DashboardOptions()
9 | {
10 | PathMatch = "/config/dashboard";
11 | Attributes = new List();
12 | }
13 |
14 | public string PathMatch { get; set; }
15 |
16 | public List Attributes { get; }
17 |
18 | public DashboardOptions AddAttribute(params Attribute[] attributes)
19 | {
20 | if (attributes != null && attributes.Length > 0)
21 | Attributes.AddRange(attributes);
22 | return this;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Configuration.Dashboard/DashboardOptionsExtensions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.DependencyInjection;
2 | using System;
3 | using Microsoft.AspNetCore.Hosting;
4 | using Microsoft.Extensions.DependencyInjection.Extensions;
5 |
6 | namespace Core.Configuration.Dashboard
7 | {
8 | public class DashboardOptionsExtensions : IConfigurationOptionsExtensions
9 | {
10 | private readonly Action _options;
11 |
12 | public DashboardOptionsExtensions(Action options)
13 | {
14 | _options = options;
15 | }
16 | public void AddServices(IServiceCollection services)
17 | {
18 | services.AddTransient();
19 | services.Configure(_options);
20 | services.TryAddSingleton(typeof(ServiceRouteBuilder));
21 | services.TryAddEnumerable(new ServiceDescriptor(typeof(IDashboardRouteProvider), typeof(DashboardActionRouteProvider),ServiceLifetime.Singleton));
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Configuration.Dashboard/DashboardServiceCollectionExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Core.Configuration.Dashboard
4 | {
5 | public static class DashboardServiceCollectionExtensions
6 | {
7 | public static ConfigurationOptions AddDashboard(this ConfigurationOptions options, Action actionOptions)
8 | {
9 | options.AddExtensions(new DashboardOptionsExtensions(actionOptions));
10 | return options;
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Configuration.Dashboard/IDashboardRouteProvider.cs:
--------------------------------------------------------------------------------
1 | namespace Core.Configuration.Dashboard
2 | {
3 | public interface IDashboardRouteProvider
4 | {
5 | ServiceMethodProviderContext OnServiceMethodDiscovery();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/CoreFramework/src/Core.Configuration.Dashboard/IMethod.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Reflection;
4 |
5 | namespace Core.Configuration.Dashboard
6 | {
7 | public interface IMethod
8 | {
9 | string MethodName { get; }
10 |
11 | Type MethodParameter { get; }
12 |
13 | string HttpMetadata { get; }
14 |
15 | string RouteTemplate { get; }
16 |
17 | List