Release and Terminate in WSDAPI objects

A lot of WSDAPI objects implement IUnknown, so the expose the Release() method.  A few more also support Terminate().  What’s the difference, and which should you call? Ultimately, you should always refer to the documentation, as rules for specific objects may differ from the norm.  But in most cases, the following guidelines apply: Terminate should always…


Web Services stacks on Windows

It has never been particularly easy to choose a Web Services stack on which to build your application.  Microsoft has produced many over the years (for example, WCF and WSDAPI) and other software vendors produce even more.  The feature sets of these stacks often overlaps, but rarely are they all exactly the same–so making a decision…


Expirations in WS-Eventing

WS-Eventing is one of the building-block specifications that DPWS profiles and makes available for solution authors.  Some applications require the device to send notification messages back to the client; e.g., a printer sends a message to the PC when it has finished printing a document.  WS-Eventing doesn’t describe the content in these notifications, but it does…


Relationship metadata

The Devices Profile for Web Services isn’t exactly a Profile in all senses of the word.  Yes, it does select and constrain underlying specifications like SOAP and WS-Discovery, but it also does very un-profile things like define schema. One of the things that it defines is Relationship Metadata, which gives devices a way to express…


Whitepaper for DPWS, WS-Discovery, and SOAP-over-UDP

We’ve just published a whitepaper on DPWS, WS-Discovery, and SOAP-over-UDP over at MSDN.  This is a great guide for those of you who want a good technical introduction to how all three specifications work. Special thanks go to Ram Jeyaraman for doing all the difficult work in putting this document together!


UUID URI schemes

UUIDs (related to GUIDs) are used frequently in computing applications.  If you don’t know these by name, you will probably recognize the 128-bit value in the format in which it is typically rendered: 7673868d-231e-490d-9c4f-19288e7e668d This is just an example value–these are usually generated on demand to uniquely identify an object.  In WS-Discovery and DPWS, UUIDs…


DPWS, WS-Discovery, and SOAP-over-UDP entering standardization

Last week OASIS announced the formation of a technical committee to standardize DPWS, WS-Discovery, and SOAP-over-UDP.  This is big news for all three specifications (and the people who implement and rely on them), as it gives us an opportunity to collaborate with other industry leaders in advancing and solifying these specs. The announcement quotes Sriram…


WSDXML and WSDAPI’s DOM sections

As I promised in my last post, here’s a guide to the WSDXML_* structures used in DOM processing in WSDAPI.  Before I get started, a quick statement on DOM: Document Object Model is a way of representing XML nodes as static structures in memory.  The structure looks like a tree, and contains elements, attributes, and…


Help! How do I send extensible data in my WS-Eventing Subscribe?

Reader Nitin raises a good question: how does an app put extensible data into the Subscribe message that’s used to set up events? Example scenario: WSD ScanNitin’s question asks specifically about the WSD Scan protocol built into Vista and Servier 2008, so I’ll use that as an example.  The scan protocol defines a ScanAvailableEvent (and…


Acronym soup

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…