UPNP实现的基本原理

      UPnP网络的第1步是发现。在将一个设备添加到网络上之后,UPnP发现协议允许该设备向网络中的控制点宣告其服务。同样,当一个控制点被添加到网络后,UPnP发现协议允许该控制点在网上搜索感兴趣的设备。两种情况下的根本信息交换均为一个发现消息,包含有关该设备或其服务之一的一些基础信息(例如其类型、标识符和指向更详细信息的一个指针)。UPnP发现协议基于简单服务发现协议(SSDP)。
    UPnP网络中的第2步是描述。控制点在发现一个设备之后仍然对其知之甚少。为了使控制点了解到更多关于设备及其能力的信息或与设备进行交互,则控制点必须取得来自该设备在发现消息中所提供之URL的设备描述。设备可能包含其它逻辑设备,以及功能单元或服务。对于设备的UPnP描述通过XML来表达,并包括诸如模型名称和号码、序列号、制造商名称和厂商专门网站URL等专门针对厂商的制造商信息。该描述还包括一列任意的嵌入式设备或服务,以及用于控制、事件触发和展示的URL。对于每项服务,此描述均包括一列命令或动作,而服务(参数或变量)对于每个动作做出响应;针对服务的描述还包括一列变量;这些变量模型化服务在运行时的状态,并通过数据类型、范围和事件特征进行描述。
    UPnP网络中的第3步是控制。当一个控制点取得设备描述后,该控制点可将动作发至一个设备的服务。为此,控制点将一条适当的控制消息发至服务的控制URL(在设备描述中提供)。控制消息同样利用简单对象访问协议(SOAP)通过XML来表达。类似于功能调用,该服务针对控制消息返回了所有的专门动作取值。动作的效果可以通过描述服务运行时状态的变量进行描述。
    UPnP网络的第4步是事件触发。针对服务的UPnP描述包括一个服务响应的动作列表,以及一个对服务器运行时状态进行展示的变量列表。在这些变量变更时服务会发布更新,一个控制点可以预订接收此信息。服务通过发送事件消息来发布更新。事件消息包含一个或多个状态变量名和这些变量的当前值。这些消息同样通过XML来表达,并采用通用事件通知架构(GENA)格式。当控制点首次预定时,会发送一个特殊的初始事件消息;此事件消息包含所有事件变量的名称和值,并允许订阅者对服务状态模式进行初始化。为了支持拥有多个控制点的环境,事件触发设计用于将任何动作的效果通知所有控制点。因此,所有订阅者均会收到全部的事件消息。订阅者收到关于所有已变更事件变量的事件消息,此事件消息无论状态变量为何改变都被发送(由于响应一个要求动作,或由于服务建模状态的变更)。
    UPnP网络中的第5步是展示。如果设备有用于展示的URL,那么控制点就可以通过此URL取得一个页面,在浏览器中加载该页面,并且根据页面的功能,支持用户控制设备和/或浏览设备状态。每一项完成的程度取决于展示页面和设备的具体功能。

你可能感兴趣的:(通用技术)