Un po 'di background
La società per cui lavoro ha creato applicazioni di database dal 1980 circa e, fino a tempi relativamente recenti, la maggior parte di questi sistemi sono stati sistemi "silo" autonomi.
Tuttavia, negli ultimi anni abbiamo assistito a uno spostamento verso la raccolta di "intelligence" su tutti i sistemi all'interno delle esigenze dei nostri clienti. Ad esempio, un sistema che potrebbe raccogliere dati sulle cartelle dentali delle persone potrebbe dover parlare con un sistema che raccoglie dati sui record di persone, condividere informazioni sulla stessa persona e fornire funzionalità di ricerca su entrambi i sistemi (ha senso, anche se l'esempio I ' ve usato è immaginario).
Nell'esempio immaginario di cui sopra, i sistemi dentistico e ottico possono o meno essere entrambi scritti dalla società per cui lavoro (in altre parole, stiamo esaminando interfacce e interfacce internamente sviluppate con sistemi di fornitori di terze parti) .
Cosa abbiamo fatto fino ad ora
Abbiamo un'API di servizi web di base ( .asmx ) per uno dei nostri prodotti, ma sono preoccupato per la gestione delle modifiche, in termini di aggiornamento su come aggiungere nuove funzionalità al prodotto principale (in termini di fornitura delle nuove funzionalità tramite l'API senza compromettere la compatibilità con le interfacce precedenti).
Abbiamo anche prodotto un servizio WCF . I contratti rigidi mi mettono un po 'più a mio agio che lavorare con il servizio ASMX, ma penso che la mancanza di esperienza all'interno dell'azienda ci trattiene, quindi sto cercando delle indicazioni sulle migliori pratiche su cui posso leggere aiutaci a muoverci (o almeno a indicarci la direzione giusta).
La domanda
-
Esiste una particolare metodologia o pratica di programmazione per progettare sistemi per massimizzare la loro capacità di interfacciarsi con altri sistemi?
-
Esistono buone risorse online (o offline) per queste pratiche di programmazione (supponendo che esistano)?
Qualsiasi altro consiglio che puoi fornire in base alle informazioni di cui sopra sarebbe apprezzato, ma non essenziale.
Sviluppiamo principalmente in Microsoft .NET (principalmente ASP.NET, con alcune applicazioni Windows Form) con un back-end di database SQL Server / Oracle, anche se mi aspetto che le pratiche di programmazione possano essere indipendenti dalla lingua. (Ho usato il tag .NET come ripensamento, ma potrei eliminarlo più tardi ..!)
Grazie per il tuo tempo.