Those of you working in or around Web Services (or those of you who just read my blog for sheer excitement) have probably seen acronyms like DPWS and WSDAPI tossed around.  Some of these are pretty straightforward, but the interplay between them is subtle.

Here's a short guide to the device-oriented Web Services acronyms I use on this blog most often, and how they relate to each other.

  • DPWS is the Devices Profile for Web Services, a profile that assembles some useful Web Services specifications and constrains them so they're easy to implement on devices.  DPWS says things like, "use WS-Discovery," "devices can express their metadata in this well-defined format," and "devices shouldn't be required to support huge XML messages."  DPWS doesn't say anything about specific applications (e.g., printers).
  • WSDAPI is the Web Services on Devices API, the implementation of DPWS that ships on Windows Vista, Server 2008, and CE 6.0 R2.  WSDAPI does more than just DPWS, which is one of the reasons why it's not called DPWSAPI or something like that.
  • WSD is "Web Services on devices," an umbrella term for Microsoft technologies built on DPWS and WSDAPI.  For example, Vista also includes support for Web Services-based printers and scanners--both of these technologies fall under WSD.  WSD shouldn't be confused with WS-D, sometimes used to refer to WS-Discovery.
  • WSDL is the Web Services Description Language, a format for the machine-readable part of a Web Services-based network protocol specification.  WSDL is used to describe low-level protocols built into DPWS (e.g., WS-Eventing) but application and device authors will typically interact with it most often at the application layer, where it describes a higher-level protocol built on DPWS.

So let's apply these to the example of the Web Services-based print technology in Windows Vista: networked Web Services printers are DPWS devices that expose printer services described by the printer WSDL.  Any DPWS client (such as those built on WSDAPI) can connect to these printers to see that they are printers, but only DPWS clients that include support for the printer WSDL can actually use the print functionality.