Delen via


Naleving van DPWS-specificatie

In dit onderwerp wordt beschreven hoe WSDAPI de electieve functionaliteit implementeert in de specificatie Devices Profile for Web Services (DPWS). Ook wordt beschreven welke DPWS-functionaliteit is weggelaten uit de WSDAPI-implementatie.

De DPWS-specificatie biedt een consistente manier om berichten te verzenden met apparaten. Er worden ook specifieke beperkingen en aanbevelingen toegevoegd die het proces voor het ondersteunen van webservices op ingesloten hardware vereenvoudigen.

De DPWS-specificatie beschrijft de gekozen functionaliteit met behulp van de termen MAY of SHOULD in een bepaalde implementatieaanaanveling of beperking. Weggelaten functionaliteit kan functionaliteit zijn die wordt beschreven als VEREIST in de DPWS-specificatie die niet is geïmplementeerd door WSDAPI, of het kan functionaliteit zijn die WSDAPI heeft geïmplementeerd in een andere methode in de methode die is opgegeven in de DPWS-specificatie.

Dit onderwerp volgt de indeling van de SECTIE DPWS per sectie. In elke sectie wordt beschreven hoe specifieke beperkingen, vereisten en keuzefunctionaliteit worden verwerkt door de WSDAPI-implementatie. Dit onderwerp is het beste te lezen in combinatie met de DPWS-specificatie.

DPWS 3.0 Messaging

URI-indelingen DPWS 3.1

Beperkingen R0025 en R0027 beperken URI's tot MAX_URI_SIZE octetten. WSDAPI dwingt beide beperkingen af zoals opgegeven.

DPWS 3.2 UDP-berichten

Aanbeveling R0029 suggereert dat UDP-pakketten die groter zijn dan de maximale overdrachtseenheid (MTU) voor UDP niet mogen worden verzonden. Met WSDAPI wordt deze aanbeveling niet geïmplementeerd en kunnen implementaties detectieberichten verzenden en ontvangen die groter zijn dan de MTU.

DPWS 3.3 HTTP-berichten

R0001 vereist dat services gesegmenteerde overdracht ondersteunen. WSDAPI accepteert gesegmenteerde gegevens in aanvraagberichten en verzendt gesegmenteerde gegevens in aanvraagberichten.

R0012 en R0013 beschrijven vereiste delen van de SOAP HTTP-binding. Voor R0012 implementeert WSDAPI de SOAP HTTP-binding, maar begint het HTTP-antwoord pas te lezen nadat WSDAPI de HTTP-aanvraag heeft verzonden. WSDAPI implementeert het vereiste berichtuitwisselingspatroon in R0013, implementeert het optionele SOAP-knooppunt in R0014 en implementeert niet de optionele webmethodefunctie in R0015. WSDAPI ondersteunt ook de vereisten in R0030 en R0017.

DPWS 3.4 SOAP-envelop

WSDAPI ondersteunt R0034 en dwingt standaard R0003 en R0026 af. In het bijzonder, in overeenstemming met R0003 en R0026, als WSDAPI een SOAP-envelop ontvangt die groter is dan MAX_ENVELOPE_SIZE via HTTP, wordt deze geweigerd en wordt de verbinding gesloten.

DPWS 3.5 WS-Addressing

R0004 weerspiegelt het aanbevolen gebruik van de apparaat-API in WSDAPI en wordt ondersteund door de client-API in WSDAPI. Omdat dit een aanbeveling is, kunnen clients en apparaten met WSDAPI andere URI's dan urn:uuid URI's gebruiken voor hun apparaateindpunten om maximale compatibiliteit te garanderen. Omdat de apparaat-API in WSDAPI de status tussen initialisaties niet persistent maakt, is het aan toepassingsontwikkelaars die de apparaat-API in WSDAPI gebruiken om ervoor te zorgen dat R0005 en R0006 correct worden ondersteund. De client-API in WSDAPI gaat ervan uit dat apparaat-id's uniek en persistent zijn, en dat functionaliteit die is gebaseerd op de client-API in WSDAPI (zoals PnP-X) dit vereist om het apparaat op de juiste manier te herkennen op het apparaat dat opnieuw wordt opgestart.

