Funzione per l'elaborazione dei file: Business Layer, Service Layer o altro?

0

Ho letto che i repository non dovrebbero fare riferimento ad altri repository. Ho un metodo ProcessFile che si riferisce a più repository, analizza un file e inserisce in molti modelli di tabelle in diversi database.

Se ProcessFile non può essere parte di un repository, che cosa deve essere chiamata la classe contenente, o in altre parole, a quale livello deve appartenere? Servizio ProcessFile, livello aziendale ProcessFile?

link

    
posta CarSpeed87 18.08.2018 - 10:01
fonte

1 risposta

1

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.

    
risposta data 18.08.2018 - 10:56
fonte

Leggi altre domande sui tag