나는 서비스 버스 (MassTransit)에서 메시지를 소비하는 asp.net 프로세스를 보유하고 있습니다. 웹 요청의 경우 데이터베이스 세션은 PerWebRequest 라이프 스타일로 해결됩니다.asp.net 프로세스에 대한 Windsor 복합 라이프 스타일
그러나 프로세스가 MassTransit에서 메시지를 소비하면 HttpContext를 사용할 수 없으므로 데이터베이스 세션에 다른 라이프 스타일이 필요합니다. 이 갈 수있는 올바른 방법 인 경우,
가 가public class PerRequestLifeStyleManager : ILifestyleManager
{
readonly PerWebRequestLifestyleManager perWebRequestLifestyleManager;
readonly PerThreadLifestyleManager perThreadLifestyleManager;
public PerRequestLifeStyleManager()
{
perWebRequestLifestyleManager = new PerWebRequestLifestyleManager();
perThreadLifestyleManager = new PerThreadLifestyleManager();
}
public void Init(IComponentActivator componentActivator, IKernel kernel, ComponentModel model)
{
perWebRequestLifestyleManager.Init(componentActivator, kernel, model);
perThreadLifestyleManager.Init(componentActivator, kernel, model);
}
public object Resolve(CreationContext context)
{
return GetManager().Resolve(context);
}
public bool Release(object instance)
{
return GetManager().Release(instance);
}
public void Dispose()
{
GetManager().Dispose();
}
ILifestyleManager GetManager()
{
if (HttpContext.Current != null)
{
return perWebRequestLifestyleManager;
}
return perThreadLifestyleManager;
}
}
가
사람이 말해 줄 수 :
나는이 만든? 그리고 그렇지 않다면, 무엇입니까?
감사합니다.
편집 : 방금 테스트 한 일부 코드로 질문을 업데이트했습니다 (테스트되지 않았습니다). 윈저의 관점에서 볼 때 이것이 안전하고 건전한 가라면 나는 아직도 열망하고 있습니다.
확인하는 좋은 장소 : 당신이 그 이상으로 뭔가를 주입해야하는 경우
, 당신은 또한 요격을 사용할 수 있습니다. http://groups.google.com/group/masstransit-discuss 드루 (Dru)는 성 (Castle)에 대한 경험이 충분하여 올바른 방향으로 인도 할 수 있다고 생각하지만 분명히하지는 않습니다. 나는 그것을 만지지 않았다;) – Travis
나는 거기에 있었지만 그것을 통해서만 탐색했다. 나는 윈저와 매스 트랜싯 사이의 크로스가 너무 관련이 있다고 생각했다. :) ... 그러나 팁을 주셔서 감사합니다, 나는 거기에 게시 할 것입니다! – asgerhallas
세션 관리에 대한 설명은 다음 페이지를 참조하십시오. http://groups.google.com/group/masstransit-discuss/browse_thread/thread/4be42a6319ce66ff/6f28a2eeea52278a?lnk=gst&q=windsor+lifestyle#6f28a2eeea52278a ... 나는 ' 비록 당신이 커스텀 라이프 스타일을 만드는 방법인지는 알지 못합니다. 콜백 전/후에 콜백을 기반으로합니다 ... – asgerhallas