우리는 WPF (UI) 응용 프로그램을위한 WCF RESTful 서비스를 만들었습니다. UI는 WCF 서비스에 요청을 보내고 BLL에서 적합한 메소드를 호출하고 DLL에서 메소드를 호출합니다. 이러한 모든 레이어는 IOC/DI를 사용하여 분리되었습니다.WCF RESTful 서비스의 Ansync 스레드
이제 새 기능에 대해 특정 유형의 새 개체가 데이터베이스에 추가 될 때 별도의 스레드에서 수행되는 3 단계를 거쳐야합니다.
즉, 서비스가 데이터베이스에 새 개체 OBJ를 추가하라는 요청을 BLL에 보내면 BLL은 개체를 DAL을 통해 데이터베이스에 저장 한 다음 새 스레드를 시작하여 개체없이 작업을 수행해야합니다. WCF 요청을 차단합니다.
하지만 BLL에서 새 스레드를 시작하여 시도 할 때마다 응용 프로그램이 충돌합니다. 데이터베이스 컨텍스트의 'InRequestScope'개체가 삭제되어 스레드가 데이터베이스를 업데이트 할 수 없기 때문에 그렇습니다. 또한 반환 값이 제공되고 BLL 메서드가 실행을 완료했지만 스레드가 완료 될 때까지 WCF 요청이 끝나지 않습니다.
어떤 도움이 많은 가치가있을 것입니다.
우리는 클라이언트가 응답을 기다리지 않도록 서버에서 프로세스를 실행하고 싶었습니다. 서버 측 프로세스 이상으로 클라이언트가 종료 되더라도 수행된다는 것을 의미합니다. 또한 서버의 트래픽을 줄입니다. –