Pattern for multiple renderings calling same serviceSitecore User Group April 2019 Meetup - Queen City, Manchester, NHPlaceholder settings on sub-renderingsDatabase Query for Sitecore database final renderings fieldsWhat is the recommended pattern for dynamic paragraph systems in Sitecore?Habitat - Renderings vs SublayoutsCannot setup content for same control multiple times in a page created using a template in sitecore 7.5Sitecore Renderings SortingView Renderings at run-timeGet renderings for a placholderDisplayName set to “__Standard Value” on RenderingsHow do I assign the same Conditional Rendering Rules to Multiple Components?
Different meanings of こわい
How can I prove that a state of equilibrium is unstable?
Eccentricity going to zero -- Geometric definition conic
Why did early computer designers eschew integers?
How can I deal with my CEO asking me to hire someone with a higher salary than me, a co-founder?
Is it "common practice in Fourier transform spectroscopy to multiply the measured interferogram by an apodizing function"? If so, why?
Error when overriding validators pipeline to create custom error text
Did A320 NEO need an equivalent to 737 MAX MCAS because of its bigger engines?
How to coordinate airplane tickets?
How exploitable/balanced is this homebrew spell: Spell Permanency?
What is the opposite of "eschatology"?
Why do I get "Binary file matches" with grep -I?
How to install cross-compiler on Ubuntu 18.04?
How to aggregate categorical data in R?
My singleton can be called multiple times
Processor speed limited at 0.4 Ghz
A hang glider, sudden unexpected lift to 25,000 feet altitude, what could do this?
How to keep a dark protagonist who wants to keep his humanity dark?
Avoiding the "not like other girls" trope?
Are British MPs missing the point, with these 'Indicative Votes'?
Salesman text me from his personal phone
Machine learning testing data
Does int main() need a declaration on C++?
How do conventional missiles fly?
Pattern for multiple renderings calling same service
Sitecore User Group April 2019 Meetup - Queen City, Manchester, NHPlaceholder settings on sub-renderingsDatabase Query for Sitecore database final renderings fieldsWhat is the recommended pattern for dynamic paragraph systems in Sitecore?Habitat - Renderings vs SublayoutsCannot setup content for same control multiple times in a page created using a template in sitecore 7.5Sitecore Renderings SortingView Renderings at run-timeGet renderings for a placholderDisplayName set to “__Standard Value” on RenderingsHow do I assign the same Conditional Rendering Rules to Multiple Components?
Scenario
A page contains several separate renderings. Each rendering displays some data which is returned from a remote service. Several of these data items come from the same remote service.
This leads to that service being requested multiple times per page load, which seems inefficient.
Separate renderings are desirable as they can be used elsewhere on the website, and provides content editors flexibility.
Solutions
Does an established pattern exist to handle this scenario in an efficient way?
presentation
add a comment |
Scenario
A page contains several separate renderings. Each rendering displays some data which is returned from a remote service. Several of these data items come from the same remote service.
This leads to that service being requested multiple times per page load, which seems inefficient.
Separate renderings are desirable as they can be used elsewhere on the website, and provides content editors flexibility.
Solutions
Does an established pattern exist to handle this scenario in an efficient way?
presentation
add a comment |
Scenario
A page contains several separate renderings. Each rendering displays some data which is returned from a remote service. Several of these data items come from the same remote service.
This leads to that service being requested multiple times per page load, which seems inefficient.
Separate renderings are desirable as they can be used elsewhere on the website, and provides content editors flexibility.
Solutions
Does an established pattern exist to handle this scenario in an efficient way?
presentation
Scenario
A page contains several separate renderings. Each rendering displays some data which is returned from a remote service. Several of these data items come from the same remote service.
This leads to that service being requested multiple times per page load, which seems inefficient.
Separate renderings are desirable as they can be used elsewhere on the website, and provides content editors flexibility.
Solutions
Does an established pattern exist to handle this scenario in an efficient way?
presentation
presentation
asked 3 hours ago
SteveSteve
1555
1555
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Register the service in your DI scoped for the request.
When the first component calls the service, save the value in the service.
When next component wants the same data, the service will already have it.
I used this blog post as a guide how to:
https://www.coreysmith.co/sitecore-dependency-injection-scoped-services/
In shortcut - register service:
public class ExampleConfigurator : IServicesConfigurator
public void Configure(IServiceCollection serviceCollection)
serviceCollection.AddScoped<IScopedService, ScopedService>();
And the service itself:
public class ScopedService : IScopedService
private object _externalData;
public object ExternalData
get return _externalData ?? (_externalData = GetDataFromExternalProvider());
And register the configurator:
<configuration>
<sitecore>
<services>
<configurator type= "ExampleConfigurator, MyAssembly"/>
</services>
</sitecore>
<configuration>
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "664"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsitecore.stackexchange.com%2fquestions%2f17864%2fpattern-for-multiple-renderings-calling-same-service%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Register the service in your DI scoped for the request.
When the first component calls the service, save the value in the service.
When next component wants the same data, the service will already have it.
I used this blog post as a guide how to:
https://www.coreysmith.co/sitecore-dependency-injection-scoped-services/
In shortcut - register service:
public class ExampleConfigurator : IServicesConfigurator
public void Configure(IServiceCollection serviceCollection)
serviceCollection.AddScoped<IScopedService, ScopedService>();
And the service itself:
public class ScopedService : IScopedService
private object _externalData;
public object ExternalData
get return _externalData ?? (_externalData = GetDataFromExternalProvider());
And register the configurator:
<configuration>
<sitecore>
<services>
<configurator type= "ExampleConfigurator, MyAssembly"/>
</services>
</sitecore>
<configuration>
add a comment |
Register the service in your DI scoped for the request.
When the first component calls the service, save the value in the service.
When next component wants the same data, the service will already have it.
I used this blog post as a guide how to:
https://www.coreysmith.co/sitecore-dependency-injection-scoped-services/
In shortcut - register service:
public class ExampleConfigurator : IServicesConfigurator
public void Configure(IServiceCollection serviceCollection)
serviceCollection.AddScoped<IScopedService, ScopedService>();
And the service itself:
public class ScopedService : IScopedService
private object _externalData;
public object ExternalData
get return _externalData ?? (_externalData = GetDataFromExternalProvider());
And register the configurator:
<configuration>
<sitecore>
<services>
<configurator type= "ExampleConfigurator, MyAssembly"/>
</services>
</sitecore>
<configuration>
add a comment |
Register the service in your DI scoped for the request.
When the first component calls the service, save the value in the service.
When next component wants the same data, the service will already have it.
I used this blog post as a guide how to:
https://www.coreysmith.co/sitecore-dependency-injection-scoped-services/
In shortcut - register service:
public class ExampleConfigurator : IServicesConfigurator
public void Configure(IServiceCollection serviceCollection)
serviceCollection.AddScoped<IScopedService, ScopedService>();
And the service itself:
public class ScopedService : IScopedService
private object _externalData;
public object ExternalData
get return _externalData ?? (_externalData = GetDataFromExternalProvider());
And register the configurator:
<configuration>
<sitecore>
<services>
<configurator type= "ExampleConfigurator, MyAssembly"/>
</services>
</sitecore>
<configuration>
Register the service in your DI scoped for the request.
When the first component calls the service, save the value in the service.
When next component wants the same data, the service will already have it.
I used this blog post as a guide how to:
https://www.coreysmith.co/sitecore-dependency-injection-scoped-services/
In shortcut - register service:
public class ExampleConfigurator : IServicesConfigurator
public void Configure(IServiceCollection serviceCollection)
serviceCollection.AddScoped<IScopedService, ScopedService>();
And the service itself:
public class ScopedService : IScopedService
private object _externalData;
public object ExternalData
get return _externalData ?? (_externalData = GetDataFromExternalProvider());
And register the configurator:
<configuration>
<sitecore>
<services>
<configurator type= "ExampleConfigurator, MyAssembly"/>
</services>
</sitecore>
<configuration>
edited 3 hours ago
answered 3 hours ago
Marek MusielakMarek Musielak
11.4k11136
11.4k11136
add a comment |
add a comment |
Thanks for contributing an answer to Sitecore Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsitecore.stackexchange.com%2fquestions%2f17864%2fpattern-for-multiple-renderings-calling-same-service%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown