Skip to content

Excommunicated/Hangfire.MEF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hangfire.MEF

Build status

Hangfire background job activator based on MEF IoC Container. It allows you to use instance methods of classes that define parametrised constructors:

[Export]
public class EmailService
{
	private DbContext _context;
    private IEmailSender _sender;
	
	[ImportingConstructor]
	public EmailService(DbContext context, IEmailSender sender)
	{
		_context = context;
		_sender = sender;
	}
	
	public void Send(int userId, string message)
	{
		var user = _context.Users.Get(userId);
		_sender.Send(user.Email, message);
	}
}	

// Somewhere in the code
BackgroundJob.Enqueue<EmailService>(x => x.Send(1, "Hello, world!"));

Improve the testability of your jobs without static factories!

Installation

Hangfire.MEF is available as a NuGet Package. Type the following command into NuGet Package Manager Console window to install it:

Install-Package Hangfire.MEF

Usage

The package provides an extension method for OWIN bootstrapper:

AggregateCatalog catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
// add other assembly, directory, aggregate catalogs etc. here
var container = new CompositionContainer(catalog);

app.UseHangfire(config =>
{
    config.UseMEFActivator(container);
});

In order to use the library outside of web application, set the static JobActivator.Current property:

var container = new CompositionContainer();
JobActivator.Current = new MEFJobActivator(container);

HTTP Request warnings

Services registered with InRequestScope() directive will be unavailable during job activation, you should re-register these services without this hint.

HttpContext.Current is also not available during the job performance. Don't use it!

Credits

This project and this readme is based on the Hangfire.Ninject project by Sergey Odinokov Many thanks go out to him for his great work on the Hangfire project as well.

About

HangFire job activator based on MEF IoC Container

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages