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
- Managed Session: connect via
ManagedSession/ManagedSessionFactory with built-in reconnect across all clients.
- New Subscription Engine: migrate
new Subscription / AddItem/ApplyChanges / per-item Notification to ISubscriptionManager/IManagedSubscription (MonitoredItems.TryAdd(name, MonitoredItemOptions, out _), ISubscriptionNotificationHandler).
- Streaming where it fits: for event/alarm "wait-for-X" flows (
AlarmCondition, SimpleEvents, HistoricalEvents) demonstrate IStreamingSubscription (SubscribeEventsAsync/SubscribeDataChangesAsync over IAsyncEnumerable).
- 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.
Sub-issue of #755.
Why
The Workshop client samples are teaching examples for specific feature areas. They all reference
Samples/ClientControls.Net4and currently use rawSession+ the classic subscription/monitored-item API. They should model the v2.0ManagedSessionand new subscription engine — and, where the scenario is "wait for X / short-lived", the streaming API (IStreamingSubscription).Scope (client folders under
Workshop/)AlarmCondition/ClientBoiler/ClientDataAccess/ClientDataTypes/ClientEmpty/ClientHistoricalAccess/ClientHistoricalEvents/ClientMethods/ClientPerfTest/ClientSimpleEvents/ClientUserAuthentication/ClientViews/ClientAggregation/ClientTasks
ManagedSession/ManagedSessionFactorywith built-in reconnect across all clients.new Subscription/AddItem/ApplyChanges/ per-itemNotificationtoISubscriptionManager/IManagedSubscription(MonitoredItems.TryAdd(name, MonitoredItemOptions, out _),ISubscriptionNotificationHandler).AlarmCondition,SimpleEvents,HistoricalEvents) demonstrateIStreamingSubscription(SubscribeEventsAsync/SubscribeDataChangesAsyncoverIAsyncEnumerable).DataAccess,AlarmCondition) to establish the pattern, then apply to the rest. Splitting into multiple PRs is fine.References
Acceptance criteria
SessionReconnectHandlerusage remains in the migrated clients.Dependencies
Depends on the
ClientControls.Net4modernization foundation issue.