Hola. de poder hacer que una aplicación de usuario se pueda hacer funcionar como un servicio se puede.
Como dice Neftalí está el ejemplo
acá (Está en inglés)
Ahora! ¿Que eso sea lo más optimo? Como bien te dijeron eso depende de la complejidad de tu aplicación, pero mejor es dejarlo separado desde el principio ya que muchos programas comienzan con cosas sencillas y con cada cambio, cada solicitud con el tiempo se vuelven monstruos inmanejables.
Si necesitas manejar algunas funcionalidades tanto en el servidor como en el cliente, puedes crear unas clases que sean usadas por ambos artefactos.