고객의 니즈가 각양각색으로 요구되면서 개발자들은 많은 고통과 어려움에 봉착하게 된다. 이러한 것들을 해결하기 위해 Multitenancy라는 아주 훌륭한 Framework들이 나왔다. 그중에 여기서는 Autofac에서 제시한 프레임워크를 사용할 것이다.
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
var container = builder.Build();
var tenantIdentifier = new RequestParameterStrategy();
var mtc = new MultitenantContainer(tenantIdentifier, container);
mtc.ConfigureTenant("test1", d => d.RegisterType<Home2Controller>().As<HomeController>());
public class RequestParameterStrategy : ITenantIdentificationStrategy
{
public bool TryIdentifyTenant(out object tenantId)
{
tenantId = null;
try
{
var context = HttpContext.Current;
if (context != null && context.Request != null)
{
tenantId = context.Request.Url.Host.Split('.').FirstOrDefault();
}
}
catch (HttpException)
{
// Happens at app startup in IIS 7.0
}
return tenantId != null;
}
}
mtc.ConfigureTenant("test1", d => d.RegisterType<Home2Controller>().As<HomeController>());