2009-06-24 3 views
1

사용자가 ASP.NET을 사용하여 서버에 연결된 카메라에서 이미지를 캡처 할 수있는 웹 페이지를 만들려고합니다. 카메라는 olympus이고 서버 측 코드는 카메라의 SDK에있는 모든 동기식 호출에 액세스 할 수 있습니다.
이미지를 캡처 할 때 문제가 발생합니다.
SDK에서 작동하는 방식은 먼저 카메라가 이미지를 가져 오도록 지시 한 다음 카메라가 트리거하는 이벤트에 리스너를 추가 한 다음 이미지 캡처가 끝나면 카메라에서 이미지를 다운로드하기 시작하는 것입니다 .
이벤트가 실행되지 않아 현재 카메라에서 이미지를 다운로드 할 수 없습니다.
청취자를 함수에 바인드하고 카메라에 사진을 찍으라는 코드는 버튼의 서버 측 코드 안에 있습니다.
기본적으로 첨부 된 카메라의 상태와 같이 서버에서 변경되는 이벤트 리스너를 어떻게 가질 수 있는지 궁금합니다.ASP.NET과 서버 측 이벤트 혼동

+0

포스트 백에서 이벤트 핸들러를 바인딩합니까? 그렇지 않으면 이벤트가 처리기로 전달되지 않습니다. –

+0

그게 문제일지도 모르겠지만 실제로 포스트 백이 아닌 페이지로드시 이벤트를 바인딩하고 있습니다. –

답변

1

이 문제가 발생할 것으로 예상됩니다. 예를 들어 카메라가 한 번에 하나의 데스크톱 응용 프로그램에서 사용 중이라고 가정합니다. 웹 응용 프로그램에서 호출하는 것은 매우 달랐습니다. 각 요청은 다른 사용자의 요청 일 수 있으며 이미 카메라에서 진행되고있는 작업과 관련이 없습니다.

Windows 서비스를 통해 카메라와 통신하는 것이 좋습니다. 이 서비스는 Windows 서비스에서 호스팅되는 WCF 서비스를 통해 웹 응용 프로그램과 통신합니다. 그것은 카메라에게 이미지를 찍으라고 말하고 이벤트에 첨부합니다. 이벤트가 발생하면 카메라에서 이미지를 다운로드하여 웹 서비스 호출자에게 반환합니다.

WCF 서비스는 한 번에 한 명의 사용자 만 카메라를 사용하도록해야합니다. 카메라가 이미 사용 중이면 전화를 거절해야합니다.

0

서버 측 이벤트 캡처는 약간 까다로울 수 있습니다. 내가이 일을한지 오래 되었으니 안개가 짙은 기억에서 완전히 쓰고 있습니다 ...

페이지 클래스에서 서버 측 이벤트에 연결하면 클래스의 수명주기에 문제가 발생합니다. 페이지가 전달되면 클래스의 인스턴스가 더 이상 존재하지 않으므로 카메라에 할당 된 이벤트 핸들러가 더 이상 범위를 벗어나지 않습니다. 우리는 이것을 다루기 위해 두 가지 메커니즘을 사용했습니다.

가) 이벤트 처리기에 정적 메서드를 할당하십시오. 정적 메서드는 클래스의 특정 인스턴스에 연결되지 않으며 페이지의 인스턴스가 더 이상 범위를 벗어난 후에도 유지됩니다.

B) GLOBAL 클래스의 메소드를 할당하여 응용 프로그램 (또는 세션) _Start 이벤트에서 이벤트를 캡처하십시오. 이것은 이벤트 처리기를 페이지 클래스의 범위 밖에 두지 않습니다.

이러한 인스턴스 중 하나에서 이벤트 처리기는 이미지가 준비되었음을 나타 내기 위해 전역으로 읽을 수있는 플래그를 설정해야하며 페이지는 페이지 (또는 처리기)를 폴링하거나 이미지를 찾기 위해 새로 고침해야합니다 준비되었다.

또한 카메라의 API 클래스 인스턴스화 범위를 살펴볼 필요가 있습니다. 클래스가 페이지 클래스의 멤버로 인스턴스화 된 경우 페이지가 완료되면 이벤트가 발생하지 않고 지구의 얼굴을 벗어납니다. 카메라 클래스는 정적, 전역 또는 다른 독립적 인 스레드로 스폰되어야합니다.

내 안개가 낀 도움이 도움이 되길 바랍니다. 행운을 빕니다.