As we have seen, UPnP services use SOAP to call actions published by the service. But instead of using WSDL to describe the service method calls, a
Service Control Protocol Description (SCPD) document is used. Apart from being much more restrictive when it comes to defining web methods, it also has an added feature that is not supported by normal web services: handling of GENA-type events and event subscriptions. When we implement a UPnP web service, we will do so by inheriting the UPnPWebService
class defined in the Clayster.Library.Internet.UPnP
namespace. This class in turn is inherited from the normal HttpServerWebService
class but adds event handling and subscription capabilities to the web service:
public class DigitalSecurityCameraStillImage : UPnPWebService { public DigitalSecurityCameraStillImage() : base("/StillImage") {