Services ^^^^^^^^ Son clases que implementan lógica común y/o de interacción entre los distintos *modelos del dominio*. Estos servicios pueden ser usados en las capas *general* y de *operación* de nuestra aplicación. También, múltiples servicios pueden ser integrados en uno más grande para consolidar la ejecución de un proceso particular del dominio de negocios. Repositories ^^^^^^^^^^^^ Todo herramienta informática necesita un mecanismo para realizar operaciones de tipo `CRUD `__ sobre sus datos. Por ejemplo, en las aplicaciones web del lado del servidor, esta es una función que por lo general es asumida por librerías *ORM (Object Relationship Mapper)* que facilitan el acceso a motores de persistencia SQL, y que son implementadas en frameworks monolíticos de desarrollo (e.g. *Django*, *Laravel*) o incluidas como dependencias para cumplir ese propósito específico (e.g. *SQLAlchemy*). Sin embargo, a pesar de que ese tipo de herramientas simplifican el acceso a fuentes externas de persistencia y consulta de información, al final siguen haciendo que nuestras aplicaciones mantengan una dependencia muy fuerte en los medios de infraestructura necesarios para ponerlas en producción, limitando su portabilidad y capacidad de adaptación. Para no prescindir de esas dos importantes cualidades en nuestras aplicaciones **Knowarkitected**, algunos de los servicios más importantes por ser definidos en la capa de aplicación son los *repositorios*. Los **Repositorios** definen una interfaz estandarizada para realizar operaciones de **búsqueda**, **almacenamiento**, **contabilización** y **eliminación** sobre los *modelos* definidos en el *dominio* de nuestra aplicación. Haciendo uso de técnicas de **inyección de dependencias** y de **inversión de control**, los repositorios simplifican la manipulación de dichos elementos, sin limitarnos a elegir de antemano un mencanismo de infraestructura para desarrollar nuestra lógica de negocio. Podemos por ejemplo comenzar a desarrollar contra una implementación en memoria de nuestra fuente de datos (i.e. repositorio) y elegir una implementación persistente cuando estemos listos para poner el sistema en producción.