7 messaggi dal 14 ottobre 2010
Salve a tutti,
Vorrei sapere cosa ne pensate di un workaround un po' atipico(è il caso di dirlo: al momento si tratta di un'idea, di un mero esercizio teorico) che, sempre in teoria, dovrebbe risolvere una situazione di trasferimento dati tra due applicazioni installate su due distinti server allogati in una rete privata.

Vengo al dunque.
Abbiamo le 2 applicazioni
web A e B.Ognuna di esse archivia in un proprio db dei record frutto di dataentry manuale.
Il tracciato dei record è identico eccezion fatta per le primary key(i record dell'applicazione A riportano la PK di B come Foreign key)
Sorge la necessità di aggiornare ad intervalli regolari l'archivio di A con i dati di B.
Per vari motivi è stato scartato l'utilizzo dei webservice.
Soluzione(workaround): ad ogni intervallo x, B trasferisce in una cartella condivisa un file csv contenente gli ultimi record inseriti/aggiornati. Sempre ad intervalli stabiliti A( o più specificamente un servizio predisposto ad hoc presente sul server di A) ispeziona la cartella; se trova il file lo processa, aggiornando il proprio db tramite insert e update a seconda
dei casi; cancella il file. Tutto qui. Una siffatta soluzione iyho vi sembra percorribile(tenendo conto che B non può, di fatto, verificare l'esito del trasferimento)?
TIA per le risposte. Stolcius

Stolcius
Stolcius Von Stolcenberg wrote:
TIA per le risposte.

hanno inventato apposta i servizi.
btw, se proprio non hai alternative, non è che ci siano molte altre strade
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
11.886 messaggi dal 09 febbraio 2002
Contributi

ad ogni intervallo x


mmh... puoi adottare una soluzione migliore del polling, secondo me. Certo, è forse la più intuitiva ma è anche un anti-pattern che NON ti permette di avere dati replicati in tempo reale e che a volte si inceppa.

Causa un software chiuso, in azienda abbiamo un sistema del genere e ti assicuro che ogni tanto dà dei grattacapi. Al che bisogna smettere di fare quello che stavi facendo e intervenire manualmente per rimetterlo in piedi.

Dovresti proprio usare i servizi, tu che hai accesso ad entrambe le applicazioni. Se ti secca dover scrivere codice per implementare un servizio, puoi sempre ricorrere al Service Broker che è integrato in Sql Server, ammesso che tu sia usando questo database. Avresti anche il vantaggio di includere la logica di replicazione nel database stesso. In fondo questo compito non dovrebbe essere una preoccupazione dell'applicazione...

Vedi qui:
http://blogs.aspitalia.com/lucabianchi/post1060/Service-Broker-SQL-Server-2005.aspx

e qui:
http://technet.microsoft.com/it-it/library/ms166043%28SQL.90%29.aspx

Si programma in T-SQL.
Modificato da BrightSoul il 03 giugno 2011 20.34 -

Enjoy learning and just keep making
7 messaggi dal 14 ottobre 2010
Purtroppo, come accennavo, il ricorso ai webservice è da escludere, in quanto i titolari dell'applicazione B(quella che trasmette il csv) non possono permettersi una mev.

Debbo ammettere che il workaround in questione mi preoccupa non poco, poiché è evidente che il rischio se lo assume il meschineddu che deve implementare l'aggiornamento dell'applicazione A.

Tenendo altresì conto che A prevede l'invio di una mail agli utenti per ogni transazione eseguita, e che, al fine di mantenere una sorta di pseudo-sincronia, quell'intervallo x andrebbe ridotto al minimo, comprenderai la consistenza delle mie preoccupazioni.

Tu, da veterano del codice, una soluzione del genere la prenderesti in considerazione? :-)


Ti ringrazio per la risposta.

Un salutone,
Stolcius, AKA Michele Collatina

Stolcius
7 messaggi dal 14 ottobre 2010
Causa un software chiuso, in azienda abbiamo un sistema del genere e ti assicuro che ogni tanto dà dei grattacapi. Al che bisogna smettere di fare quello che stavi facendo e intervenire manualmente per rimetterlo in piedi.


Ahi, ahi, ahi...questa informazione aggiunge una pesante tegola al mio già oberato, nonché "obtorto", collo... :-)

L'applicazione A(quella che riceve il csv) visto che per soprammercato implementa l'invio di mail agli utenti contestualmente alla creazione/cambiamento di stato dei record(da qui l'esigenza di accorciare il più possibile quell'intervallo x), non può permettersi interruzioni sistematiche.

