2011-09-11 13 views
19

Come posso utilizzare mvc-mini-profiler in un'applicazione console C#?Posso usare il mini profiler mvc in un'applicazione console?

Inoltre, il mini profiler mvc mette le statistiche profilate effettive nella parte sinistra di ogni pagina Web o è solo un codice javascript personalizzato fatto manualmente?

Ho scaricato ed eseguito l'esempio di mvc e non riesco a trovare quel codice che inserisce i risultati in tale javascript popup.

risposta

11

L'oggetto di temporizzazione core (MiniProfiler) dovrebbe funzionare correttamente, così come i collegamenti profilati, ecc .; comunque avresti bisogno di;

  • aggiungere il proprio utente per mostrare i risultati
  • definire il proprio campo di applicazione/vita (per il web è facile - solo il http-request)
  • fornire il proprio ganci di archiviazione (v'è un'API di estensione per questo, che utilizza http-context per IIRC default)
  • sia passare il profiler intorno manualmente, oppure definire un modo ragionevole per cercare l'istanza profiler corrente

so che alcune persone hanno utilizzato porzioni di esso per WPF ecc, quindi può essere usato - ma IMO potrebbe avere senso scegliere solo i bit che hanno senso, e usarli per scrivere una libreria personalizzata che aggiunge qualcosa di fantastico.

+1

@ Marco ... hai qualche screenshot di questa esecuzione in produzione ? Lo stai mantenendo con le ultime versioni di MiniProfiler? –

+0

@RichardB il mio obiettivo principale è sul web. Non ho scenari di esempio specifici in una console. –

20

sì, è possibile! E ho creato un pacchetto NuGet per rendere ancora più semplice farlo funzionare.

Partenza MiniProfiler.Windows: http://nootn.github.com/MiniProfiler.Windows/

anche per un articolo dettagliato su come progettare una buona console app per profilatura: http://healthedev.blogspot.com.au/2012/07/performance-profiling-console-or-winwpf.html

+2

Ehi, il tuo pacchetto nuget funziona alla grande. Una piccola cosa: ho dovuto usare un reindirizzamento dell'assembly in quanto sembra dipendere da una versione precedente di MiniProfiler che l'ultima. Potresti aggiornare il tuo nuspec in modo che dipenda dall'ultima versione. Grazie comunque per lo sforzo :) –

+2

Sembra non essere compatibile con la versione 3.1.1.140. Qualche piano per sistemarlo? – Darek

+2

@PaulSuart Sto affrontando l'errore followint 'Metodo 'Avvia' nel tipo 'MiniProfiler.Windows.ConsoleProfilingProvider' dall'assembly 'MiniProfiler.Windows, Versione = 1.0.0.0, Culture = neutral, PublicKeyToken = null' non ha un'implementazione. "(System.TypeLoadException) \t Messaggio eccezione =" Metodo 'Start' nel tipo 'MiniProfiler.Windows.ConsoleProfilingProvider' da assembly 'MiniProfiler.Windows, Versione = 1.0.0.0, Culture = neutral, PublicKeyToken = null' non ha un'implementazione .' Come aggiornare nuspec? Non c'è alcun file .nuspec nella mia cartella della soluzione. La versione MiniProfiler è 3.1.1.140 –

0

MiniProfiler V4 (attualmente non definitiva) ha metodo RenderPlainText(). Si può usare direttamente nella console o un'applicazione server asincrona multithread, senza alcuna configurazione aggiuntiva:

public void Foo() 
{ 
    MiniProfiler.Start("Interesting subroutine"); 
    using (MiniProfiler.Current.Step("Step1")) 
    { 
     using (MiniProfiler.Current.Step(nameof(AccessDb))) 
     { 
      AccessDb(); 
     } 
     Thread.Sleep(100); 
    } 
    using (MiniProfiler.Current.Step("Step2")) 
    { 
     Thread.Sleep(100); 
    } 
    MiniProfiler.Stop(); 
    Console.WriteLine(MiniProfiler.Current.RenderPlainText()); 
} 

Questo frammento di codice produce output seguente:

pcname al 2017/08/02 08:44:36
    subroutine Interessante = 309.2ms
> Step1 = 204.8ms
> > AccessDB = 103.8ms (SQL = 56.2ms in 2 cmds)
> Step2 = 100.9ms

Come si può vedere output include breve riassunto di tempi personalizzati (SQL in questo caso). È possibile modificare facilmente questo comportamento (ad esempio, includere il testo del comando) fornendo la propria versione di RenderPlainText().

Per ulteriori informazioni consulta:

Problemi correlati