"RuDI is an architectural approach whose goal is to achieve loose coupling among interacting software components instead of linking to libraries. A service is a unit of work of the desktop done by a service provider to achieve desired end results for a 3rd party service consumer. How does RuDI achieve loose coupling among interacting software agents? It does so by employing two architectural constraints: An extensible XML schema allows new versions of services to be introduced without breaking existing services. Second we send messages over a protocol instead of calling explicit individual member functions."