Dovresti proprio usare i servizi, tu che hai accesso ad entrambe le applicazioni.


Come ho già scritto a Daniele Bochicchio, io ho accesso alla sola applicazione A, quella che rischia il disastro...

La B, poi, non può permettersi mev, quindi le forche caudine del workaround sono l'unica trista realtà che i miei due neuroni asfittici sono riusciti a concepire... :-(

Ad ogni modo, ti ringrazio dei consigli e dei preziosi link(penso che mi risulteranno utili).

Un salutone e grazie per la risposta.

Stolcius AKA Michele Collatina

Stolcius
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok, non avevo capito che l'applicazione B era gestita da altri. In questo caso ogni consiglio potrebbe essere o giusto o sbagliato, perché tutto dipende dalla collaborazione che le due parti possono offrire per attuarlo.


La B, poi, non può permettersi mev


Puoi spiegare meglio cosa può offrirti B? Ti ascoltano? Collaborano? Sono irremovibili sul fatto che i CSV siano la soluzione definitiva?

Devi capire bene se c'è abbastanza margine per aprire una discussione e riconsiderare, razionalmente, qual è la soluzione che meglio risponde ai requisiti di "non potersi permettere interruzioni sistematiche".

Poi, ovviamente, ogni meccanismo si può rompere, ma qui si tratta di stabilire qual è il meno propenso a disservizi e che si riesce a manutenere con meno sforzo.

Ogni altra soluzione sarebbe un palliativo per mettersi la coscienza a posto e dire "ok, l'abbiamo fatto, mo' se non funziona la colpa è di chi non ha saputo implementarlo."

Se tu hai già tentato tutto il possibile per convincere sia A che B che questa soluzione dei CSV ha dei problemi intrinseci, primo fra tutti l'impossibilità di avere dati aggiornati in tempo reale, manda lo stesso un'email ad entrambi per ribadire che esistono altre strade che conducono ad un risultato qualitativamente migliore.

Non devi scontrarti con le persone ma semplicemente fare appello al loro buonsenso affinché capiscano che un'applicazione line-of-business, ovvero di importanza cruciale per l'azienda (se lo è), non può prescindere da soluzioni che ne garantiscano la buona salute.

una soluzione del genere la prenderesti in considerazione?


Poi, oh, se non si riesce proprio a fare altrimenti bisogna per forza prendere in considerazione quello che si ha.

Comunque, come ti torno a dire, se i Webservices sono stati scartati, puoi comunque dare un'occhiata al Service Broker di Sql Server oppure anche alla Replication visto che ti consente di filtrare i dati che B invia ad A. Anche questa *potrebbe* essere una soluzione.

Sql Server Service Broker - passo passo
http://www.mssqltips.com/tip.asp?tip=1836

Sql Server Replication - filtrare i dati affinché si adatto al db di destinazione
http://msdn.microsoft.com/en-us/library/ms151775.aspx

ciao
Modificato da BrightSoul il 05 giugno 2011 11.35 -

Enjoy learning and just keep making
7 messaggi dal 14 ottobre 2010
BrightSoul ha scritto:


Puoi spiegare meglio cosa può offrirti B? Ti ascoltano? Collaborano? Sono irremovibili sul fatto che i CSV siano la soluzione definitiva?


I B sono leali e collaborativi, ma al momento non possono percorrere soluzioni che prevedano scrittura di codice.
Quella del csv, poi, è stata una mia idea interlocutoria.
Il problema è che approfondendola ed effettuando alcuni test, mi sono accorto che ha parecchie controindicazioni(d'altronde anche la tua esperienza con una soluzione consimile ne testimonia la fisiologica instabilità).

Devi capire bene se c'è abbastanza margine per aprire una discussione e riconsiderare, razionalmente, qual è la soluzione che meglio risponde ai requisiti di "non potersi permettere interruzioni sistematiche".

È quello che farò :-)

Ti ringrazio di cuore per tutti i consigli.

Un salutone,

Stolcius

Stolcius
Stolcius Von Stolcenberg wrote:
Tu, da veterano del codice, una soluzione del genere la prenderesti in considerazione? :-)

(scusa il ritardo). dicevamo. io preferirei mettere in piedi un sistema di sincronia che vada con transazioni, se per te questa cosa è delicata. che poi arrivino via servizi o file di testo, xml, csv o chissà cos'altro, alla fine è importante che l'operazione venga eseguita in un certo contesto, tale da garantire che i dati non vengano sporcati. .

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.