Ho bisogno di aiuto per implementare un sistema pre-progettato che ha 4 componenti e diversi vincoli. Ho trascorso circa 50 ore cercando di determinare il modo migliore per costruire questo sistema; tuttavia, non credo di avere una soluzione abbastanza strong come al momento.
~~~ Le informazioni di base ~~~
Lo scopo di questo progetto è consentire ai proprietari di attività commerciali (e ai loro sviluppatori) di accedere ai dati in remoto. Ha 4 componenti.
- Un servizio Web
- Un cliente
- Un database per il servizio web
- Un database per il cliente
L'interfaccia utente deve essere sotto forma di servizio Web in quanto è uno dei requisiti di progettazione.
Il client è memorizzato su un computer di titolari di aziende (che ospita il loro database). È un programma locale programmato nella piattaforma .net.
I proprietari di attività accedono al servizio Web che accede a un client, alle richieste di dati e passa tali dati al client.
Quanto sopra è noto e immutabile (poiché non sono la persona che specifica le specifiche del progetto)
~~~ Il vero problema ~~~
Il problema è che il Cliente potrebbe non essere necessariamente nello stesso posto ogni volta, l'IP del cliente è soggetto a modifiche. Il Cliente potrebbe anche non essere online al momento della richiesta dal proprietario dell'attività commerciale.
~~~ La mia soluzione attuale ~~~
La soluzione My Present a questo problema è creare un server TCP / IP sul client. Quando il Client viene acceso o avviato, può "registrare" le sue credenziali del server TCP / IP (le informazioni necessarie per contattarlo) nel server insieme ad alcune informazioni di identificazione.
~~~ Editato per chiarezza ~~~ Quando il servizio Web riceve una richiesta, può aprire una connessione TCP / IP casuale e lasciare che il client (ricorda che il server TCP / IP si trova sul client) sappia che ha una richiesta di dati. Il Cliente può quindi ottenere la richiesta, elaborarla e inviare una risposta con un 'Id di richiesta'.
Sulla base di questo ID di richiesta, il servizio web può ricevere una chiamata, far sapere al client che ha una richiesta, il client può interrogare il servizio web per la richiesta, recuperare la richiesta, elaborare la richiesta e inviare una risposta indietro al servizio Web che può quindi elaborare la risposta (estrarre l'ID della richiesta da esso) e inviarla al chiamante del servizio Web appropriato.
~~~ End Edit ~~~ (wow quella frase è un boccone da leggere ad alta voce)
~~~ Cosa vorrei ~~~
Ritengo che la mia soluzione sia abbozzata e mi piacerebbe ricevere un riscontro sulle potenziali insidie che potrei non vedere e sui modi migliori per affrontarlo.