2011-12-15 5 views
14

Mi piace molto quello che ho visto per quanto riguarda MvcMiniProfiler. Mi piacerebbe utilizzare le funzionalità di monitoraggio SQL su applicazioni non Web (servizi Windows, unit test, ecc.). È possibile o richiede un ambiente HTTP? L'ovvia differenza sarebbe la consegna dei risultati, ma se riesco a serializzare i risultati su JSON o somesuch, andrebbe bene.MvcMiniProfiler richiede un'applicazione Web per funzionare o può essere utilizzata in librerie pure, ad esempio nei test unitari?

Ho unito un semplice test dell'unità cercando di farlo funzionare, ma MiniProfiler.Current sembra essere sempre nullo, anche dopo aver eseguito MiniProfiler.Start().

Sto abbaiando sull'albero sbagliato qui?

risposta

12

Ottima domanda. Il core (l'istanza del profiler e i wrapper di connessione) non sono collegati a http. Se puoi creare la tua istanza, dovrebbe funzionare. Tuttavia, tutto il codice dell'interfaccia utente è orientato alle applicazioni web.

So di persone che lo utilizzano in WPF, winforms, ecc., Quindi dovrebbe funzionare correttamente. Tuttavia, dovresti anche trovare una "unità di misura logica" misurata. In un'app web è ovvio: una richiesta.

Si noti che MiniProfiler.Current è puramente una comodità (è possibile inserire un'istanza ovunque), ma sono abbastanza sicuro che abbiamo reso possibile creare la propria astrazione (anziché il contesto http).

(va a controllare il codice)

ah sì, qui andiamo:

public static MiniProfiler Current 
{ 
    get 
    { 
    MiniProfiler.Settings.EnsureProfilerProvider(); 
    return MiniProfiler.Settings.ProfilerProvider.GetCurrentProfiler(); 
    } 
} 

in modo da poter fornire il proprio ProfileProvider e poi .Current dovrebbe funzionare.

+0

Più eccellente. Ora vedo che non è fino a WebRequestProfilerProvider che vediamo un riferimento al contesto HTTP, e questo è al di sotto di alcune astrazioni genitore che non fanno presupposti HTTP. Grazie! – CoolUserName

Problemi correlati