Oqtane 3.4.0 Released
By: Shaun Walker
The 3.4.0 release is primarily focused on performance, as the permissions system has been overhauled to avoid unnecessary encoding and parsing of custom access control strings. This release also includes enhancements to connection string management, numerous stabilization and user experience improvements, and the ability to dynamically generate an XML sitemap for seach engine indexing.
The permissions system in Oqtane is an essential core service as it manages access control for the entire framework and extensions. Traditionally Oqtane permissions have been transformed from their native storage format into a couple of other custom formats using a variety of string manipulation techniques. The reason for this was because the very early versions of Blazor had a very simplistic JSON serializer which could only handle primitive types (ie. integers, strings, etc...). Blazor now has a robust System.Text.Json implementation which can handle complex data structures, so it is no longer necessary to use custom serialization techniques. The Oqtane logic was refactored to eliminate all custom strings and simply use standard serialized objects. This makes the code much easier to understand and maintain, reducing processing, and improving performance.
One of the areas which has resulted in some support issues in the past is connection string managemement. Developers generally expect connection strings to be located in appsettings.json, so the fact that Oqtane had a master connection string in appsettings.json but stored tenant connection strings in the master database caused some confusion. This was especially problematic when troubleshooting installation issues or trying to migrate Oqtane to new infrastructure. The framework has now been enhanced to store all connection strings in appsettings.json (upgrade logic has been included to perform this migration automatically). Special thanks goes to Daniel Mettler for submitting this enhancement request and including a detailed analysis of the problem as well as a suggested solution.
An XML sitemap includes links to pages in your website that you want search engines to index. Having an XML sitemap is not a requirement, however since not all pages are easily discoverable in your site, it can be very useful in allowing search engines to find your content as it will help improve your SEO ranking. An XML sitemap generator has been added which dynamically includes all publicly accessible pages and also includes the ability for modules to generate links to specific content items (the XML sitemap for a site can be accessed at /pages/sitemap.xml).
With .NET 7 being released for public availability in November 2022, the 3.4.0 release will be the last Oqtane release based on .NET 6. The next release will be based on .NET 7 and from a semantic versioning perspective, will be versioned as 4.0.0. That being said, we do not expect any breaking changes in the Oqtane framework itself... the major version increment is solely to communicate to users that the underlying .NET dependencies have gone through a generational upgrade.
This release includes 62 pull requests by 6 different contributors, pushing the total number of project commits all-time to over 3300. The Oqtane framework continues to evolve at a rapid pace to meet the needs of .NET developers. The 3.4.0 release is available for download on Github and is running in production at https://www.oqtane.org and https://www.blazorcms.net.