Prefix: Supported .NET Technologies and Profiling Abilities

What is Prefix?

Prefix is a lightweight .NET CLR profiler. It does not track every single method called by your app like standard profilers do (ANTS, dotTrace, Visual Studio, etc). Prefix only tracks certain methods in your code. Because of this Prefix does not slow your app down and you can use it all the time.

The following frameworks are automatically supported by Prefix with no code or config changes unless noted. Profiler traces will automatically include details from these libraries. Please note that most async functions are also supported.

Prefix will also automatically track key details associated within many of these technologies. For example, on a cache call it may automatically show the cache key used. Web requests will show the response status code and size.

UI Frameworks

The following are supported for IIS based apps.

  • ASP.NET Core RC1
  • WebForms
  • MVC
  • Web API
  • WCF
  • WebPages
  • Owin

3rd party routing frameworks:

  • Nancy
  • ServiceStack
  • Sitecore

Databases

  • SQL Server
  • MySql (MySql.Data.MySqlClient)
  • Oracle (Oracle.ManagedDataAccess & System.Data.OracleClient)
  • Postgres (Npgsql)
  • SQL Server CE
  • ODBC via OdbcCommand
  • Most ORM solutions like Entity Framework, NHibernate, Dapper, and Linq2SQL are supported.

Storage/NoSQL

  • MongoDB (MongoDB.Driver v1 & v2)
  • Elasticsearch
  • RavenDB
  • Azure libraries (see below)
  • AWS libraries (see below)

Logging

  • All thrown Exceptions
  • Debug.WriteLine
  • Trace.WriteLine
  • StackifyLib (Stackify’s SDK) direct logging

By adding the Stackify logging appender to your app config file you can view these logs:

  • log4net
  • NLog
  • Serilog

Cache

  • Redis (ServiceStack & StackExchange)
  • memcached (enyim)
  • AppFabric & Azure Cache (Microsoft cache)

Queues

  • Azure Service Bus
  • Azure Storage Queue
  • MSMQ
  • NServiceBus

Web Requests

  • Low level HttpWebRequest/HttpWebResponse
  • WebClient
  • HttpClient
  • RestSharp
  • Auto generated WCF proxy clients
  • Plus others from libraries that use HTTP within them like Elasticsearch, Azure storage, etc

Where possible, web requests will track total download time, serialization and de-serialization automatically. Read our blog post about this: ‘Why Calling a Web Service Takes Longer Than You Think’

Azure

  • SQL Azure
  • Storage (Blobs, Queues, Tables)
  • Document DB
  • Azure Service Bus
  • Caching (via Redis & AppFabric support)

AWS

  • S3
  • SimpleDB
  • SimpleEmail
  • SimpleNotificationService (SNS)
  • SimpleWorkflow
  • SQS
  • ElastiCache (via memcached & redis support)
  • CloudSearch
  • Redshift
  • ElasticMapReduce
  • ElasticTranscoder
  • Glacier

Other

Prefix also tracks and shows times for some other various activities

  • Estimated compilation time
  • HTTP Modules
  • Reading incoming HTTP post data and deserializing requests
  • Serializing and sending HTTP responses
  • Request queuing

Please also note that things like compilation, GC pauses, JIT time, IIS queuing and other things can also take time in your code and may not be reflected by Prefix.