Domanda

Abbiamo un paio di progetti che prevedono la creazione di un'applicazione che è composto di forse 50% delle funzionalità personalizzate, ma poi tira in, diciamo, un wiki, un forum, e altri componenti "ruote" che sono già stati inventati, che ci auguriamo di non dover riscrivere da zero.

Queste applicazioni di terze parti di solito hanno le proprie banche dati, dei temi e dei sistemi di autenticazione.Fare le cose al lavoro come un single-sign-on, o un tema comune o tag/cercando tra le entità in più sub-applicazioni sono abbastanza impegnativi problemi, nella mia esperienza.Quali sono alcune delle migliori prassi per questo tipo di progetto di integrazione?

Il nostro approccio, finora, è stato quello di provare e scegliere i componenti con cura, scegliendo quelli che hanno un rapporto ben definito API, preferibilmente via HTTP (come il REST o SOAP), anche se questo non sempre è possibile (non abbiamo ancora trovato un forum decente che funziona in questo modo).Ci sono suggerimenti che la gente può dare a chiunque cercando di fare questo, come ho il sospetto che molti di noi sono di più e più frequentemente in questi giorni?

È stato utile?

Soluzione

Assicurarsi che l'interfaccia tra l'applicazione e l'applicazione di terze parti o di una biblioteca è tale che si può sostituire facilmente con qualcos'altro, giusto in caso.In alcuni casi, il software di terze parti potrebbe essere solo un'implementazione di un API standard (Java fa un sacco con JDBC, JMS, JNDI, ...).In altri casi questo significa avvolgere la libreria di terze parti in alcune API che ti è venuta.

Naturalmente ci sono i tempi per lanciare l'idea fuori dalla finestra e sono cose strettamente integrato con il software di terze parti.Basta essere sicuri che DAVVERO si desidera associare l'applicazione di terze parti.Una volta che si va per questa strada è DAVVERO difficile tornare indietro e cambia idea.

Altri suggerimenti

Se si sta andando con librerie open source, scegliere quelli con un buon licenza.Ho scoperto nel modo più duro (quando cercando di OEM un'applicazione) che molte aziende evitano le licenze gnu LGPL.Non voglio entrare nei dettagli sul perché, ma preferiscono Apache, BSD o MIT stile licenze.

Scegliere gli strumenti che sono stati intorno per un po'.Check out la comunità e assicurarsi che sia attiva.Vedere quello che altre persone stanno utilizzando e utilizzare tali strumenti.

Pick tecnologie che funzionano bene insieme.Ho messo insieme un'applicazione che utilizza ORM e Servizi Web.Framework Spring + Apache CXF + JPA per l'ORM creato una bella pila di tecnologia.Tutti gli strumenti che è possibile utilizzare facilmente unire, in Primavera, il che rende facile da usare insieme.L'ultima cosa che si vorrebbe fare è scegliere gli strumenti che si hanno a scrivere un sacco di codice per utilizzare insieme.

Pick tecnologie basate su standard.In questo modo, se la biblioteca o gli stampi, si può facilmente passare a un altro che utilizza lo stesso standard.

Donald Knuth ha detto che anche meglio di codice riutilizzabile è modificabile codice, quindi se non vi è alcuna API, si dovrebbe cercare un programma open source di app che è scritto bene e, pertanto, è possibile personalizzare.

Come per basi di dati e sistemi di accesso e di programmazione di parti (non vedo come ad es.i temi potrebbero trarre beneficio), si può anche provare, a seconda delle circostanze avvolgimento roba in modo che il modulo crede è su di essa la propria, ma in realtà parla di codice.

Il mio approccio è stato quello di utilizzare il codice di terze parti per alcune funzionalità di base.Per esempio, io uso Subsonico per i miei dati di accesso, componenti Devexpress per UI e Peter Blum Data Entry Suite per l'immissione dei dati e la convalida.Subsonic è open source, Devexpress Peter Blum comandi del codice sorgente disponibile per un costo aggiuntivo.Sarebbe impossibile per me per ottenere la funzionalità di questi controllo se ho provato a scrivere io.

Questo approccio mi permette di concentrarmi sulla funzionalità dell'applicazione, senza doversi preoccupare di come posso accedere al database o come faccio modificabile treelist che sembra abbastanza.Di sicuro non ho una cucina completamente configurato e funzionante forum, ma so che devo utilizzare un database SQL per la mia app, e non voglio cercare di ottenere di memorizzazione dei dati diversi componenti.Non ho un wiki, ma so come utilizzare il devexpress componenti dell'interfaccia utente e la formattazione e la convalida dei dati di ingresso è debole con Peter Blum controlli.In altre parole, imparare gli strumenti (e, ovviamente, scegliere con attenzione) che la velocità di sviluppo di tutti i progetti, quindi è possibile concentrarsi sulle parti dell'applicazione che deve essere personalizzato.

Io non sono troppo preoccupato se è open source o non così lungo come il codice sorgente è disponibile.Se è open source faccio una donazione al progetto.Se è un componente commerciale che pagherà un prezzo equo.In ogni caso, gli strumenti di contribuire a rendere divertente la programmazione e i risultati sono l'integrità dei dati e sono di grande ricerca.Se posso sviluppare una wiki o nel forum so che posso farle lavorare insieme seamlesslessly.Infine, tutti gli strumenti che ho citato sono stati intorno per un lungo tempo e sono scritti da importanti sviluppatori con una grande reputazione.

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