È possibile accoppiare liberamente un'applicazione al proprio framework?

14

Diciamo che sto sviluppando un'applicazione web. La mia prima scelta è usare PHP con Fat-Free Framework (F3) e pattern MVC. L'anno prossimo, potrei decidere di passare a Zend Framework, o forse anche ASP.NET MVC. Ha senso provare e progettare la mia applicazione in modo che sia liberamente accoppiata al suo framework, o il framework sia troppo integrale per renderlo realistico?

L'unica ragione per cui lo chiedo è perché è uscito in una conversazione con un peer di recente, che ha criticato la mia torta nell'idea del cielo di accoppiare liberamente la mia applicazione alla F3.

    
posta David Kennedy 09.01.2014 - 01:36
fonte

4 risposte

29

Accoppiare liberamente la tua applicazione al suo framework significa essenzialmente che stai per scrivere un framework proxy. Scrivere quel framework proxy è molto lavoro, e se mai passerai a un nuovo framework dovrai fare un sacco di lavoro per far sì che il framework proxy supporti il nuovo framework. Ovviamente, diversi framework usano idiomi e pattern differenti, il che renderà il framework proxy molto complesso (se si cerca di renderlo adatto a tutto) o molto limitato (se si va al minimo comune denominatore). In entrambi i casi dovrai lottare con quel framework proxy.

Avere la capacità di cambiare framework per un capriccio vale tutti questi problemi? Come ho detto, non sarai in grado di cambiarlo per un capriccio, perché dovrai adeguare il framework del proxy, che potrebbe rivelarsi più efficace della modifica diretta del codice dell'applicazione.

    
risposta data 09.01.2014 - 01:54
fonte
5

No can do.

Puoi progettare in un modo che è portatile attraverso i framework. MVC è MVC e i principi sono approssimativamente gli stessi indipendentemente dalla lingua o dalla piattaforma utilizzata.

Il codice attuale, tuttavia, dipenderà molto dalla struttura o dalla lingua. L'unico modo per astrarsi da quello sarebbe il codice basato su un quadro intermedio. Quindi è possibile modificare l'implementazione intermedia (da F3 a .NET?) Senza modificare l'applicazione. Il che è molto lavoro, presuppone astrazioni che non perdono e sposta semplicemente il problema senza risolverlo: ora sei legato al tuo framework intermedio.

Una nota più positiva: considera l'idea di esprimere alcuni dei tuoi test (stile BDD) in una piattaforma indipendente dalla tua implementazione. Potrebbero sopravvivere a riscritture importanti.

    
risposta data 09.01.2014 - 01:50
fonte
5

Una volta ho visto Robert C. Martin parlare in cui diceva qualcosa sulla falsariga di "la prima decisione che prendi è la più difficile da cambiare in seguito".

Quindi il mio consiglio è di provare a ritardare questa decisione se non sei esattamente sicuro di ciò che vuoi usare ancora. Identifica i pezzi che puoi definire ora e che rimarrebbero facilmente indipendenti da qualsiasi framework tu usi.

    
risposta data 09.01.2014 - 03:42
fonte
5

Il lock-in del framework può essere un problema serio, ma aiuta a considerare il problema come una portabilità. La portabilità non è un attributo assoluto, ma relativo al tuo punto di partenza e a dove potresti voler andare. Per analogia, quindi, il software è portatile solo nella misura in cui è già stato portato su altri ambienti.

La maggior parte dello sviluppo di un'applicazione all'interno di un framework tende ad essere il codice della colla, il materiale che lega insieme i componenti del framework. I file di configurazione possono astrarre una certa quantità di colla in alcuni sistemi, ma molti dettagli devono essere fatti nel codice.

D'altra parte, le regole e i processi aziendali possono essere astratti dall'applicazione. La parte difficile dell'astrazione è quando le regole sono implementate direttamente dal framework; la sicurezza, l'accessibilità e il sequenziamento dei processi tendono ad essere applicati dal tuo framework e potrebbero essere i più difficili da vedere.

Se riesci a separare la porzione di colla della tua applicazione dalla regola aziendale e dalla parte dei dati aziendali e dei processi aziendali, sarai in grado di rendere portatili alcune porzioni della tua soluzione.

    
risposta data 09.01.2014 - 12:03
fonte

Leggi altre domande sui tag