나는이 영화를 게시하기 전에 약간의 인터넷 검색을했고이 포럼을 수색했다. 왜냐하면 나는 그것이 맞았다 고 추측했기 때문에 - 그러나 나는 분명히 이것을 묻는듯한 결과를 보지 못했기 때문에 나는 그 장면을 짤 수있을 것이라고 생각했다. 이전에 답변을 받았을 가능성이 상당히 높지만 명확한 페이지를 발견하지 못했습니다.IoC/DI가있는 RavenDB - IDocumentStore 또는 I (비동기) DocumentSession?
더 나은 방법으로 간주되는 종속성 주입을 사용하는 경우? IDocumentStore
전체를 주입 한 다음 필요에 따라 세션을 생성하거나 적절한 IDocumentSession
또는 IAsyncDocumentSession
을 삽입 하시겠습니까?
과거에는 어느 곳에서나 IAsyncDocumentSession
을 주입했습니다. 실제로는 몇 군데의 비 async
세션을 사용해야합니다. 레이븐을 잘못 주입하면 접근 할 수있게되었습니다.
그래서, IDocumentStore
를 사용하여 ... 같은
public AsHandler(IDocumentStore store) { RavenStore = store; }
private IDocumentStore RavenStore { get; set; }
public async Task Handle() {
using(var session = RavenStore.OpenAsyncSession()) {
... // do stuff with an async session
}
}
그러나보다 구체적인 세션 쓰임새 같은 나타납니다 ...
public AsHandler(IAsyncDocumentSession session) { RavenSession = session; }
private IAsyncDocumentSession RavenSession { get; set; }
public async Task Handle() {
// do stuff with an async session
}
또는 각각을 ... 수 있습니다
public AsHandler(IDocumentSession session) { RavenSession = session; }
private IDocumentSession RavenSession { get; set; }
public async Task Handle() {
// do stuff with a non-async session
}
환경 설정 외에 다른 점이 있습니까? 저의 초기 생각은 IDocumentSession
과 IAsyncDocumentSession
을 사용하면 더 나은 수명주기 관리가 될 수 있지만 잘못된 것일 수 있습니다.
내가 특별히 레이븐 DB (40023
) 4.0 StructureMap와 .NET의 핵심 2.0.3를 사용하고 있지만, 나는이 모든 구성 및 모든 버전에 적용 할 수 있다고 가정하는 것입니다.