웹 API를 단일 IOC로 사용하고 있습니다.웹 API 2 - 유니티 IOC - 요청 별 공유 인스턴스 변수
웹 API 클라이언트는 요청 헤더에 client-id를 전달하고이 값에 따라 외부 DLL의 메소드 인스턴스를 생성하기 위해 의존성을 해결합니다.
이 인스턴스를 생성하는 데 약 6-7 초가 소요되므로 웹 API에서 성능 문제가 발생합니다.
내가 원하는 것은 헤더의 동일한 클라이언트 ID를 가진 호출에 대한 인스턴스 생성을 방지하는 것입니다.
이것은 내가 지금까지 구현 한 방법입니다 -
//========================== ArchiveFactory ==========================
ArchiveFactory archiverFactory = (HttpRequest httpRequest) =>
{
container.RegisterType<IArchive, Archive>("Archive",
new HierarchicalLifetimeManager(),
new InjectionConstructor(
new ResolvedParameter<IStoreClient>(),
Helper.GetArchiveContext(httpRequest))
);
return container.Resolve<IArchive>("Archive");
};
container.RegisterInstance(archiverFactory);
내 요구 사항에 구체적으로 - 나는 이미지를 검색 할 아마존 서비스를 호출하고 있고 아마존을 호출하는 기업 DLL이있다.
그냥 더 추가하려면 - 나는 인스턴스의 정적 컬렉션을 가지고 있다고 생각했습니다. 나중에 인스턴스가 특정 요청에 대해 사용할 수 없는지 확인할 수 있습니다. 그런 다음에 만 새 인스턴스를 만듭니다. – Aman
안녕하세요 컨테이너.은 6-7 초 걸립니까? 인스턴스를 만드는 데 가장 많은 시간을 할애 할 수 있습니까? –
Spock
T의 생성자는 다른 서비스와 세션을 설정해야합니다. 그 이유는 T를 한 번만 구성하고 더 이상 같은 요청에 사용하는 이유입니다. – Aman