다음을 통해 공유


DPWS 사양 준수

이 항목에서는 WSDAPI가 DPWS( 디바이스 프로필 for Web Services ) 사양에서 선택 기능을 구현하는 방법을 설명합니다. 또한 WSDAPI 구현에서 생략된 DPWS 기능에 대해서도 설명합니다.

DPWS 사양은 디바이스를 사용하여 메시지를 일관되게 표시할 수 있는 방법을 제공합니다. 또한 포함된 하드웨어에서 웹 서비스를 지원하는 프로세스를 간소화하는 특정 제한 사항 및 권장 사항을 추가합니다.

DPWS 사양은 지정된 구현 권장 사항 또는 제한에서 MAY 또는 SHOULD 용어를 사용하여 선택적 기능을 설명합니다. 생략된 기능은 WSDAPI에서 구현되지 않은 DPWS 사양에서 REQUIRED로 설명된 기능이거나, WSDAPI가 DPWS 사양에 지정된 다른 메서드에서 구현한 기능일 수 있습니다.

이 항목에서는 섹션별 DPWS 섹션의 레이아웃을 따릅니다. 각 섹션에서는 WSDAPI 구현에서 특정 제한 사항, 요구 사항 및 선택 기능을 처리하는 방법을 설명합니다. 이 항목은 DPWS 사양과 함께 가장 잘 읽습니다.

DPWS 3.0 메시징

DPWS 3.1 URI 형식

제한 R0025 및 R0027은 URI를 MAX_URI_SIZE 8진수로 제한합니다. WSDAPI는 지정된 대로 이러한 제한을 모두 적용합니다.

DPWS 3.2 UDP 메시징

권장 사항 R0029는 UDP에 대한 최대 전송 단위(MTU)보다 큰 UDP 패킷을 보내지 않아야 한다고 제안합니다. WSDAPI는 이 권장 사항을 구현하지 않으며 구현에서 MTU보다 큰 검색 메시지를 보내고 받을 수 있도록 합니다.

DPWS 3.3 HTTP 메시징

R0001을 사용하려면 서비스에서 청크 분할 전송을 지원해야 합니다. WSDAPI는 요청 메시지에서 청크 분할된 데이터를 수락하고 요청 메시지에서 청크 분할된 데이터를 보냅니다.

R0012 및 R0013은 SOAP HTTP 바인딩의 필수 부분을 설명합니다. R0012의 경우 WSDAPI는 SOAP HTTP 바인딩을 구현하지만 WSDAPI가 HTTP 요청 전송을 완료할 때까지 HTTP 응답을 읽기 시작하지 않습니다. WSDAPI는 R0013에서 필요한 메시지 교환 패턴을 구현하고, R0014에서 선택적 응답 SOAP 노드를 구현하며, R0015에서 선택적 웹 메서드 기능을 구현하지 않습니다. WSDAPI는 R0030 및 R0017의 요구 사항도 지원합니다.

DPWS 3.4 SOAP 봉투

WSDAPI는 R0034를 지원하며 기본적으로 R0003 및 R0026을 적용합니다. 더 구체적으로, R0003 및 R0026에 따라 WSDAPI가 HTTP를 통해 MAX_ENVELOPE_SIZE보다 큰 SOAP 봉투를 받으면 거부되고 연결이 닫힙니다.

DPWS 3.5 WS-Addressing

R0004는 WSDAPI에서 디바이스 API의 권장 사용을 반영하며 WSDAPI의 클라이언트 API에서 지원됩니다. 이는 권장 사항이므로 WSDAPI를 사용하면 클라이언트와 디바이스가 디바이스 엔드포인트에 URI 이외의 urn:uuid URI를 사용하여 최대 호환성을 보장할 수 있습니다. WSDAPI의 디바이스 API는 초기화 간에 상태를 유지하지 않으므로 R0005 및 R0006이 제대로 지원되도록 WSDAPI에서 디바이스 API를 사용하는 것은 애플리케이션 개발자에게 달려 있습니다. WSDAPI의 클라이언트 API는 디바이스 ID가 고유하고 지속된다고 가정하며, WSDAPI의 클라이언트 API(예: PnP-X)에서 빌드하는 기능을 사용하려면 디바이스를 다시 부팅할 때 디바이스를 제대로 인식해야 합니다.

R0007은 엔드포인트 참조에서 참조 속성을 사용하지 않도록 권장합니다. WSDAPI는 여전히 참조 속성이 있는 엔드포인트를 인식하고 수락하며 개발자는 이를 사용하도록 선택할 수 있지만 기본적으로 WSDAPI는 엔드포인트에서 생성되는 엔드포인트에 채워지지 않습니다. 마찬가지로 R0042에서는 WSDAPI가 서비스 엔드포인트를 만들 때 HTTP 또는 HTTPS 전송 주소를 사용하지만 디바이스가 서비스 엔드포인트에서 HTTP 또는 HTTPS 전송 주소를 사용할 필요는 없습니다. HTTP 또는 HTTPS를 사용하지 않는 서비스와 통신하려고 할 때 클라이언트의 동작은 정의되지 않습니다.

