etishor / Metrics.NET

The Metrics.NET library provides a way of instrumenting applications with custom metrics (timers, histograms, counters etc) that can be reported in various ways and can provide insights on what is happening inside a running application.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Break down the project

peske opened this issue · comments

Guyz, I strongly believe that it is the time to break the project down to smaller pieces. There are two "groups" of features that can (and should) be managed as a separate projects. The first group is made of mandatory parts that still can be isolated like:

  • ConcurrencyUtils
  • HdrHistogram
  • LibLog

The second group is made from optional parts:

  • ElasticSearch
  • InfluxDB
  • Graphite
  • Even Json

What I'm trying to say is that you should make something like:

  • Metrics.NET.Core
  • Metrics.NET.InfluxDB
  • Metrics.NET.ElasticSearch
  • etc.

Basically Metrics.NET.Core should be able only to report to console window; for additional reports one can pick the appropriate additional module.

There are few strong reasons for doing so:

  • The project will be much easier to manage, with clear boundaries;
  • Changing some optional feature (for example Metrics.NET.InfluxDB) will not cause changing version of the core. Basically if managed separately, an optional module would not prevent / slow down releasing the core module.
  • Any kind of a bug or poor implementation in one module (again for example in Metrics.NET.InfluxDB) will not influence the quality of the core;
  • Installed footprint would be smaller;
  • Some improvements (for example .NET Core version) would be easier to implement. You wouldn't have ensure that everything is portable - instead you can do this step by step (module by module)

Thanks!