다음을 통해 공유


디바이스 출력 모델(.NET용 POS v1.14 SDK 설명서)

UnifiedPOS(Unified Point Of Service) 출력 모델은 동기 및 비동기의 두 가지 출력 형식으로 구성됩니다. POS 디바이스 유형은 하나 또는 두 가지 형식을 모두 지원하거나 두 형식을 모두 지원하지 않을 수 있습니다.

동기 출력

애플리케이션에서 디바이스 유형별 동기 메서드를 사용하여 출력을 쓰는 경우 쓰기 작업은 메서드를 호출한 동일한 스레드에서 수행됩니다. 쓰기 작업이 완료되거나 실패할 때까지 서비스 개체가 반환되지 않을 수 있습니다.

동기 출력을 사용하는 것은 간단하지만 출력을 비교적 빠르게 완료할 수 없는 경우 애플리케이션 성능에 영향을 미칠 수 있습니다. 서비스 개체 개발자는 이를 고려해야 합니다.

비동기 출력

특정 POS 디바이스 유형은 비동기 출력을 지원합니다. 비동기 출력 모델에서 애플리케이션은 서비스 개체를 호출하여 데이터를 디바이스에 출력하도록 요청합니다. 그러나 동기 모델과 달리 서비스 개체는 쓰기 작업이 완료될 때까지 기다리지 않아야 합니다. 대신 가능한 한 빨리 애플리케이션에 제어를 반환해야 합니다. 서비스 개체가 애플리케이션에서 요청을 받으면 다음을 수행해야 합니다.

  • 물리적 디바이스에서 데이터를 받을 수 없는 경우 서비스 개체는 디바이스가 준비될 때까지 메모리에 버퍼링해야 합니다.
  • OutputId 속성을 이 요청의 식별자에 설정하여 애플리케이션으로 전송되는 후속 이벤트 중에 사용할 수 있도록 합니다.
  • 가능한 한 빨리 반환합니다.

그런 다음, 서비스 개체는 디바이스가 요청을 완료할 때까지 기다려야 합니다. 일반적으로 이 작업은 하드웨어를 모니터링하는 서비스 개체에서 관리하는 별도의 스레드를 사용하여 수행됩니다. 요청이 성공적으로 완료되면 OutputEventArgs.OutputId가 이전에 지정된 식별자로 설정된 OutputCompleteEvent 이벤트가 애플리케이션에 배달되기 위해 큐에 대기됩니다.

서비스 개체 관리형 큐

.NET용 POS 클래스 라이브러리는 거의 모든 서비스 개체 시나리오에 충분한 비동기 출력을 지원합니다.

그러나 서비스 개체 개발자가 자체 비동기 출력 처리를 구현해야 하는 시나리오도 있습니다. 기본 시나리오는 하드웨어 기반 인쇄 큐를 지원하는 디바이스를 지원하는 것입니다. 이 경우 서비스 개체는 UseExternalPrintQueuetrue로 설정하고, PreQueuePrintData 메서드를 재정의하고, 자체 큐 메커니즘을 구현합니다.

UseExternalPrintQueuetrue로 설정된 경우 Base 클래스는 더 이상 내부 비동기 큐에 인쇄 요청을 추가하지 않으므로 서비스 개체 개발자는 필요한 방식으로 데이터를 큐에 추가해야 합니다. 이 작업은 종종 디바이스의 하드웨어 인쇄 큐 기능을 사용하여 수행됩니다. Base 클래스는 여전히 동일한 인쇄 요청의 유효성을 미리 검사하지만 추가 처리는 수행하지 않습니다.

이러한 경우 서비스 개체는 다음을 수행합니다.

  • 자체 큐 논리 구현
  • 성공적인 작업을 위해 StatusUpdateEvents 전송
  • 실패한 비동기 작업에 대해 ErrorEvents를 전송하고 다시 시도 처리
  • 상태 속성 업데이트
  • UnifiedPOS 사양에 정의된 다른 모든 비동기 작업

참고 항목

작업

기타 리소스