Avrei la seguente struttura
public class FileProcessor : IFileProcessor
{
IDatabaseRepo repoDB;
Func<string,IFileRepo> createFileRepo; //I want to use constructor injection for the filename so I need a factory
public void ProcessFile(string filename)
{
IFileRepo repoFile = this.createFileRepo(filename);
var data = repoFile.Read();
repoDB.Write(data);
}
}
Potresti chiamarlo un servizio se vuoi, ma penso che sia meglio evitare termini generici come "servizio" "manager" ecc. ove possibile. Anche 'Processore' è un po 'generico, potresti considerare' Importatore 'o qualche altro termine che corrisponde più strettamente a quello che l'azienda chiama questo processo.
La sua unica responsabilità è trasferire i dati da un repository di file a un repository di database (o diversi repository DB se richiesto).
Può incapsulare la logica di business di questo processo, quindi lo considererebbe come in Business Logic Layer. Dovremmo utilizzare un'interfaccia per consentirne la sostituzione con una logica di business alternativa se necessario in un secondo momento.