Skip to content

Modernize Workshop clients (Managed Session + new Subscription Engine + streaming) #768

Description

@romanett

Sub-issue of #755.

Why

The Workshop client samples are teaching examples for specific feature areas. They all reference Samples/ClientControls.Net4 and currently use raw Session + the classic subscription/monitored-item API. They should model the v2.0 ManagedSession and new subscription engine — and, where the scenario is "wait for X / short-lived", the streaming API (IStreamingSubscription).

Scope (client folders under Workshop/)

  • AlarmCondition/Client
  • Boiler/Client
  • DataAccess/Client
  • DataTypes/Client
  • Empty/Client
  • HistoricalAccess/Client
  • HistoricalEvents/Client
  • Methods/Client
  • PerfTest/Client
  • SimpleEvents/Client
  • UserAuthentication/Client
  • Views/Client
  • Aggregation/Client

Tasks

  1. Managed Session: connect via ManagedSession/ManagedSessionFactory with built-in reconnect across all clients.
  2. New Subscription Engine: migrate new Subscription / AddItem/ApplyChanges / per-item Notification to ISubscriptionManager/IManagedSubscription (MonitoredItems.TryAdd(name, MonitoredItemOptions, out _), ISubscriptionNotificationHandler).
  3. Streaming where it fits: for event/alarm "wait-for-X" flows (AlarmCondition, SimpleEvents, HistoricalEvents) demonstrate IStreamingSubscription (SubscribeEventsAsync/SubscribeDataChangesAsync over IAsyncEnumerable).
  4. Suggested order: do 1–2 representative clients first (e.g. DataAccess, AlarmCondition) to establish the pattern, then apply to the rest. Splitting into multiple PRs is fine.

References

Acceptance criteria

  • Each listed client builds and runs against 2.0.x.
  • No classic-engine or SessionReconnectHandler usage remains in the migrated clients.
  • Alarm/event samples demonstrate the streaming API where applicable.

Dependencies

Depends on the ClientControls.Net4 modernization foundation issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions