v4.0.0
This is a major technical update with minimal impact to the customer experience.
Framework Migrations
- ASP.NET MVC Framework (
/Web
) to ASP.NET Core 3 - ASP.NET WebForms (
/Forms
) to ASP.NET Core 3 - .NET Framework version of OnTopic Library to .NET Standard, C# 8
- ASP.NET WebForms version of OnTopic Editor to ASP.NET Core Razor Class Library
Note: The forms, in particular, are a ground up rewrite.
Library Improvements
The update to OnTopic Library introduces the following benefits:
- Establishing a Composition Root for Dependency Injection through new architectural patterns
- Use of new View Components, such as
MenuViewComponent
, for handling shared components across the site - Replacement of legacy Code Contracts with C#’s new nullability context
- Introduction of new
ReverseTopicMappingService
for mapping binding models back to topics - Support for new mapping scenarios such as
[Metadata()]
,[Flatten]
, and[MapToParent()]
, alongside support for compatible collections, nullable types, topic references, &c. - No more dependencies on the legacy
TopicRepository
static class fromIgnia.Topics.Web
- No more dependencies on the legacy
ITopicRoutingService
for identifying the current topic - Both OnTopic Library and OnTopic Editor now built via continuous integration and imported via NuGet packages
Build Improvements
- Most client-side dependencies are now downloaded via npm’s
packages.json
- Dependencies are concatenated, mapped, and copied to final locations via Gulp.js
- Gulp.js build process neatly allows for one off view resources that aren’t part of main assemblies
- Removal of dozens of legacy libraries that required manual side-loading and updating to maintain
- New deployment process allows direct publishing from Visual Studio without worrying about overwriting legacy content files; those are now excluded via
csproj
General Improvements
- Use of composable binding models for constructing customer forms that share core features
- Dramatic reduction of legacy code and configuration, leading to a much simpler code base
- Significant improvement in startup time, primarily due to ASP.NET Core 3's view compilation
- Replacement of the legacy Membership Database with new Azure AD for authenticating via OpenID Connect
- Improved configuration setup through
secrets.json
and App Service Configuration
This should provide a reliable technological foundation of the site for quite some time.