The latest version of Diffusion™ contains new features,
performance enhancements and bug fixes.
The Diffusion Community Site is now available at community.pushtechnology.com
By signing up for the community, you can:
- Download Diffusion with a free community license - both Production and Evaluation
licenses are available
- View existing Enterprise community licenses, and request new ones
- View and manage existing Cloud services
- Access developer resources
We plan to expand the community site over time to become the central hub for all
developer-focused activities for Diffusion.
New update API
The client API includes a major revision of the 'update' facility, with new capabilities.
The new API allows clients more flexible options when updating topic values. It adds
conditional updates, non-exclusive update streams, and topic creation on demand through the
Update streams allow multiple clients to safely update topics without exclusive locking.
This supports more interactive collaborative updates.
The topic type for updates is enforced on the client, and checked by the server, removing a
class of potential application bugs.
Opt-in constraints allow applications to choose an appropriate optimistic or pessimistic
locking scheme. The conditional constraints include the use of session locks thus allowing a
cross cluster locking scheme to be applied when updating topics.
Update streams take advantage of 'delta' calculations so that only the difference from the
last update needs to be sent to the server, which can result in considerable reductions in
bandwidth requirements for topic updaters. The update stream protocol also voids repeatedly
sending the topic path for each update.
It is also now possible to remove the value of a string, int64 or double topic by setting
its value to null.
libraries. It will be added to the Apple client in a future release.
For full details
see Updating topics.
New fetch API
The client API includes a major revision of the 'fetch' facility, with new capabilities.
The new API allows a client to retrieve typed data and/or specifications of selected topics.
It also avoids issues relating to large result sets by providing the capability to page
through results in both forward and reverse directions.
For full details see Fetching the current value of a topic.
Automatic compression of topic updates
Published topic updates are now automatically compressed by the server.
Compression provides significant bandwidth reductions with no code changes. The benefits
are data dependent and will vary for each application, but we expect typical savings to be
Compression is on by default but can be disabled on a per-connector basis in the server
configuration or on a per-topic basis using the COMPRESSION topic property. Updates for a
library only supports compression if the zlib library is downloaded; it is packaged
separately to reduce the download size of the core library. Compression support will be
added to the Apple client in a later release.
Client-proposed session properties
It is now possible for a client to propose user-defined session properties when opening a
session. This allows client sessions the ability to provide property values that can be used
for filtering sessions in many session based features.
Messages sent to clients, or topics that the client gets subscribed to, can be controlled
via their session property values. For example, a client could provide a property called
"Department" and session filters could then be applied on a per-department basis.
Another possible use is for the client to supply supplementary credentials which can then
be checked by the authentication handler.
Such user-defined properties can be accepted, changed or vetoed by authentication handlers
that implement the new Authenticator interface.
Android and C client libraries. It will be added to the Apple client in a future
New Authenticator interface
A new Authenticator interface has been introduced for authentication
handlers which provides significant advantages over the old
Using the new interface, the authenticator is passed a full set of fixed session properties
(including the Session Identifier and assigned security roles) as well as any user-defined
session properties proposed by the client on opening the session. The authenticator can
filter the user-defined properties as required and can also change the values of a subset of
the fixed session properties.
The authenticator interface is available in the .NET, Java, Android, and C client
New $Roles session property
A new session property has been introduced which provided the security roles assigned to a
session. The new authenticator interface can change the value of this property and thus
change the roles assigned to a session.
The session filter language has been extended to include a new 'hasRoles' clause allowing
sessions to be filtered according to the roles assigned to them.
'Change roles' operation
An operation has been added to the Client Control API that allows client sessions with
sufficient permissions to either increase or decrease the permissions available to other
Changing roles will cause the session's topic selections to be re-evaluated. The session
will be unsubscribed from topics to which it no longer has access and will be subscribed to
topics to which it has gained access if they match the session's topic selections.
The change roles operation is available in the .NET, Java, and Android client libraries. It
Java 9, 10 and 11 support in Java client
Java versions 9, 10 and 11 are now supported for Java clients in addition to Java 8. Java 8
is still required for the server.
Request-response messaging in the C API
Request/response messaging has now been included in the C API.
One-way messaging deprecated
One-way messaging is deprecated from this release. Request/response messaging can be used
to fully replace one-way messaging. The type-safe API bindings of request/response messaging
make it safer and easier to use.
The client API has been streamlined and simplified by removing support for legacy topic
types and removing items deprecated since release 6.0. This all contributes towards a
simpler, easier to use, yet more powerful API.
The installer now presents a simpler set of component choices.
In addition to those mentioned above, there have been many minor improvements to the
product. See the
http://docs.pushtechnology.com/docs/6.2.1/ReleaseNotice.html for full details.