Il nostro cliente ha un'applicazione CRM (chiamiamola A
) e un'applicazione Windows personalizzata (VB.NET) (chiamiamola B
) che scrive e legge direttamente dal database CRM.
L'applicazione A
viene utilizzata (principalmente) per gestire i clienti e i loro ordini. L'applicazione B
viene utilizzata per gestire tutti i prodotti venduti dal nostro cliente.
Il nostro cliente ci chiede di creare un negozio online ( C
) utilizzando i WebForm di ASP.NET in modo che possano vendere i prodotti che gestiscono con B
. Tutti i loro clienti e ordini devono essere presenti sia in A
che in C
.
Poiché B
si prenderà cura di tutte le comunicazioni a A
, dovrà trovare un modo per lasciare che B
e C
sincronizzino i loro dati.
Questo è qualcosa di relativamente nuovo per noi. Abbiamo fatto qualcosa del genere in passato, ma non mi piace il modo in cui è stato risolto lì:
When someone orders something in the webshop, C puts the order in an XML-file, zips the XML-file and sends it to an FTP-server in the network of A. A monitors the directory on the FTP-server, unzips each new file, processes the XML, creates a new XML-file, zips it and sends it to an FTP-server in the network of C. C monitors the directory on the FTP-server, unzips each new file and processes the XML.
In addition to this, each night A generates an XML-file for each table in its database, zips them and sends them to the FTP-server in the network of C. C unzips the files and lets SSIS process the XML-files to update the database of C.
I davvero non mi piace.
Ci devono essere altri modi, giusto? Probabilmente abbiamo bisogno di un'unica registrazione e sincronizzazione dei batch. Come viene affrontato questo solito? Servizi web? Qualcosa di personalizzato come Rhino ETL ? Qualcos'altro?
Aggiornamento: Sarebbe bello poter fornire una breve spiegazione su come la tecnologia che proponi viene in genere utilizzata e su come influisce sulle diverse applicazioni.