R0007 raadt het gebruik van referentie-eigenschappen in eindpuntverwijzingen aan. WSDAPI herkent en accepteert nog steeds eindpunten met referentie-eigenschappen en ontwikkelaars kunnen ervoor kiezen om ze te gebruiken, maar WSDAPI vult ze standaard niet in eindpunten die worden gemaakt. Op dezelfde manier wordt met R0042, wanneer WSDAPI service-eindpunten maakt, een HTTP- of HTTPS-transportadres gebruikt, maar vereisen apparaten geen HTTP- of HTTPS-transportadressen in hun service-eindpunten. Het gedrag van de client wanneer wordt geprobeerd te communiceren met een service die geen HTTP of HTTPS gebruikt, is niet gedefinieerd.

Bij fouten beperkt R0031 het antwoordeindpunt en beschrijft u de fout die moet worden verzonden als de fout niet anoniem is. WSDAPI dwingt het antwoordeindpunt af om de juiste waarde te gebruiken bij het verzenden van berichten en treedt een fout op als WSDAPI een aanvraagbericht ontvangt met het onjuiste antwoordeindpunt. R0041 biedt implementaties de mogelijkheid om een fout te verwijderen als het antwoordeindpunt ongeldig is. In plaats van de fout te verwijderen, stuurt WSDAPI de fout terug op het aanvraagkanaal, dat is geadresseerd aan het anonieme eindpunt, als een 'best effort' om met de client te communiceren.

Ten slotte zijn er twee beperkingen voor SOAP-headers, R0019 en R0040, beide waarvan WSDAPI voldoet aan en afdwingt op ontvangen berichten.

DPWS 3.6-bijlagen

WSDAPI ondersteunt bijlagen en voldoet aan R0022. WSDAPI voldoet ook aan R0037. Bij het verzenden van bijlagen stelt WSDAPI altijd de codering voor inhoudsoverdracht in op 'binair' voor alle MIME-onderdelen. WSDAPI dwingt echter geen R0036 af. Het gedrag van WSDAPI bij het ontvangen van een MIME-onderdeel met inhoudsoverdrachtcodering is niet gedefinieerd op 'binair'.

DPWS definieert ook components voor MIME-onderdelenvolgorde. Voor R0038 dwingt WSDAPI de volgorde van onderdelen af en weigert een MIME-bericht als de SOAP-envelop niet het eerste MIME-deel is. Voor R0039 verzendt WSDAPI altijd de SOAP-envelop als het eerste MIME-deel.

DPWS 4.0 Detectie

R1013 en R1001 onderscheiden apparaatdetectie en servicedetectie. WSDAPI voldoet aan R1013. De hosting-implementatie voldoet aan R1001, maar WSDAPI dwingt deze aanbeveling niet af op de client.

DPWS biedt ook richtlijnen voor typen en overeenkomende regels voor bereiken. WSDAPI ondersteunt alle bereikkoppelingsregels die zijn gedefinieerd in WS-Discovery- behalve LDAP. WSDAPI biedt ook een uitbreidbaar model voor het definiëren van aangepaste regels voor het afstemmen van bereiken, zodat deze voldoen aan R1019. De hosting-API biedt ook altijd het wsdp:Device type detectie per R1020, maar de client-API vereist niet dat deze aanwezig is. Andere toepassingen die zijn gebouwd op WSDAPI, zoals PnP-X, hebben een harde vereiste voor het wsdp:Device type dat aanwezig is in detectie.

Om detectie en binding mogelijk te maken, ondersteunt WSDAPI R1009 en R1016. Per R1018 negeert WSDAPI multicast UDP niet verzonden naar het anonieme adres. R1015, R1021 en R1022 definiëren een HTTP-binding voor het testbericht, die WSDAPI ondersteunt zoals beschreven.

DPWS 5.0 Beschrijving

WSDAPI dwingt R2044 af op de client. Aan de hostingzijde biedt WSDAPI alleen het wsx:Metadata element in de hoofdtekst van de SOAP-envelop. Met R2045 kunnen apparaten een subset van de WS-Transfer-functionaliteit ondersteunen. De hosting-API genereert altijd de wsa:ActionNotSupported fout.

DPWS 5.1 Kenmerken

DPWS beschrijft basiskenmerken voor het apparaat. Naast de beperkingen die in dit onderwerp worden beschreven, worden lengtelimieten gedefinieerd voor specifieke tekenreeksen en URI's. WSDAPI dwingt de lengtelimieten in deze DPWS-sectie 5.1 af, voordat het bericht wordt verzonden of nadat de inhoud is geparseerd.

