Description of problem
There is no interface for ClientResourceManager and it does not currently support Dependency Injection
Description of solution
Extract interface and register with Dependency Injection container.
Description of alternatives considered
N/A
Screenshots
N/A
Additional context
This extension point will allow developers to add significant performance improvements to DNN. After modifying my ClientResourceManager with async scripts and adjusting orders I had DNN loading on average 100ms-300ms faster on each request. This performance change is a breaking change to DNN which is why I want to extract an interface instead. If we open up this extension point I can implement my performance changes as a module that can be used in current releases of DNN.
A proper implementation of this change will completely de-couple DNN from the 3rd party Client Resource Management tool used in DNN. It'll give us an opportunity to investigate new ways to handle client scripts that will work in a potential .NET Core solution of DNN.
Affected browser
N/A
I will be submitting a pull request for this, I have implemented this in a fork already and it is working
Required Work
DotNetNuke.Web.Client has a circular dependency with DotNetNuke.Library and the chosen solution at time of implementation was to side-load the dlls into memory using reflection. This is an anti-pattern but was needed to solve the problem at the time. Prior to completing any feature for this we should add Dependency Injection for the following areas of DNN
| Feature/Control |
Interface |
Pull Request ID |
Status |
| Globals.Status |
IApplicationInfo & IApplicationStatusInfo |
#3988 |
✅ Completed |
| HostController |
IHostController |
#3990 |
✅ Completed |
| PortalController |
IPortalController |
|
|
| PortalAliasController |
IPortalAliasController |
#4021 |
✅ Completed |
Description of problem
There is no interface for
ClientResourceManagerand it does not currently support Dependency InjectionDescription of solution
Extract interface and register with Dependency Injection container.
Description of alternatives considered
N/A
Screenshots
N/A
Additional context
This extension point will allow developers to add significant performance improvements to DNN. After modifying my ClientResourceManager with async scripts and adjusting orders I had DNN loading on average 100ms-300ms faster on each request. This performance change is a breaking change to DNN which is why I want to extract an interface instead. If we open up this extension point I can implement my performance changes as a module that can be used in current releases of DNN.
A proper implementation of this change will completely de-couple DNN from the 3rd party Client Resource Management tool used in DNN. It'll give us an opportunity to investigate new ways to handle client scripts that will work in a potential .NET Core solution of DNN.
Affected browser
N/A
I will be submitting a pull request for this, I have implemented this in a fork already and it is working
Required Work
DotNetNuke.Web.Clienthas a circular dependency withDotNetNuke.Libraryand the chosen solution at time of implementation was to side-load the dlls into memory using reflection. This is an anti-pattern but was needed to solve the problem at the time. Prior to completing any feature for this we should add Dependency Injection for the following areas of DNNIApplicationInfo&IApplicationStatusInfoIHostControllerIPortalControllerIPortalAliasController