Udostępnij przez


Zgodność specyfikacji programu DPWS

W tym temacie opisano, jak interfejs WSDAPI implementuje funkcje elekcyjne w specyfikacji Devices Profile for Web Services (DPWS). Opisano również, które funkcje programu DPWS zostały pominięte w implementacji WSDAPI.

Specyfikacja programu DPWS zapewnia spójny sposób obsługi komunikatów z urządzeniami. Dodaje również określone ograniczenia i zalecenia, które upraszczają proces obsługi usług internetowych na sprzęcie osadzonym.

Specyfikacja DPWS opisuje funkcje wybierane przy użyciu terminów MAY lub SHOULD w danym rekomendacji lub ograniczenia implementacji. Pominięte funkcje mogą być funkcjami opisanymi jako WYMAGANE w specyfikacji DPWS, która nie została zaimplementowana przez interfejs WSDAPI lub może to być funkcja zaimplementowana w metodzie innej w metodzie określonej w specyfikacji DPWS.

Ten temat jest zgodny z układem sekcji DPWS według sekcji. W każdej sekcji opisano sposób obsługi określonych ograniczeń, wymagań i funkcji elekcyjnych przez implementację interfejsu WSDAPI. Ten temat najlepiej przeczytać razem ze specyfikacją dpWS.

Obsługa komunikatów programu DPWS 3.0

Formaty identyfikatora URI programu DPWS 3.1

Ograniczenia R0025 i R0027 ograniczają identyfikatory URI do MAX_URI_SIZE oktetów. WSDAPI wymusza oba te ograniczenia zgodnie z określonymi.

Obsługa komunikatów UDP programu DPWS 3.2

Zalecenie R0029 sugeruje, że pakiety UDP większe niż maksymalna jednostka transferu (MTU) dla protokołu UDP nie powinny być wysyłane. WSDAPI nie implementuje tego zalecenia i umożliwi implementacjom wysyłanie i odbieranie komunikatów odnajdywania, które są większe niż jednostki MTU.

Obsługa komunikatów HTTP programu DPWS 3.3

R0001 wymaga, aby usługi obsługiwały transfer fragmentowany. WSDAPI akceptuje fragmentowane dane w komunikatach żądań i wysyła fragmentowane dane w komunikatach żądań.

R0012 i R0013 opisują wymagane części powiązania HTTP protokołu SOAP. W przypadku języka R0012 interfejs WSDAPI implementuje powiązanie HTTP protokołu SOAP, ale nie rozpocznie odczytywania odpowiedzi HTTP, dopóki WSDAPI nie zakończy wysyłania żądania HTTP. WSDAPI implementuje wymagany wzorzec wymiany komunikatów w R0013, implementuje opcjonalny węzeł SOAP odpowiada w R0014 i nie implementuje opcjonalnej funkcji metody internetowej w R0015. WSDAPI obsługuje również wymagania w usługach R0030 i R0017.

Koperta PROTOKOŁU SOAP DPWS 3.4

WSDAPI obsługuje R0034 i domyślnie wymusza R0003 i R0026. W szczególności, zgodnie z R0003 i R0026, jeśli WSDAPI otrzyma kopertę PROTOKOŁU SOAP większą niż MAX_ENVELOPE_SIZE przez HTTP jest odrzucany i połączenie jest zamknięte.

DPWS 3.5 WS-Addressing

R0004 odzwierciedla zalecane użycie interfejsu API urządzenia w interfejsie WSDAPI i jest obsługiwane przez interfejs API klienta w interfejsie WSDAPI. Ponieważ jest to zalecenie, interfejs WSDAPI umożliwi klientom i urządzeniom używanie identyfikatorów URI innych niż identyfikatory URI urn:uuid dla ich punktów końcowych urządzeń w celu zapewnienia maksymalnej zgodności. Ponieważ interfejs API urządzenia w interfejsie WSDAPI nie utrzymuje stanu między inicjacjami, deweloperzy aplikacji korzystają z interfejsu API urządzenia w interfejsie WSDAPI, aby upewnić się, że R0005 i R0006 są prawidłowo obsługiwane. Interfejs API klienta w interfejsie WSDAPI zakłada, że tożsamości urządzeń są unikatowe i utrwalane, a funkcje oparte na interfejsie API klienta w interfejsie WSDAPI (na przykład PnP-X) będą wymagać tego w celu prawidłowego rozpoznawania urządzenia w przypadku ponownego uruchomienia urządzenia.

