Skip to content

seamusic/Stove

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stove Build status alt text

Package Status
Stove NuGet version
Stove.Entityframework NuGet version
Stove.Hangfire NuGet version
Stove.NLog NuGet version
Stove.Mapster NuGet version
Stove.Redis NuGet version
Stove.Dapper NuGet version
Stove.RabbitMQ NuGet version
  • Autofac for Ioc
  • AmbientContext Unit Of Work pattern
  • Conventional Registration Mechanism with Autofac.Extras.IocManager
  • EventBus for DDD use cases
  • EntityFramework
  • Generic Repository Pattern, DbContext, Multiple DbContext control in one unit of work, TransactionScope support
  • Dapper and EF both can use in one application.
  • Dapper and EF have their own repositories. IDapperRepository<Product>, IRepository<Product>
  • Dapper-EntityFramework works under same transaction and unit of work scope, if any exception appears in domain whole transaction will be rollback, including Dapper's insert/deletes and EF's.
  • RabbitMQ support
  • HangFire support
  • Redis support
  • A lot of extensions
  • Strictly SOLID

Composition Root

IRootResolver resolver = IocBuilder.New
                                   .UseAutofacContainerBuilder()
                                   .UseStove<StoveDemoBootstrapper>(autoUnitOfWorkInterceptionEnabled: true)
                                   .UseStoveEntityFramework()
                                   .UseStoveDapper()
                                   .UseStoveMapster()
                                   .UseStoveDefaultEventBus()
                                   .UseStoveDbContextEfTransactionStrategy()
                                   .UseStoveTypedConnectionStringResolver()
                                   .UseStoveNLog()
                                   .UseStoveBackgroundJobs()
                                   .UseStoveRedisCaching()
                                   .UseStoveRabbitMQ(configuration =>
                                   {
                                       configuration.HostAddress = "rabbitmq://localhost/";
                                       configuration.Username = "admin";
                                       configuration.Password = "admin";
                                       configuration.QueueName = "Default";
                                       return configuration;
                                   })
                                   .UseStoveHangfire(configuration =>
                                   {
                                       configuration.GlobalConfiguration
                                                    .UseSqlServerStorage("Default")
                                                    .UseNLogLogProvider();
                                       return configuration;
                                   })
                                   .RegisterServices(r => r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()))
                                   .CreateResolver();

var someDomainService = resolver.Resolve<SomeDomainService>();
someDomainService.DoSomeStuff();

It will be documented in detail!

About

Application framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%