Hva er forskjellen mellom ApplicationServices og RequestServices i Microsoft.AspNet.Http.HttpContext?

stemmer
16

I Startupklasse, kan jeg legge til tjenester i ConfigureServicesmetoden. Når jeg ønsker å få en bestemt tjeneste, det er 2 eiendommer i HttpContext eksempel, ApplicationServicesog RequestServices. Jeg lurer på forskjellen mellom dem og hvordan du bruker dem riktig.

Edit # 1: For eksempel i Startup klasse:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ICache, InProcessCache>();  // Line 1
    services.AddSingleton<ISystemClientResolver>(SystemClientResolver.CreateInstance); // Line 2
    services.AddScoped<SystemClient>(); // Line 3
    services.AddRvcBusiness(); // Line 4
    services.AddMvc(); // Line 5
}

Hvis jeg ikke ringe app.UseRequestServices()i Configure(IApplicationBuilder app)metoden, kan jeg få SystemClienteksempel ved Context.ApplicationServices.GetService(typeof(SystemClient)), men det er ikke for hver enkelt forespørsel, det virker Singleton og Context.RequestServiceser null. Når jeg kaller app.UseRequestServices()som dette:

public void Configure(IApplicationBuilder app)
{
    app.UseRequestServices();
    // ...
}

Context.RequestServiceser ikke null, og jeg kan få SystemClientforekomst av Context.RequestServices.GetService(typeof(SystemClient))og forekomsten er per forespørsel.

Publisert på 25/11/2014 klokken 09:01
kilden bruker
På andre språk...                            


1 svar

stemmer
11

ApplicationServiceser for levetiden til programmet ditt, mens RequestServiceser målrettet mot en bestemt forespørsel ( HttpContext). Videre RequestServiceskan være null. En spesiell RequestContainer mellomvare er hva initialiserer RequestServices:

app.UseRequestServices()vil bruke resultatet av ConfigureServicessom RequestServices

app.UseServices() og dets overbelastning kan du angi / endre forespørsel tjenester

Også hvis du bruker ruting / eller sikkerhets auth mellomvare, vil de automatisk sikre RequestServices er befolket også, siden de er avhengige av forespørsel scoped tjenestene selv.

Svarte 25/11/2014 kl. 23:26
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more