Per un contratto governativo, proponiamo di costruire un'architettura di monitoraggio del traffico. Avremo i seguenti componenti:Quindi sto parlando di un SOA qui?
- La videocamera è configurata intorno all'area di interesse. Le telecamere saranno a conoscenza della loro posizione, orientamento e parametri di visualizzazione.
- Un server di mappe GIS che può essere interrogato per strade, edifici, ecc.
- Un algoritmo che acquisisce le informazioni sul video e sulla posizione delle strade e fornisce le posizioni delle auto.
- Un altro algoritmo rileva le posizioni delle auto e le informazioni stradali a livello molto basso e fornisce informazioni su quali automobili stanno guidando in modo anomalo.
- Un altro database acquisisce informazioni sulle posizioni delle auto e sulle segnalazioni di anomalie nel tempo e può essere richiesto in seguito.
- Un proxy (o forse più accuratamente una facciata) viene impostato sul database di archivio e sugli algoritmi in tempo reale al fine di fornire un'interfaccia unificata alle informazioni.
- Un client si collega al proxy e al server di strada e dipinge varie rappresentazioni della situazione del traffico sullo schermo.
Sto solo imparando cos'è una SOA. È un candidato ideale per un'architettura orientata ai servizi SOA? Avevo sentito che i servizi SOA dovrebbero essere apolidi (o sono solo servizi RESTful?) Avevo anche sentito che era sconsigliabile convogliare un servizio al prossimo perché aumenta la complessità nascosta e che c'era qualcosa da fare rendere questa situazione migliore (una "orchestrazione"?). I servizi di cui sopra sembrano essere modulari e riutilizzabili. Ad esempio, ci saranno un sacco di telecamere, vari tipi di algoritmi di rilevamento e anomalie dei veicoli, database distribuiti e un sacco di clienti. Avrò bisogno di avere la capacità di gestire gli eventi: per esempio, se posso desiderare di registrarmi ad un servizio e ricevere una notifica ogni volta che un grosso camion supera questo punto.
Se questo non è idealmente implementato da una SOA, allora dovrei cercare altrove. Se questo è l'ideale per una SOA, allora dove dovrei iniziare quando si progetta questo? (E sto iniziando fondamentalmente dall'aver letto la pagina SOA di Wikipedia.) Ci sono dei buoni casi di studio da guardare qui?
Ottimo consiglio! Grazie. Un commento però, ci sono diversi servizi all'interno del mio framework che non possono essere apolidi (o altrimenti non capisco cosa significhi senza stato in questo caso). Ad esempio, il servizio di localizzazione del veicolo sarà un cliente del servizio video e terrà traccia della posizione delle auto (una sorta di stato) guardando continuamente ai nuovi fotogrammi del video. Forse l'importante è che ogni servizio non debba * mantenere * lo stato dei suoi clienti. Penso di potermene andare via da qui. – JnBrymn
Cosa succede se voglio fare in modo che il servizio tenga traccia degli ascoltatori e li avvisa ogni volta che sono disponibili nuove informazioni. Ciò non rappresenterebbe lo stato di mantenimento del servizio dei suoi clienti, ma significherebbe che il servizio è stato mantenuto puntato ai suoi clienti. Fa male a qualcosa? – JnBrymn
I client e il servizio hanno un accoppiamento più stretto. Un client può essere offline e devi decidere cosa dovrebbe fare il servizio in tale situazione, interrompere, ignorare, riprovare o notificare qualche altro sistema? – Kwebble