Domanda

Si consideri un accesso ai dati esistenti e lo strato di logica di business che viene utilizzato da più applicazioni diverse e che, fino ad ora, solo bisogno una singola connessione dati per la vita di qualsiasi applicazione che ha consumato - così informazioni di connessione potrebbe semplicemente essere tirato dallo strato di dati dal file di configurazione dell'applicazione. Andando avanti, però, le classi di dati e la logica devono fornire la flessibilità per le applicazioni di determinare la connessione dati su una base per chiamata. Cosa c'è di più, le classi sono ora chiamati da più applicazioni in simultanea attraverso servizi.

I chiamanti non vogliono gestire stringhe di connessione specifico, ma piuttosto nomi di connessione sotto forma di un enum che può essere risolto a stringhe di connessione e dallo strato di dati.

Attualmente, tutte le classi di dati e logici sono statici con i dati che vengono scope interno e la logica essendo scope pubblico.

Quali sono alcune strategie buono per ottenere una chiave dal chiamante tutta la strada fino ai metodi delle classi di dati che considerano le cose come utilizzabilità API, le prestazioni, la sicurezza filo / isolamento chiamante, ecc.

Due opzioni evidenti sono:

  1. Aggiungere la chiave di connessione come parametro a tutti i metodi. Yuck - non sta per accadere, ma anche per la completezza

  2. .
  3. Cambia la logica e le classi di dati alle classi dell'istanza e passano la chiave nei costruttori per qualsiasi metodo membro per l'uso. Non ci sarebbero metodo modifica firma, ma una variazione sostanzialmente aggiuntive che come l'API viene chiamata.

Quali altre opzioni ci sono?

È stato utile?

Soluzione

Purtroppo, si ha colpito i due migliori opzioni per come affrontare questo tipo di problema. 2 # è reso un po 'più complicato di avere servizi coinvolti, perché diverse richieste di servizio sono o avranno bisogno di un modo per ricordare quale client è che (come sessioni) o andando ad avere per passare le informazioni di connessione attraverso il servizio a ogni chiamata.

Credo che se si crea un lato client involucro di classe per accedere al servizio, è possibile limitare il numero di lato client le modifiche si sta andando a bisogno. Per il servizio stesso, penso che stai davvero intenzione di essere bloccato passando la connessione come parametro di volta in volta, semplicemente perché le alternative non ci sono abbastanza complicate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top