BLL Layer con percorso file fisico

0

Quindi sto lavorando a un progetto del sito web esistente con un layer BLL con alcune funzioni che utilizzano percorsi di file fisici.

Ma ora sto creando un'app console che verrà configurata come un'attività programmata di Windows che chiamerà alcune di queste funzioni e si lamenta di non avere i file esistenti.

Suoni come questo rompono tutti i principi di separazione della preoccupazione. È meglio avere l' app , il livello MVC nel progetto del sito web esistente, o qualsiasi altra cosa che chiama il BLL per passare il file / percorso ha bisogno del BLL invece di codificarlo praticamente? Effettuata una ricerca e ci sono così tante chiamate a Server.MapPath () per esempio.

    
posta SharpCode 03.10.2017 - 05:39
fonte

1 risposta

1

Sembra che il livello funzionale della biblioteca trarrebbe vantaggio da un refactoring per separare le preoccupazioni di "ottenere dati" e "elaborare dati".

Se entrambi i casi d'uso implicano operazioni sui file, passare da nomi di file codificati ad accettarli come argomenti sarebbe probabilmente sufficiente e potrebbe essere un breve percorso verso un'applicazione funzionante.

Un'altra opzione che è un po 'più orientata agli oggetti è quella di cambiare libreria per usare stream (questo è l'approccio che vorrei adottare). Questo è applicabile praticamente a qualsiasi programma che accetta input (che è la maggior parte di essi). Chiama una funzione, passa in un flusso di input di qualche tipo. Potrebbe essere supportato da un file, potrebbe non farlo. Input standard, un socket, un array di byte statici, tutti possono supportare il flusso. Non hai specificato una lingua, ma praticamente tutti i moderni linguaggi OO che conosco in qualche modo supportano i flussi.

In questo modo, la tua app Web potrebbe passare in uno stream che legge quei file, magari utilizzando le chiamate API specifiche dell'app Web, se necessario. La tua app per console potrebbe utilizzare un metodo diverso. Fintanto che entrambe le origini dati aderiscono all'interfaccia di streaming della piattaforma, nessuna di queste è rilevante per la libreria sottostante. Tutto ciò che importa è che può chiamare una funzione su quel flusso per ottenere i dati.

    
risposta data 03.10.2017 - 08:45
fonte

Leggi altre domande sui tag