Domanda

Sto lavorando su un'applicazione web che ha ai grafici presenti su pagine diverse. Ogni pagina corrisponde ad un controllore, e ciascun controllore che richiede un grafico ha un'interfaccia a un ChartService. Il servizio richiede un grafico da un fornitore terzo. Quindi restituisce un'immagine avvolto in qualche HTML con JavaScript come una stringa direttamente nel flusso di output. Il ChartService ha bisogno di essere alimentato con i dati e di alcuni altri parametri come periodo di tempo e file di modello.

Dovrei avere la funzionalità di creazione di grafici astratti in un proprio controller? Ogni tipo di grafico diverso potrebbe essere servita da un diverso metodo di azione sul ChartController.

Ma sarebbe un problema, allora che sto servendo alcune delle mie pagine da più controller? Quali sono le linee guida per determinare quando la funzionalità dovrebbe essere dato il proprio controllore?

È stato utile?

Soluzione

suona come voi non ha bisogno di cambiare nulla. Hai astratte via il servizio all'interno di terze parti di un wrapper in modo che i controllori non dipendono direttamente su quel servizio specifico. La creazione di un nuovo controller in questo caso equivarrebbe a creare un involucro attorno al involucro.

Creare un nuovo controller quando si desidera aggiungere un comportamento per l'applicazione.

Altri suggerimenti

Dave,

mi piacerebbe avere un BaseController astratta che il controller principale ereditato da. il controller di base avrebbe tutte le funzionalità necessarie con il controller bambino sovrascrivendo parti che erano appropriati. senza conoscere il contesto completo del vostro dilemma, questo può o non può essere una soluzione praticabile (o auspicabile), ma è uno che io impiego in tutti i miei controller attualmente.

[modifica] - la bellezza di questo approccio è che se sei fortunato, il 75% delle funzionalità BaseController rimarrà con solo il 25% della funzione di essere sovresposta e / o su misura funzionalità aggiunto per tale controller bambino. questo darebbe un paradigma molto pulita, come ogni nuovo tipo di grafico dovrebbe avere un proprio modello / regolatore con i nomi dei metodi di azione potenzialmente identici, rendendo così il costo di 'ingresso' per i nuovi tipi di grafico molto economici.

jim

IMO, se si dispone di una sezione "grafici" con l'URL di tipo

charts/income
charts/expenditure

poi un controller grafici ha un senso. Inoltre, se per esempio il controller grafici è chiamato esclusivamente da query Ajax da varie pagine, poi un chartingController ha ancora senso. Ma se si sta andando ad avere gli URL come

products/list
products/yearlyStockChart
employees/details
employees/performanceChart

Poi si vorrebbe un ProductsController con Lista () e yearlyStockChart () le azioni, e un employeesController con i dettagli () e performanceChart) azioni (, sia con controllo facendo uso di un chartingService.

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