R0007 zaleca użycie właściwości odwołania w odwołaniach do punktów końcowych. WSDAPI nadal będzie rozpoznawać i akceptować punkty końcowe z właściwościami odwołania, a deweloperzy mogą zdecydować się na ich użycie, ale domyślnie WSDAPI nie wypełni ich w tworzonych punktach końcowych. Podobnie w przypadku protokołu R0042, gdy WSDAPI tworzy punkty końcowe usługi, będzie używać adresu transportu HTTP lub HTTPS, ale nie będzie wymagać, aby urządzenia używały adresów transportu HTTP lub HTTPS w punktach końcowych usługi. Zachowanie klienta podczas próby komunikowania się z usługą, która nie korzysta z protokołu HTTP lub HTTPS, jest niezdefiniowana.

W przypadku błędów R0031 ogranicza punkt końcowy odpowiedzi i opisuje błąd do wysłania, jeśli błąd nie jest anonimowy. WSDAPI wymusza, aby punkt końcowy odpowiedzi używał poprawnej wartości podczas wysyłania komunikatów i będzie poprawnie uszkodzony, jeśli WSDAPI odbiera komunikat żądania z niepoprawnym punktem końcowym odpowiedzi. R0041 udostępnia implementacje opcji porzucania błędu, jeśli punkt końcowy odpowiedzi jest nieprawidłowy. Zamiast usuwać błąd, interfejs WSDAPI wyśle błąd z powrotem do kanału żądania, adresowany do anonimowego punktu końcowego jako "najlepszy wysiłek", aby komunikować się z klientem.

Na koniec istnieją dwa ograniczenia dotyczące nagłówków protokołu SOAP, R0019 i R0040, z których oba są zgodne z interfejsem WSDAPI i wymuszane na odebranych komunikatach.

Załączniki DPWS 3.6

Interfejs WSDAPI obsługuje załączniki i jest zgodny z R0022. WSDAPI jest również zgodny z R0037. Podczas wysyłania załączników interfejs WSDAPI zawsze ustawi kodowanie transferu zawartości na wartość "binary" dla wszystkich części MIME. Jednak WSDAPI nie wymusza R0036. Zachowanie interfejsu WSDAPI podczas odbierania części MIME z kodowaniem transferu zawartości nie jest ustawione na "binarne" jest niezdefiniowane.

Program DPWS definiuje również klauzule porządkowania części MIME. W przypadku R0038 interfejs WSDAPI wymusi porządkowanie części i odrzuci komunikat MIME, jeśli koperta PROTOKOŁU SOAP nie jest pierwszą częścią MIME. W przypadku R0039 interfejs WSDAPI zawsze wyśle kopertę PROTOKOŁU SOAP jako pierwszą część MIME.

Odnajdywanie programu DPWS 4.0

R1013 i R1001 rozróżnia odnajdywanie urządzeń i odnajdywanie usług. Interfejs WSDAPI jest zgodny z R1013. Implementacja hostingu jest zgodna z R1001, ale WSDAPI nie wymusza tego zalecenia na kliencie.

Program DPWS zawiera również wskazówki dotyczące typów i reguł dopasowywania zakresu. Interfejs WSDAPI obsługuje wszystkie reguły dopasowywania zakresu zdefiniowane w odnajdywania WS-Discovery z wyjątkiem protokołu LDAP. WSDAPI udostępnia również rozszerzalny model do definiowania niestandardowych reguł dopasowywania zakresu, w związku z czym jest zgodny z R1019. Interfejs API hostingu zawsze udostępnia również typ wsdp:Device odnajdywania na R1020, ale interfejs API klienta nie wymaga jego obecności. Inne aplikacje oparte na interfejsie WSDAPI, takie jak PnP-X, mają twarde wymaganie, aby typ wsdp:Device był obecny w odnajdywania.

Aby ułatwić odnajdywanie i tworzenie powiązań, interfejs WSDAPI obsługuje języki R1009 i R1016. Na R1018 interfejs WSDAPI zignoruje protokół UDP multiemisji, który nie zostanie wysłany na adres anonimowy. R1015, R1021 i R1022 definiują powiązanie HTTP dla komunikatu sondy, który obsługuje WSDAPI zgodnie z opisem.

Opis programu DPWS 5.0

WSDAPI wymusza R2044 na kliencie. Po stronie hostingu WSDAPI będzie dostarczać tylko element wsx:Metadata w treści koperty SOAP. R2045 umożliwia urządzeniom obsługę podzestawu funkcji WS-Transfer. Interfejs API hostingu zawsze generuje błąd wsa:ActionNotSupported.

Charakterystyka programu DPWS 5.1

Program DPWS opisuje podstawowe cechy urządzenia. Oprócz ograniczeń opisanych w tym temacie limity długości są definiowane dla określonych ciągów i identyfikatorów URI. WSDAPI wymusza limity długości w tej sekcji DPWS 5.1 przed wysłaniem komunikatu lub po przeanalizowaniu jego zawartości.

