Project Description

NetMX is a port of Java Management Extensions (JMX) specification to .NET. NetMX is a lightweight technology that enables remote monitoring and management of .NET applications using built-in ASP.NET UI and/or standard protocols, like WS-Management.

Current (0.7) version of NetMX contains all the core JMX features (excluding Model MBeans) and can be accessed remotely using three connectors:
  • Remoting (port of Java's RMI connector)
  • WCF (currently lacking support for subscribing to notifications)
  • JSR-262 (experimental implementation of platform-independent connector built on top of WS-Management protocol)
Full feature list can be found here.

What is JMX?

Wikipedia contains following note about JMX:

Java Management Extensions (JMX) is a Java technology that supplies tools for managing and monitoring applications, system objects, devices (e. g. printers) and service oriented networks. Those resources are represented by objects called MBeans (for Managed Bean). In the API, classes can be dynamically loaded and instantiated. Managing and monitoring applications can be designed and developed by Java Dynamic Management Kit.

Do I need NetMX?

Like for all architectural questions, the answer for this question is it depends. NetMX provides you with necessary tools to instrument, monitor and manage any .NET application, remotely. Moreover, it is a lightweight technology which means it does not require to modify hosting machine configuration nor administrative rights. NetMX management server is hosted in process of your application which means that you have full control over what and how is available for remote management. NetMX comes with two HTTP-enabled connectors (native .NET WCF and platform-independent JSR-262) so it does not require your to modify your firewall configuration.

My first MBean

The simplest standard MBean consists of following class-interface pair. To read full quick-start guide to NetMX, click here.

public interface CounterMBean //Must be same as class name + MBean suffix
{
   int Value { get; }
   void Add(int value)
}

public class Counter : CounterMBean
{
   public int Value { get; private set; }
   public void Add(int value)
   {
      Value += value;
   }
}

Architecture

JMX architecture can be described by following diagram (borrowed from Wikipedia):

JMX architecture

NetMX is a one-to-one port of JMX so architecture is almost the same as in the original framework. One of the exceptions is that there is no notion of adaptors in current implementation. The other is that there is no MXBeans since they are strongly dependant on Java platform. Simply speaking, MBeanServer is the place where all managed beans live. They are normal CLR objects with a restriction that nobody can access a managed bean directly, without calling MBeanServer. Standard beans are PONOs that implement an interface which defines attributes and operations that are accessible via MBeanServer. Dynamic beans implement special framework interface which enable them to change their signature (attributes and operations) over time.

Last edited Jan 7, 2010 at 4:33 PM by SzymonPobiega, version 16