The 10.2 release is a major release which includes developer productivity, usability, security and performance improvements. The theme of the 10.2 release was "scale out" and there were a variety of powerful features which were added to the framework to provide additional scalability options.
Caching
One of the items which has been on the roadmap for a long time is the ability to scale Oqtane horizontally across multiple web instances (sometimes referred to as a "scale out" architecture). One of the primary limitations which prevented this capability in previous releases was related to caching. Traditionally, Oqtane has only supported in-process (memory) caching on a single web instance and did not have any ability to synchronize cache items across different web instances. In Oqtane 10.2 the powerful FusionCache library has now been integrated which provides "hybrid" caching capabilites to the framework. Hybrid caching refers to the ability for an application to rely on in-process caching for immediate access to cached information, as well as out-of-process caching for fallback and warm startup scenarios. In addition, FusionCache allows Oqtane to support cache synchronization across web instances using an industry standard Redis backplane. Oqtane includes its own abstraction CacheManager API to support multi-tenancy and simplify the effort of developers who want to utilize caching in their own applications.
Scheduled Jobs
Another item which needed to be addressed as part of the "scale out" enhancement was related to scheduled jobs. Oqtane has always included the ability to execute asynchronous workloads... on either a one-time, scheduled, or adhoc basis. In a multi-instance environment, most jobs are expected to only execute on a single instance. Luckily the Oqtane HostedServiceBase class already contained logic to orchestrate jobs, utilizing the database to keep track of the current state of every job to ensure a predicable workflow. However it is possible that a server may restart during a job execution, leaving a job in an incomplete state... and in these situations it is important for the system to be able to recognize and resolve these issues automatically without manual intervention. To facilitate this, a new property was added to job registrations to specify the estimated maximum duration for a job execution. If the system determines that a job has exceeded this duration it can assume that the job was terminated prematurely and should proceed with re-executing the job. In addition the logging which happens for every job now includes the unique Id of the Web Instance where it executed.
Logging
The logging system in Oqtane received some improvements in 10.2 as well. Specifically the system now records the remote IP address related to a log event, offering some additional context when investigating run-time scenarios. And consistent with the job logging mentioned above, the event log now includes the unique Id of the Web Instance where the log event occurred. And for those folks who would like to integrate with Oqtane with other logging providers which rely on the ILogger interface, it is now possible to configure the system to Broadcast log events.
Docker
Another item which has been on the roadmap for a long time is the ability to run Oqtane on containers. We are very thankful that a community member, Josef Bogad (@digitalsigi), focused on this area and was able to contribute some framework enhancements and documentation to explain how to run Oqtane on Docker. A dedicated repo was created for the documentation, and the enhancement to be able to include an external appsettings.override.json file was included in the 10.2 release.
Security
The 10.2.0 release has been upgraded to the latest .NET SDK version 10.0.8 which includes security patches for any issues identified in prior .NET 10 SDK releases from Microsoft. It also includes upgrades to Mailkit to address a published security vulnerability.
Open Source
To date, the open source project has recorded over 3546 pull requests from 58 contributors and has published 68 official releases, which ranks it among the most active open source projects within the .NET Foundation. The Oqtane framework continues to evolve at a rapid pace to meet the needs of .NET developers. The 10.2 release is available for download on Github and is running in production at https://www.oqtane.org, https://www.blazorcms.net, and https://www.blazorkit.net.
I've upgraded 6 Oqtane installs and all went flawless. I can see a noticeable increase in performance.