다음을 통해 공유


V4 드라이버 UI 아키텍처

Important

최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.

자세한 내용은 인쇄 지원 앱 디자인 가이드참조하세요.

v4 드라이버 아키텍처의 높은 수준의 디자인 목표는 Microsoft Store 앱 사용자 인터페이스에 대한 기본 제공 지원을 제공하는 것이었습니다.

채택된 애플리케이션 기반 UI 패러다임은 이에 대한 명확한 예입니다. UWP 디바이스 앱은 Microsoft Store 앱 UI에서 지원되는 전체 화면 환경을 사용자에게 제공합니다. 인쇄용 UWP 디바이스 앱은 인쇄 기본 설정에 대한 확장성과 v4 인쇄 드라이버를 지원하는 프린터에 대한 프린터 알림을 제공합니다. 또한 인쇄용 UWP 디바이스 앱은 새 시작 화면에서 인쇄 디바이스에 대한 가시성을 제공합니다.

프린터 확장 앱은 사용자가 Windows 데스크톱에서 기존 애플리케이션을 실행할 때 인쇄 기본 설정 및 프린터 알림을 지원합니다. 이러한 애플리케이션의 UI는 매우 다르지만 터치에 맞게 조정된 UI와 마우스 및 키보드 사용자에 맞게 최적화된 UI는 UI에 관계없이 비즈니스 논리 및 v4 인쇄 드라이버에 대한 연결은 여전히 유사할 수 있습니다.

다음 다이어그램은 Microsoft Store 디바이스 앱의 상위 수준 아키텍처를 보여 있습니다.

사용자 지정 UI 아키텍처의 개요입니다.

앞의 다이어그램에 표시된 것처럼 모델/뷰/컨트롤러 기반 아키텍처를 사용하면 앱이 C#으로 작성된 모델 계층에서 코드를 공유할 수 있습니다.

PrinterExtensionLibrary 확장

다양한 샘플에 제공되는 PrinterExtensionLibrary 프로젝트는 새 클래스를 사용하거나 제공된 클래스 집합을 확장하여 확장할 수 있습니다. Microsoft는 주기적으로 샘플 코드를 업데이트하므로 파트너는 제공된 소스 파일에 대한 코드 변경 횟수를 최소화하는 것이 좋습니다. 제공된 클래스 집합을 확장하는 파트너의 경우 기존 클래스를 "부분"으로 표시하고 별도의 소스 파일에 새 함수 또는 재정의를 추가하는 것이 좋습니다.

UWP 앱과 데스크톱 앱 간에 컴파일된 이진 파일 공유

Microsoft Store 디바이스 앱 및 프린터 확장 샘플에 제공되는 PrinterExtensionLibrary 프로젝트는 동일한 소스 코드를 활용하지만 각 프로젝트에 대해 별도로 빌드하지 않고 프로젝트 간에 이식 가능하도록 코드를 빌드하는 것이 중요할 수 있습니다. PrinterExtensionLibrary 프로젝트의 코드를 이식 가능하도록 하려면 프로젝트를 이식 가능한 클래스 라이브러리로 변환해야 합니다. 변환하려면 다음 단계를 수행합니다.

  1. Microsoft Visual Studio에서 새>> 클릭한 다음 설치된 템플릿 검색 상자에서 "이식 가능"을 검색합니다.

  2. 이식 가능한 클래스 라이브러리 Visual C#을 선택한 다음 이름 텍스트 상자에서 프로젝트의 이름을 입력하고 확인을 클릭합니다.

  3. 기존 PrinterExtensionLibrary 프로젝트의 소스 코드를 새 프로젝트로 복사합니다.

  4. 이식 가능한 클래스 라이브러리 프로젝트를 마우스 오른쪽 단추로 클릭하고 언로드를 선택합니다. 그런 다음.csproj 파일을 열고 문서의 마지막 태그 바로 앞에 다음 섹션을 파일에 추가합니다.

      <ItemGroup>
        <COMReference Include="PrinterExtensionLib">
          <Guid>{91CE54EE-C67C-4B46-A4FF-99416F27A8BF}</Guid>
          <VersionMajor>1</VersionMajor>
          <VersionMinor>0</VersionMinor>
          <Lcid>0</Lcid>
          <WrapperTool>tlbimp</WrapperTool>
          <Isolated>False</Isolated>
          <EmbedInteropTypes>True</EmbedInteropTypes>
        </COMReference>
      </ItemGroup>
    
  5. COM 참조의 결과로 경고가 표시되면 PropertyGroup< 태그에 다음을 >추가합니다.

<ResolveComReferenceSilent>true</ResolveComReferenceSilent>

인쇄 UI 시나리오용 API

API는 인쇄용 프린터 확장 및 UWP 디바이스 앱을 지원하기 위해 v4 인쇄 드라이버 모델의 일부로 개발되었습니다. 높은 수준에서 인쇄 기본 설정 시나리오에서는 PrintTicket, PrintCapabilities 및 새 속성 모음을 사용하여 모든 정보를 가져와 저장합니다. 프린터 알림은 Bidi(양방향 통신) 스키마를 기반으로 하는 새 이벤트 시스템에 의해 구동되며, 이 새 시스템은 클라이언트와 서버 간의 비동기UI 프로토콜을 사용합니다. 이 API의 데이터 중심 특성은 한 애플리케이션이 여러 디바이스를 쉽게 지원할 수 있음을 의미합니다.

요청한 데이터를 사용할 수 없는 경우 정상적으로 성능이 저하될 수 있는 방식으로 프린터 확장을 빌드해야 합니다. 예를 들어 특정 PrintCapabilities 기능을 사용할 수 없거나 속성 모음 중 하나의 속성을 사용할 수 없는 경우 나머지 앱이 작동하지 않도록 방지할 수 없습니다. 속성 모음 또는 속성 모음의 특정 속성에 액세스할 때 앱은 throw된 예외로 인해 앱이 충돌하지 않도록 try-catch 구문을 사용해야 합니다. 자세한 내용은 프린터 확장 인터페이스를 참조 하세요.

프린터 확장 인터페이스