홈>
이 기사를 게시하기 전에 약간의 구글 검색을하여이 포럼을 검색했는데,이 사이트는 죽었다고 추정 되었기 때문에 명확하게 요구되는 결과를 보지 못했기 때문에, 나는 그것을 한 번 줄 것이라고 생각했습니다. 이전에 답변을 받았을 가능성이 매우 높지만 명확한 페이지를 발견하지 못했습니다.
의존성 주입을 사용할 때 어느 것이 더 나은 방법으로 간주됩니까? 전체
IDocumentStore
를 주입
필요에 따라 세션을 생성하거나 적절한
IDocumentSession
를 주입합니다.
또는
IAsyncDocumentSession
?
과거에는
IAsyncDocumentSession
를 주입했습니다
사방-그러나 실제로 비
async
를 사용해야 할 필요가 있습니다.
몇몇 장소에서 세션. 이것은 내가 Raven을 완전히 주입하는 것에 접근하고 있는지 생각하게 만들었다.
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
라이프 사이클관리가 더 좋지만 잘못되었을 수 있습니다.
Raven DB 4.0과 함께StructureMap과 함께.NET Core 2.0.3을 사용하고 있습니다 (
40023
), 그러나 이것은 모든 구성 및 모든 버전에 적용될 수 있다고 주장합니다.
- 답변 # 1
관련 자료
- ravendb5 - 35에서 503으로 RavenDB 마이그레이션시 중복 키 오류 발생
- c# - 동적 속성을 기반으로 RavenDB 인덱스 생성
- c# - EF6 코드 IoC/DI를 사용한 첫 번째 작업 단위 패턴
- dependency injection - net에 대한 간단하면서도 실용적이며 강력한 IOC/DI 프레임 워크를 찾고 있습니다
- mysql - sql에서 ravendb northwind 가져 오기 - employee_privileges에 컬렉션이 제공되지 않는 이유는 무엇입니까?
- dictionary - 특정 날짜 범위에 대해 부모 및 마지막 자식 항목이있는 투영이 포함 된 RavenDB 쿼리
- c# - RavenDB 공간 검색은 항상 비어 있습니다
- asp.net - RavenDB 배열 검색이 무작위로 결과를 반환
- c# - Microservice (AWS Lambda)에서 RavenDB Cloud를 연결할 수 없음
- logging - RavenDB에 구조화 된 로그 저장
- indexing - 레이븐 db 4 - abstractindexcreationtask 클래스 구현으로 인덱스 이름을 검색합니다
- .net core - RavenDB에서 생성자 오버로드를 사용할 수 있습니까?
- c# - RavenDb는 직렬화 해제없이 원시 JSON을 얻습니다
- .net - RavenDB에서 객체로 LocalDate 역 직렬화
- RavenDb 데이터 서브 스크립 션 PropertyMatch with or condition
- ravendb - onbeforestore/onaftersave 패치 또는 첨부 파일을 퍼포밍 할 때 변경되지 않음
- graphql - ravendb에서 새 문서를 생성하는 동안 메타 데이터에서 컬렉션 이름이 누락되고 문서가 @empty collection에 표시
- ravendb4 - RavenDB 4에서 프로그래밍 방식으로 RavenETL Task를 어떻게 생성합니까?
- Raspberry Pi에 Ravendb 설치
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
이것이 4.0으로 바뀌 었는지 확실하지 않지만 지금까지 DocumentStore를 만드는 것은 다소 비싸고 무거운 작업으로 간주되었으므로 응용 프로그램 당 한 번만 만드는 것이 좋습니다 (단일;자세한 내용은 RavenDb 설명서를 참조하십시오) .
세션은 작성하기에 다소 저렴하므로 필요에 따라 만들 수 있습니다.
DI로 객체 (저장 및 세션)를 모두 주입하고 다른 수명주기 (단일 대 일시적)를 사용할 수 있습니다.
물론, 필요에 따라 세션의 동기화 또는 asnyc 버전을 제공하도록 DI를 설정할 수도 있습니다.