sql >> Database teknologi >  >> NoSQL >> Redis

ServiceStack:Genindsæt pipeline, når du kalder en tjeneste manuelt?

Hvilke dele af rørledningen går tabt?

Ingen af ​​anmodningspipelinen udføres:

myRequestService.Any(e.Request);

Kalder kun fysisk Any C#-metoden for din MyRequestService klasse, gør den (og kan heller ikke) noget andet.

Den anbefalede måde at påkalde andre tjenester under en serviceanmodning er at bruge servicegatewayen.

Men hvis du vil påkalde en tjeneste uden for en HTTP-anmodning, kan du bruge RPC-gatewayen til at udføre ikke-pålidelige tjenester, da den påkalder den fulde anmodningspipeline og konverterer HTTP-fejlsvar til indskrevne fejlsvar:

HostContext.AppHost.RpcGateway.ExecuteAsync()

For at udføre interne/betroede tjenester uden for en serviceanmodning kan du bruge HostContext.AppHost.ExecuteMessage som brugt af ServiceStack MQ, som anvender meddelelsesanmodningsanmodnings-/svarfiltre, servicehandlingsfiltre og hændelser.

Jeg har registreret mig hos container.AddScoped

Brug ikke Request Scoped-afhængigheder uden for en HTTP-anmodning, brug Singleton, hvis afhængighederne er ThreadSafe, ellers registrer dem som Transient. Hvis du har brug for at videregive lagerplads pr. anmodning, skal du sende dem i IRequest.Items .




  1. Hvad er fordelen ved at bruge et ObjectId i stedet for en almindelig streng?

  2. Mongo unikke indeks ufølsomme

  3. Sådan bruger du mongoimport til at importere csv

  4. Hvordan aktiverer jeg TLS til Redis 6 på Sidekiq?