">Slideshow

Blank page


A RESTful approach: Clean UPnP without SOAP
Jan Newmarch


UPnP


SOAP


REST


REST criticism of SOAP


RPC criticisms of SOAP


UPnP and REST


UPnP with REST


UPnP state query with SOAP


POST controlUrl HTTP/1.1
HOST: ...
CONTENT-LENGTH: ...
CONTENT-TYPE: ...
SOAP-ACTION: ...
<Envelope>
   <Body>
      <QueryStateVariable>
         <varName> vblName </varName>
      </QueryStateVariable>
   </Body>
</Envelope>


UPnP state query with REST


GET controlUrl/vblName HTTP/1.1
HOST: ...


UPnP state change with SOAP


POST controlUrl HTTP/1.1
HOST: ...
CONTENT-LENGTH: ...
CONTENT-TYPE: ...
SOAP-ACTION: ...
<Envelope>
  <Body>
    <actionName>
      <argumentName> value </argumentName>
    </actionName>
  </Body>
</Envelope>


UPnP state change with REST


POST controlUrl/actionName HTTP/1.1
HOST: ...
CONTENT-LENGTH: ...
CONTENT-TYPE: application/x-www-form-urlencoded

argumentName=value


Implementation


Speed

SOAP/Xerces SOAP/kXML REST
1000 queries (secs) 165 114 64


Message sizes

SOAP REST
Request payload 350 4
packet 535 84
Response payload 365 11
packet 526 171


Memory

SOAP/Xerces SOAP/kXML REST
classes+data 416,336 114,808 6,072


Conclusion