# RSE Services

RSE is built on top of a service layer that provides services that access the remote systems. These service implementations are typically protocol-specific but will obey an interface that defined for that paricular service. For example, a file service will obey the interface defined in the package `org.eclipse.rse.services.files`, but there exist implementations for the dstore, FTP, and SSH protocols.

RSE supplies service definitions for a file service, a shell service for submitting remote commands, a search service, and a process service. Implementers that which to use different protocols than the ones supplied should use the existing service definitions to fit into the current structure.

It is not absolutely necessary to have a services layer. Implementers of subsystems that provide access to resources that in narrow domains could forgo the creation of explicit service classes and embed the support directly in the subsystem.