Middleware, defined broadly, consists of the intersection of all the things that applications developers do not want to do with all that network engineers do not want to do. As such, there are numerous services that applications would like to utilize rather than having to perform those functions themselves. These services can be roughly grouped into three categories, as described below.