오류에서 R0031은 회신 엔드포인트를 제한하고 오류가 익명이 아닌 경우 보낼 오류를 설명합니다. WSDAPI는 메시지를 보낼 때 회신 엔드포인트가 올바른 값을 사용하도록 강제하고 WSDAPI가 잘못된 회신 엔드포인트가 있는 요청 메시지를 수신하는 경우 올바르게 오류가 발생합니다. R0041은 응답 엔드포인트가 잘못된 경우 오류를 삭제하는 옵션을 구현에 제공합니다. WSDAPI는 오류를 삭제하는 대신 클라이언트와 통신하기 위한 "최선의 노력"으로 익명 엔드포인트로 주소가 지정된 요청 채널에서 오류를 다시 보냅니다.

마지막으로 SOAP 헤더에는 두 가지 제한 사항인 R0019 및 R0040이 있으며, 이 두 가지 제한 사항은 WSDAPI가 수신된 메시지를 준수하고 적용합니다.

DPWS 3.6 첨부 파일

WSDAPI는 첨부 파일을 지원하고 R0022를 준수합니다. WSDAPI는 R0037도 준수합니다. 첨부 파일을 보낼 때 WSDAPI는 항상 모든 MIME 부분에 대해 콘텐츠 전송 인코딩을 "이진"으로 설정합니다. 그러나 WSDAPI는 R0036을 적용하지 않습니다. 콘텐츠 전송 인코딩이 "binary"로 설정되지 않은 MIME 파트를 수신할 때의 WSDAPI 동작은 정의되지 않습니다.

DPWS는 MIME 파트 순서 절도 정의합니다. R0038의 경우 WSDAPI는 파트 순서를 적용하고 SOAP 봉투가 첫 번째 MIME 부분이 아닌 경우 MIME 메시지를 거부합니다. R0039의 경우 WSDAPI는 항상 SOAP 봉투를 첫 번째 MIME 부분으로 보냅니다.

DPWS 4.0 검색

R1013 및 R1001은 디바이스 검색 및 서비스 검색을 구분합니다. WSDAPI는 R1013을 준수합니다. 호스팅 구현은 R1001을 준수하지만 WSDAPI는 클라이언트에 이 권장 사항을 적용하지 않습니다.

DPWS는 형식 및 scope 일치 규칙에 대한 지침도 제공합니다. WSDAPI는 LDAP를 제외한 WS-Discovery에 정의된 모든 scope 일치 규칙을 지원합니다. 또한 WSDAPI는 사용자 지정 scope 일치 규칙을 정의하여 R1019를 준수하기 위한 확장 가능한 모델을 제공합니다. 호스팅 API는 항상 R1020당 검색 형식을 제공하지만 wsdp:Device 클라이언트 API에는 해당 형식이 필요하지 않습니다. WSDAPI를 기반으로 하는 다른 애플리케이션(예: PnP-X)에는 검색에 있는 형식에 대한 wsdp:Device 하드 요구 사항이 있습니다.

WSDAPI는 검색 및 바인딩을 용이하게 하기 위해 R1009 및 R1016을 지원합니다. R1018에 따라 WSDAPI는 익명 주소로 전송되지 않은 멀티캐스트 UDP를 무시합니다. R1015, R1021 및 R1022는 WSDAPI가 설명한 대로 지원하는 프로브 메시지에 대한 HTTP 바인딩을 정의합니다.

DPWS 5.0 설명

WSDAPI는 클라이언트에 R2044를 적용합니다. 호스팅 쪽에서 WSDAPI는 SOAP 봉투 본문에 wsx:Metadata 만 요소를 제공합니다. R2045를 사용하면 디바이스가 WS-Transfer 기능의 하위 집합을 지원할 수 있습니다. 호스팅 API는 항상 오류를 생성합니다 wsa:ActionNotSupported .

DPWS 5.1 특성

DPWS는 디바이스의 기본 특성을 설명합니다. 이 항목에 설명된 제한 사항 외에도 특정 문자열 및 URI에 대한 길이 제한이 정의됩니다. WSDAPI는 메시지를 보내기 전이나 내용을 구문 분석한 후 이 DPWS 섹션 5.1의 길이 제한을 적용합니다.

