Providing redundant information should generally be avoided. But to fulfil the needs of different clients, it may be helpful.
Using complex DataVariablesautomatically leads to providing redundant information, because the information is directly provided in the complex DataTypeof the Value Attributeof the complex Variable, and also exposed individually in the components of the complex Variable.
The diagnostics information about subscriptions is provided in two different locations. One location is the SubscriptionDiagnosticsArrayof the ServerDiagnostics Object, providing the information for all subscriptions of the Server. The second location is the SubscriptionDiagnosticsArrayof each individual SessionDiagnosticsObject Object, providing only the subscriptions of the session. This is useful because some clients may be interested in only the subscriptions grouped by sessions, whereas other clients may want to access the diagnostics information of all sessions at once.
The SessionDiagnosticsArrayand the SessionSecurityDiagnosticsArrayof the SessionsDiagnosticsSummary Objectdo not expose their individual entries, although they represent an array of complex data structures. But the information of the entries can also be accessed individually as components of the SessionDiagnostics Objectsprovided for each session by the SessionsDiagnosticsSummary Object. A client can either access the arrays (or parts of the arrays) directly or browse to the SessionDiagnostics Objectsto get the information of the individual entries. Thus, the information provided is redundant, but the Variablescontaining the arrays do not expose their individual entries.