Architecture UPnP/DLNA

Voici la séparation définition vs runtime :

classDiagram
  %% Definition Layer
  class Device
  class Service
  class Action
  class StateVariable

  %% Runtime Layer
  class Server
  class DeviceInstance
  class ServiceInstance
  class StateVariableInstance
  class ActionHandler

  %% Associations Definition Layer
  Device "1" --> "1..*" Service
  Device "0..*" --> "0..*" Device
  Service "0..*" --> "0..*" Action
  Service "1..*" --> "1..*" StateVariable

  %% Associations Runtime Layer
  Server "1" --> "1..*" DeviceInstance
  DeviceInstance "1" --> "1..*" ServiceInstance
  DeviceInstance "0..*" --> "0..*" DeviceInstance
  ServiceInstance "1" --> "1..*" StateVariableInstance
  ServiceInstance "0..*" --> "0..*" ActionHandler

  %% Instantiation links
  DeviceInstance ..> Device : instantiates
  ServiceInstance ..> Service : instantiates
  StateVariableInstance ..> StateVariable : instantiates
  ActionHandler ..> Action : handles

  %% Styling
  class Device,Service,Action,StateVariable fill:#f9f,stroke:#333,stroke-width:1px
  class Server,DeviceInstance,ServiceInstance,StateVariableInstance,ActionHandler fill:#9f9,stroke:#333,stroke-width:1px