DPWS beschrijft ook de vereiste metagegevenssecties en het fietsen van de metagegevensversie. De client-implementatie dwingt de aanwezigheid van ThisModel- en ThisDevice-metagegevens af. De hosting-implementatie beheert ook de metagegevensversie en biedt altijd deze secties, die voldoen aan R2038, R2012, R2001, R2039, R2014 en R2002.

DPWS 5.2 Hosting

In deze sectie wordt de hiërarchie van services en metagegevens van relaties beschreven. WSDAPI dwingt de uniekheid van de ServiceId niet af, zoals beschreven in deze sectie aan de client- of apparaatzijde.

WSDAPI voldoet wel aan R2040 en het is mogelijk dat de hosting-implementatie een antwoord met metagegevens zonder relatiesectie verzendt als er geen gehoste services zijn. De client-implementatie accepteert correct het antwoord op metagegevens.

R2029 maakt het mogelijk om meerdere relatiesecties in een metagegevensantwoord toe te laten, die door WSDAPI correct worden geaccepteerd. R2030 en R2042 beschrijven het beheer van de metagegevensversie, die correct is geïmplementeerd in de hosting-API.

DPWS 5.3 WSDL

Als een service WSDL-gegevens (Web Services Description Language) levert, kunnen clientimplementaties de servicedefinitie ophalen en de service onderweg bewerken. Dit wordt gebruikt door late gebonden clients. De WSDAPI-clientimplementatie accepteert WSDL die is geleverd vanuit een service, maar de client valideert deze niet en de client biedt geen laat gebonden programmeermodel. De hostingimplementatie kan worden gebruikt om WSDL te bieden, maar de host hoeft dit niet te doen omdat de metagegevens van het serviceniveau niet worden beheerd door de host zelf.

DPWS 5.4 WS-Policy

DPWS beschrijft beleidsverklaringen die moeten worden gebruikt voor apparaten. Omdat WSDAPI geen WSDL biedt en niet interpreteert, kan het beleid dat is ingesloten in WSDL-gegevens niet herkennen en afdwingen.

DPWS 6.0 Eventing

DPWS 6.1-abonnement

DPWS vereist ondersteuning voor Push-levering. WSDAPI implementeert Push-levering aan de servicezijde, dus voldoet aan R3009 en R3010 en accepteert alleen de pushleveringsmodus aan de clientzijde. R3017 en R3018 vereisen specifieke fouten van de service als de NotifyTo of EndTo adressen niet worden herkend. WSDAPI valideert deze adressen niet vooraf en genereert deze fouten niet. De client-implementatie herkent deze fouten echter correct. Op dezelfde manier is R3019 optioneel en WSDAPI implementeert deze aanbeveling niet, maar de client-implementatie herkent het SubscriptionEnd bericht correct en meldt de toepassing van een bezorgingsfout.

DPWS 6.1.1 Filteren

WSDAPI voldoet aan R3008 en implementeert het Action-filter. In overeenstemming met R3011 en R3012 genereert WSDAPI de fouten in de vermelde voorwaarden niet. WSDAPI implementeert ook de fout die R3020 wordt beschreven als de acties waarvoor wordt gevraagd om te filteren niet worden herkend.

DPWS 6.2 Abonnementsduur en verlenging

WSDAPI voldoet aan R3005, R3006 en R3016. WSDAPI gebruikt altijd xs:duration, maar accepteert xs:dateTime indien opgegeven, en geeft dus geen optionele fout in R3013 uit. WSDAPI ondersteunt GetStatus en geeft geen wsa:ActionNotSupported fout per R3015 uit. WSDAPI accepteert de wsa:ActionNotSupported fout als een service reageert op een GetStatus aanvraag.

DPWS 7.0 Beveiliging

DPWS beschrijft een aanbevolen beveiligingsmodel voor apparaten. WSDAPI implementeert deze aanbevelingen niet zoals beschreven en dwingt de beperkingen in deze sectie niet af zoals beschreven.

DPWS Bijlage I

DPWS wijzigt globale constanten van andere specificaties voor apparaten. WSDAPI gebruikt de constanten uit deze sectie en overschrijft de standaardconstanten in de WS-Discovery implementatie met deze constanten. Toepassingen die WSDAPI voor WS-Discovery gebruiken, zijn gebonden aan de constanten die zijn gedefinieerd in DPWS, niet de constanten die zijn gedefinieerd in WS-Discovery-.