(내가 원하는 것을 가리키는 어떤 문서도 찾지 못했기 때문에이 질문에 대해서는 조금 희망이 없습니다.) 어쨌든Appdomain bondaries를 통해 ISessionFactory 객체
:
는 AppDomain
의 여러 사이에 하나의 ISessionFactory
(SessionFactoryImpl
)를 공유 할 수있는 방법이 있습니까?
- 또는 -
가이 ISessionFactory
에서 ISession
의를 생성하고 다른 Appdomain
에 새 창조 ISession
를 직렬화 할 수 있습니까?
- 또는 - 윈폼 기반 응용 프로그램에서
, 성공 스토리는 시간과 메모리 소비를 시작하지에 대해 약 ISessionFactory
/ISession
관리 무엇입니까?
긴 이야기 (세부 사항을 선호하는 사람들을 위해) :
- 내 응용 프로그램이 ERP 윈폼 기반 캔 급부상 여러 '하위 애플리케이션'이다 (형태);
- 각 하위 응용 프로그램은 자체적으로 어셈블리가 있으며 독립적으로 업데이트 할 수 있습니다.
- 새 AppDomain을 생성하면 각 하위 응용 프로그램의 구성원을
static
격리 할 수 있습니다. 응용 프로그램이 끝나면 AppDomain 하위 프로그램도 언로드 할 수 있습니다. 우리는 잠시 동안 그랬지만, SessionFactory가 값 비싸기 때문에 (시간과 메모리를 중심으로),이 모델은 계속 유지 될 수 없게되었습니다. (지금은 스레드와ThreadStatic
회원이 각 하위 애플리케이션의 특정 정보를 보유하기 위해); - 우리는 Lazy-loading을 꽤 많이 사용하고 있으므로이 기능도 포기할 수 없습니다. 나는이 (왜 기억이 안나요) 동작하지 않습니다 수 있지만
ISessionFactory
를 직렬화하는 것은이 발생할 것이다 다음ISessionFactory
을 공유MarshalByRef
클래스 :
난 이미 시도 무엇 메모리 (큰 금액)의 복제 어쨌든. 내가 맞습니까?
ISession
급부상하고 다른AppDomain
에 직렬화 MarshalByRef
클래스 : ISession 부모ISessionFactory
에 속성을 보유하고 있기 때문에, 즉 다른 경계에 지금, 그것은 나에게 일부 속성이 정의되지 않은 말해 멋진 expcetions을 가져왔다.
이 단지 SessionFactory를 작성하는 시간을 줄일 수 있지만 메모리 소비 :
직렬화는 다음과 같이 보인다. 그리고 기억은 OP의 가장 큰 쟁점 인 것 같습니다. – cremor
+1 코드 샘플. 고마워요. 나는 이미이 가능성을 알고있다. (NHiberante Cfg Serialization) - 웹에 몇 가지 예가있다. 그러나 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 있습니다. 어쨌든 신속한 답변을 해주셔서 감사합니다. :) –