1

사용자로부터 데이터를 수집하여 타사 웹 서비스에 제출하는 ASP.NET 웹 사이트를 구축 중입니다. webservice는 다소 신뢰할 수 없기 때문에 백업 서비스가 있습니다.신뢰할 수없는 웹 서비스 제출 및 모니터링

기본 서비스에 대한 호출이 실패하면 (시간 초과 또는 다른 오류) 보조 시스템을 사용하도록 시스템을 트립하는 정적 클래스에서 약간 뒤집어 야합니다.

이 시점에서 주 서비스 (더미 데이터 사용)를 폴링하여 백업인지 확인해야합니다 (그 시점에서 확인 코드가 반환 될 것입니다). 이 시점에서 웹 사이트가 기본 서비스를 다시 사용하기 시작하도록 비트를 반전해야합니다.

이 코드는 Should I use a Windows Service or an ASP.NET Background Thread?이었습니다. 코드를 Windows 서비스로 분리하면 가장 간단한 방법으로 폴링을 수행 할 수 있지만 웹 응용 프로그램과 어떻게 통신 할 수 있을까요?

내가 가진 한 가지 생각은 Windows 서비스가 webapp로 통신하는 데 사용할 수있는 웹 서비스를 노출하는 것입니다. 그러나 이것은 지저분하고 과도하게 보입니다.

비슷한 작업을 수행하는 생각과 경험에 감사드립니다.

고마워요.

답변

1

저는 Windows 서비스가 확실한 방법이라고 생각합니다.

서비스와 웹 사이트 간의 통신에있어 최상의 대답은 솔루션의 규모와 규모에 따라 다릅니다. 신뢰할 수있는 무언가를 만들고 있다면 ASP.NET 사이트와 Windows 서비스 사이에 대기열을 구현하는 것이 좋습니다. BizTalk, MSMQ 및 SQL Server 큐 (SSIS) : 예산 및 기능에 따라 여기에도 많은 옵션이 있습니다. 또는 작은 규모의 제품을 찾고 있다면 어딘가에 데이터베이스 테이블에 붙여 두는 것이 좋습니다.

파일 잠금 및 멀티 스레딩 문제가 발생하기 때문에 파일 시스템에서 파일을 사용하지 마십시오. 어떤 이유로 든 서비스가 실패 할 경우 메모리 대기열을 잃을 위험이 있으므로 서비스와 직접 통신하는 것을 피합니다.

편집은 추가 :

를 신뢰성이 문제가 여기에없는 경우, 당신은 WPF에게 당신의 웹 사이트 및 Windows 서비스 간의 통신을 위해 호스팅 서비스를 명명 된 파이프를 사용할 수 있습니다. 이렇게하면 기존 웹 서비스에서 일반적으로 발생하는 많은 오버 헤드를 피할 수 있으며 놀라 울 정도로 빠릅니다. 유일한 단점은 자체 호스팅 WPF 서비스가 까다 롭고 서비스 유지가 어려울 수 있다는 것입니다.

+0

안녕하세요, 제 3 자 시스템은 표준 .NET 웹 서비스 (.asmx)이고 요청 시간 초과 또는 오류가 발생하여 현재 요청을 보조 서비스에 다시 제출하려는 경우 –

+0

그래, 여전히 웹 사이트와 Windows 서비스간에 안정적인 전송이 필요하다고 말합니다. 나는 Windows 서비스를 사용하는 것이 올바른 접근이며, "웹 응용 프로그램과 어떻게 의사 소통을합니까?"라는 질문에 완전히 동의하고 있습니다. :) –