WebJob을 처음 사용하기 때문에 장시간 실행되는 작업을 처리하기 위해 기존 MVC Web App (Azure에서 호스팅 됨)에 하나 추가해야합니다. 장기 실행 작업은 SOAP/XML을 통해 데이터를 검색하기 위해 여러 외부 웹 서비스를 호출하고이 데이터를 SQL db에 저장 한 다음 데이터를 변환하고 저장된 데이터를 다시 데이터베이스에로드하는 ETL 유형 프로세스를 수행합니다. 이 프로세스는 끝에서 끝까지 실행하는 데 20 ~ 30 분이 소요될 수 있습니다.MVC Web App에서 WebJob으로 장기 실행 작업 마이그레이션 동일한 프로젝트 및 코드 재사용을 참조하십시오.
원래 웹 응용 프로그램은 장기 실행 작업을 시작하고 처리하는 데 책임이 있지만 제대로 작동하지 않으며 이후이 프로세스를 WebJob으로 옮기기로 결정했습니다. 말이된다?
장기 실행 작업에 대한 대부분의 논리는 서비스 계층 내부에 존재하며 웹 응용 프로그램 내부의 컨트롤러 동작은 작업을 "시작"하는 데 책임이 있습니다.
웹 응용 프로그램은 DI 용으로 Autofac을 사용하고 있습니다.
WebJob 응용 프로그램 내에서 코드를 복제 할 필요없이 웹 응용 프로그램에서 기존 Autofac 구성을 공유/재사용하는 가장 좋은 방법은 무엇입니까? 즉 WebJob이 MVC 웹 응용 프로그램 프로젝트를 참조 할 수 있습니까?
Autofac을 사용하는 경우 재사용 할 수있는 모듈을 만들 수 있습니다. DI 등록을 별도의 어셈블리에 넣고 MVC와 웹 잡을 참조하십시오. DI 등록을 다시해야한다고 생각하지 않습니다. DI는 응용 프로그램 구성입니다. 게다가 나는 모든 등록이 다른 범위를 가질 것이므로 어떤 것도 또는 몇 가지를 재사용 할 수 없을 것이라고 확신합니다. – Thomas
또한 Webjob은 의존성을 주입하는 트릭을 수행 할 수있는 IJobActivator를 노출합니다. – Thomas