또한 DPWS는 필요한 메타데이터 섹션 및 메타데이터 버전의 순환에 대해서도 설명합니다. 클라이언트 구현은 ThisModel 및 ThisDevice 메타데이터의 존재를 적용합니다. 또한 호스팅 구현은 메타데이터 버전을 올바르게 관리하고 항상 R2038, R2012, R2001, R2039, R2014 및 R2002를 준수하여 이러한 섹션을 제공합니다.

DPWS 5.2 호스팅

이 섹션에서는 서비스 및 관계 메타데이터의 계층 구조를 설명합니다. WSDAPI는 클라이언트 또는 디바이스 쪽에서 이 섹션에 설명된 대로 ServiceId의 고유성을 적용하지 않습니다.

WSDAPI는 R2040을 준수하며 호스팅 서비스가 없는 경우 호스팅 구현에서 관계 없이 메타데이터 응답을 보낼 수 있습니다. 클라이언트 구현은 메타데이터 응답을 올바르게 수락합니다.

R2029는 메타데이터 응답에서 여러 관계 섹션을 허용하며 WSDAPI가 올바르게 수락합니다. R2030 및 R2042는 호스팅 API에서 올바르게 구현되는 메타데이터 버전의 관리를 설명합니다.

DPWS 5.3 WSDL

서비스에서 WSDL(Web Services Description Language) 데이터를 제공하는 경우 클라이언트 구현은 서비스 정의를 가져오고 즉시 서비스를 조작할 수 있습니다. 이는 런타임에 바인딩된 클라이언트에서 사용됩니다. WSDAPI 클라이언트 구현은 서비스에서 제공된 WSDL을 수락하지만 클라이언트는 유효성을 검사하지 않으며 클라이언트는 런타임에 바인딩된 프로그래밍 모델을 제공하지 않습니다. 호스팅 구현을 사용하여 WSDL을 제공할 수 있지만 호스트 자체에서 서비스 수준 메타데이터를 관리하지 않으므로 호스트가 이를 수행할 필요가 없습니다.

DPWS 5.4 WS-Policy

DPWS는 디바이스에 사용할 정책 어설션을 설명합니다. WSDAPI는 WSDL을 제공하지 않으며 해석하지 않으므로 WSDL 데이터에 포함된 정책을 인식하고 적용할 수 없습니다.

DPWS 6.0 이벤트

DPWS 6.1 구독

DPWS에는 푸시 배달에 대한 지원이 필요합니다. WSDAPI는 서비스 쪽에서 푸시 배달을 구현하여 R3009 및 R3010을 준수하며 클라이언트 쪽에서만 푸시 배달 모드를 수락합니다. R3017 및 R3018은 또는 EndTo 주소를 인식하지 NotifyTo 못하는 경우 서비스의 특정 오류가 필요합니다. WSDAPI는 이러한 주소의 유효성을 미리 검사하지 않으며 이러한 오류를 생성하지 않습니다. 그러나 클라이언트 구현은 이러한 오류를 올바르게 인식합니다. 마찬가지로 R3019는 선택 사항이며 WSDAPI는 이 권장 사항을 구현하지 않지만 클라이언트 구현은 메시지를 올바르게 인식하고 SubscriptionEnd 배달 실패를 애플리케이션에 알립니다.

DPWS 6.1.1 필터링

WSDAPI는 R3008을 준수하고 필터를 Action 구현합니다. R3011 및 R3012에 따라 WSDAPI는 명시된 조건에서 오류를 생성하지 않습니다. WSDAPI는 또한 R3020이 필터링하도록 요청받은 작업을 인식하지 못하는 경우 R3020에 설명된 오류를 구현합니다.

DPWS 6.2 구독 기간 및 갱신

WSDAPI는 R3005, R3006 및 R3016을 준수합니다. WSDAPI는 항상 를 사용 xs:duration 하지만 제공된 경우 수락 xs:dateTime 하므로 R3013에서 선택적 오류를 실행하지 않습니다. WSDAPI는 GetStatus R3015당 오류를 지원하며 발급 wsa:ActionNotSupported 하지 않습니다. WSDAPI는 wsa:ActionNotSupported 서비스가 해당 오류로 요청에 응답하는 GetStatus 경우 오류를 수락합니다.

DPWS 7.0 보안

DPWS는 디바이스에 권장되는 보안 모델을 설명합니다. WSDAPI는 설명된 대로 이러한 권장 사항을 구현하지 않으며 설명된 대로 이 섹션의 제한을 적용하지 않습니다.

DPWS 부록 I

DPWS는 디바이스에 맞게 다른 사양에서 전역 상수를 수정합니다. WSDAPI는 이 섹션의 상수를 사용하고 WS-Discovery 구현의 기본 상수를 이러한 상수로 재정의합니다. WS-Discovery WSDAPI를 사용하는 애플리케이션은 WS-Discovery에 정의된 상수가 아니라 DPWS에 정의된 상수에 바인딩됩니다.