La arquitectura Cliente/Servidor se basa en el diseñar sistemas en capas. Cada capa tiene como objetivo encapsular y resolver un problema específico (almacenamiento, lógica de negocios, interfaz visual) e implementa un controlador que interactúa entre capa y capa. Lo que se propone es dividir este controlador en dos controladores. Cada controlador es específicamente diseñado para una capa. El paso de información ente ellos se hace utilizando XML como lenguaje estándar. De esta forma se pueden desarrollar sistemas para diferentes arquitecturas y diferentes lenguajes sin necesidad de modificar el dominio que incluye las reglas de negocio. La aplicación de patrones de diseño, permite simplificar el modelo, brindando mayores prestaciones.