Incapsula la libreria JavaScript esterna

0

Sto per sviluppare un progetto ASP.NET MVC 4 che utilizzerà le mappe. La nostra azienda ha la propria API di mappa, che al momento è molto basilare, ma è destinata a essere ulteriormente sviluppata in futuro per soddisfare alcune esigenze specifiche del cliente. Il progetto avrà un'interfaccia mobile / tablet oltre alla sua interfaccia web e deve essere sviluppato ora. Pertanto, abbiamo pianificato di iniziare a utilizzare l'API di Google Maps v3.

Vorrei incapsulare l'API, quindi le nostre applicazioni non hanno chiamate specifiche dell'API di Google. Lo stesso approccio come se volessi usare un po 'di API esterna i C # e volessi incapsularlo per poter cambiare API in futuro senza dover ricodificare l'intera applicazione.

Ma non sono stato in grado di trovare esempi simili, quindi sorgono le seguenti domande:

  1. È un approccio valido e ragionevole? Fammi sentire i tuoi pro e contro.
  2. Come si farebbe nella pratica?
posta user1632306 18.02.2013 - 21:02
fonte

2 risposte

1

Is it a good and reasonable approach? Let me hear your pros and cons.

In genere, vorrei sconsigliare di incapsulare preventivamente una libreria o un'API - di solito è un caso negativo di YAGNI, poiché complica il tuo progetto per guadagni dubbi. Il più delle volte ciò che accade è che il wrapper finisce per essere legato troppo strettamente a ciò che sta incapsulando, così anche quando in realtà finisci per passare a qualche altra libreria o API, devi cambiare tutto il codice client perché quello nuovo è troppo diverso e si adatta molto male al tuo wrapper.

In questo caso, potrebbe essere difendibile dato che hai piani relativamente concreti di passaggio dell'API sottostante e già una seconda implementazione, anche se incompleta. Se lo fai, ti consiglio vivamente di consultare almeno un'altra API completa della mappa (come Bing Maps) per assicurarti che l'API possa funzionare con esso.

How would it be done in practice?

L'approccio migliore è probabilmente una facciata: non provare a scrivere un wrapper che esponga tutte le funzionalità di Google Maps. Invece, crea un'interfaccia che contiene solo la funzionalità relativa alla mappa richiesta dall'applicazione e rappresenta quindi un livello di astrazione. Probabilmente aggregherà le chiamate e le tradurrà e conterrà una logica propria.

Le possibilità di portarlo su un provider di mappe diverso senza dover modificare il codice dell'applicazione sono molto meglio che con un wrapper sottile e con funzionalità complete.

    
risposta data 18.02.2013 - 21:54
fonte
0

Se vuoi semplificare il primo livello dello sviluppo front-end della tua applicazione, sembra un approccio valido e ragionevole (se ben progettato: migliora la manutenibilità, la scalabilità, ecc.)

Credo che tu voglia implementare una FACADE, questo articolo qui dovrebbe spiegare proprio quello di cui hai bisogno: link

You can define the Facade pattern as a piece of code that simplifies a more complex interface. You can pretty much call any form of abstraction a facade.

    
risposta data 18.02.2013 - 21:14
fonte

Leggi altre domande sui tag