Assumere un'applicazione con un'architettura a livelli, ad esempio presentazione, business / dominio / logica, accesso ai dati: è opportuno collegare l'accesso alle API esterne nel livello dati se ciò che essi assomiglia alle operazioni dei dati. Ad esempio, una DLL che esegue semplicemente operazioni CRUD su un determinato repository di dati andrebbe nel livello di accesso ai dati.
Ciò di cui sono un po 'confuso è dove incorporare azioni che non eseguono operazioni di dati in senso stretto, cioè eseguono operazioni che assomigliano un po' ai "dati" in un modo più libero senso perché lavorano su risorse remote o in rete. Ecco alcuni esempi:
- un servizio Web che scarica un PDF di un report di SQL Server Reporting Services (SSRS).
- una libreria che invia email via SMTP o si connette a una cassetta postale di Microsoft Exchange e scarica i messaggi in una struttura di cartelle
- interazioni dirette con il file system, come scrivere su un file di log, usando la funzionalità del linguaggio di programmazione integrata
Sono tentato di inserirli nel livello dati poiché molte risorse che ho letto lo indicano. Ad esempio, questo articolo MSDN su "Linee guida per il livello dati" ha sia "Origini dati" e "Servizi" appesi al livello dati e indica "Servizi":
When a business component must access data provided by an external service, you might need to implement code to manage the semantics of communicating with that particular service. Service agents implement data access components that isolate the varying requirements for calling services from your application, and may provide additional services such as caching, offline support, and basic mapping between the format of the data exposed by the service and the format your application requires.
Tuttavia, si tratta di servizi esterni che eseguono in modo specifico operazioni di dati e non menzionano altri tipi di operazioni in qualche modo simili ai dati, come ho elencato sopra.
L'alternativa è di inserirli nel livello della logica aziendale o di dominio, ma non sembra giusto accedere a risorse esterne di rete o server come questo dal livello della logica aziendale o del dominio.
Qualcuno può offrire assistenza o alcune delle sue esperienze su questo argomento?