Program DPWS opisuje również wymagane sekcje metadanych i ścieżkę rowerową wersji metadanych. Implementacja klienta wymusza obecność elementów ThisModel i ThisDevice. Implementacja hostingu prawidłowo zarządza wersją metadanych i zawsze udostępnia te sekcje, zgodne z R2038, R2012, R2001, R2039, R2014 i R2002.

DPWS 5.2 Hosting

W tej sekcji opisano hierarchię usług i metadanych relacji. WSDAPI nie wymusza unikatowości identyfikatora ServiceId zgodnie z opisem w tej sekcji po stronie klienta lub urządzenia.

WSDAPI jest zgodny z R2040 i istnieje możliwość, aby implementacja hostingu wysyłała odpowiedź metadanych bez sekcji relacji, jeśli nie ma hostowanych usług. Implementacja klienta poprawnie akceptuje odpowiedź na metadane.

R2029 umożliwia obsługę wielu sekcji relacji w odpowiedzi na metadane, które interfejs WSDAPI będzie poprawnie akceptować. R2030 i R2042 opisują zarządzanie wersją metadanych, która jest prawidłowo implementowana w interfejsie API hostingu.

DPWS 5.3 WSDL

Jeśli usługa udostępnia dane języka WSDL (Web Services Description Language), implementacje klientów mogą uzyskać definicję usługi i manipulować usługą na bieżąco. Jest to używane przez klientów z późnym ograniczeniem. Implementacja klienta WSDAPI zaakceptuje język WSDL dostarczony z usługi, ale klient go nie weryfikuje, a klient nie udostępnia opóźnionego modelu programowania powiązanego. Implementacja hostingu może służyć do zapewnienia WSDL, ale host nie jest wymagany do tego, ponieważ metadane poziomu usługi nie są zarządzane przez samego hosta.

DPWS 5.4 WS-Policy

DpWS opisuje asercji zasad, które mają być używane dla urządzeń. Ponieważ interfejs WSDAPI nie udostępnia i nie interpretuje języka WSDL, nie może rozpoznać i wymusić zasad osadzonych w danych WSDL.

Zdarzenia programu DPWS 6.0

Subskrypcja programu DPWS 6.1

Usługa DPWS wymaga obsługi dostarczania wypychanych. WSDAPI implementuje dostarczanie wypychane po stronie usługi, w związku z tym zgodne z R3009 i R3010 i będzie akceptować tylko tryb dostarczania wypychania po stronie klienta. R3017 i R3018 wymagają określonych błędów z usługi, jeśli nie rozpozna NotifyTo ani adresów EndTo. WSDAPI nie weryfikuje tych adresów z góry i nie wygeneruje tych błędów. Jednak implementacja klienta prawidłowo rozpozna te błędy. Podobnie R3019 jest opcjonalny, a interfejs WSDAPI nie implementuje tego zalecenia, ale implementacja klienta poprawnie rozpozna komunikat SubscriptionEnd i powiadomi aplikację o niepowodzeniu dostarczania.

Filtrowanie programu DPWS 6.1.1

Interfejs WSDAPI jest zgodny z językiem R3008 i implementuje filtr Action. Zgodnie z R3011 i R3012 WSDAPI nie wygeneruje błędów w określonych warunkach. WSDAPI implementuje również błąd opisany R3020, jeśli nie rozpoznaje akcji, na których jest proszony o filtrowanie.

Czas trwania i odnawianie subskrypcji programu DPWS 6.2

WSDAPI jest zgodny z R3005, R3006 i R3016. WSDAPI zawsze będzie używać xs:duration, ale zaakceptuje xs:dateTime w przypadku podania, a tym samym nie będzie wystawiać opcjonalnej błędu w R3013. Interfejs WSDAPI obsługuje GetStatus i nie będzie wystawiać błędu wsa:ActionNotSupported na R3015. WSDAPI zaakceptuj błąd wsa:ActionNotSupported, jeśli usługa odpowie na żądanie GetStatus.

Zabezpieczenia programu DPWS 7.0

Program DPWS opisuje zalecany model zabezpieczeń dla urządzeń. WSDAPI nie implementuje tych zaleceń zgodnie z opisem i nie wymusza ograniczeń w tej sekcji zgodnie z opisem.

Dodatek DPWS I

Usługa DPWS zmienia globalne stałe z innych specyfikacji na odpowiednie urządzenia. WSDAPI używa stałych z tej sekcji i zastępuje domyślne stałe w implementacji WS-Discovery z tymi stałymi. Aplikacje korzystające z interfejsu WSDAPI dla WS-Discovery będą powiązane ze stałymi zdefiniowanymi w programie DPWS, a nie stałymi zdefiniowanymi w odnajdywania WS-Discovery.