PDA

Visualizza versione completa : Modularità e sviluppo distribuito


realtebo
09-12-2004, 09.54.39
Fra qualche mese comincierà in azienda da me la rielaborazione da zero del gestionale, era ora, per ora si lavora su access 2000 !

siamo in due e lo produrremo con vs.net 2003 (o 2005 se sarà già uscito).

Mi chiedevo se era possibile una cosa: L'idea era avere un eseguibile principale e la possibilità di avere un tot di file exe o dll o altro che siano esterni, i quali si occupano ciascuno di una singola maschera del sw. é possibile creare una dll che venga caricata a run-time e che mostri una form (senza però per questo dover creare la form a run-time) ?

Non ho molta conoscenza dell'uso dell DLL, e poi magari net ha stravolto anche questo.

Così installavamo un diverso set di dll a seconda del pc e delle funzioni che questo deve coprire. il programma parte, legge l'elenco delle dll installate (o ne scorre la directory leggendo i relativi .ini, quello è un dettaglio secondario) e quindi sa quali moduli sono disponibili. si crea il menu di conseguenza (anche qs non è un problema).
L'utente sceglie per esempio l'invio dei RID dal menù - > il programma sa che la dll invio_rid.dll è presente, ed esegue.... (ecco, qui non so cosa...) la quale fa aprire una normale form, MAGARI INTERNAMENTE ALLA FORM PRINCIPALE, tipo MDI.

e' possibile !?

Aspetto sugggerimenti ed un sacco di possibili varianti
grazie intanto

ceccus
09-12-2004, 10.56.40
SAlve,
Allora...partiamo dall' inizio....
Dobbiamo scindere la parte di Presentation , dalla parte di Business...
Non è una buona idea avere Dll che , al loro interno, visualizzano anche delle Videate....
Nelle DLL ci deve stare soltanto la logica elaborativa e gli eventuali accessi ai dati...
La parte di Presentation DEVE stare da un' altra parte....
Avete considerato la possibilità di sviluppare la vostra applicazione in ambito Intranet ?? Cioè utilizzando tecnologia WEB e non i classici Client/Server, ovvero .exe + una marea di OCX/DLL (in ottica .NET Assembly....)
Anche l' idea di avere un Set diverso di DLL per ogni postazione lavoro, non è molto buona, in quanto, in futuro, poi, costringerà a tenere in considerazione le tipologie di posti di lavoro e molta attenzione una volta che queste postazioni si vanno ad aggiungere e/o togliere....
In definitiva : isolare la parte di Presentation dalla parte di logica elaborativa....ben vengano le Dll e tenete in considerazione il fatto di avere la parte di presentation su di un'unica macchina Servente Web....
In ottica Client/Server potete prendere informazioni sulla metodologia Microsoft denominata Smart Client che consente di scaricare sulla macchina client il Software "alla bisogna" e di eseguirlo in Run Time......

Ciao !!

realtebo
09-12-2004, 12.22.08
spiacente, le singole unità sono talmente indivualistiche e specializzate che va benissimo unire logica a presentazione.

chiedo solo COME fare. per il discorso smart client abbandonato perchè sotto pressione cade di prestazioni.

ceccus
09-12-2004, 14.25.32
Salve,
Beh...ognuno ha le "sue" teorie in merito....ma affermare che "fondere" il layer di Presentation con quello di Business va benissimo (anche per componenti specialistici) direi che è quantomeno azzardato....(e non lo dico IO, lo dice il mondo intero....)
Sviluppare applicazioni "monolitiche" , ancorchè piccole o di nicchia, non è più , allo stato attuale della tecnologia, una buona idea.....
Per il resto ...che ti devo dire...fai te....

Ciao !!

P.S. : gli "smart client" , non in tutti gli scenari sono "delle lumache"...e , in ogni caso, chi "paga" è il primo che richiede il servizio...gli altri "godono" sugli allori del primo.....

realtebo
10-12-2004, 12.49.42
ok, ma non capisco dove stia la praticità nello scindere la presentazione dalla logica.

cerca di capirmi, forse non mi spiego bene: ovviamente dentro i singoli 'pezzi di programma' avrei la classe form + la classe che contiene la logica + ad alto livello + i moduli / classi che sono di volta necessari + (quasi sempre) un modulo di supporto per le funzioni di calcolo complicatissime, etc..

tu cosa intendi per dividere presentazione da logica?

ceccus
10-12-2004, 22.05.42
Salve,
Dunque, dividere il layer di Presentation da quello di logica di Business significa che tutto ciò che riguarda l'interfaccia grafica sta da sè (sotto le varie forme)e la parte che esegue i compiti sta da sè...
Ti faccio un esempio che dovrebbe chiarire.....almeno credo...
Scenario : Banca (lo scenario lo conosco molto bene...)
Funzione di richiesta ultimi movimenti sul conto corrente :
Tale funzione la puoi richiedere dal Bancomat, dal tuo Telefonino, dal Televisore (via Windows Media Center), direttamente in filiale, dal tuo PDA....
Ognuno dei "canali" che ho specificato ha un'0 interfaccia diversa, specifica, fatta ppositamente per quel canale.....
Ma la Funzion eche fa effettivamente il calcolo degli ultimi movimenti sul conto corrente ?? E' LA SOLITA

ceccus
10-12-2004, 22.07.31
Salve,
Dunque, dividere il layer di Presentation da quello di logica di Business significa che tutto ciò che riguarda l'interfaccia grafica sta da sè (sotto le varie forme)e la parte che esegue i compiti sta da sè...
Ti faccio un esempio che dovrebbe chiarire.....almeno credo...
Scenario : Banca (lo scenario lo conosco molto bene...)
Funzione di richiesta ultimi movimenti sul conto corrente :
Tale funzione la puoi richiedere dal Bancomat, dal tuo Telefonino, dal Televisore (via Windows Media Center), direttamente in filiale, dal tuo PDA....
Ognuno dei "canali" che ho specificato ha un'0 interfaccia diversa, specifica, fatta ppositamente per quel canale.....
Ma la Funzione che fa effettivamente il calcolo degli ultimi movimenti sul conto corrente ?? E' LA SOLITA, per tutti i canali....
Capisci bene il risparmio in termini di costi che si ottengono lavornado in questo modo...e ti posso assicurare che ci sono tutti....e la banca dove lavoro è il 3° Gruppo bancario di Italia.....non la banchetta sotto casa......

Ciao !!

ceccus
10-12-2004, 22.11.47
Salve,
Chiedo scusa del doppio Post...il primo non so come sia partito (è anche incompleto)....il problema è che non mi permette di cancellarlo...
Se l' Admin passa di quà e vuol provvedere lui a cancellare...
Grazie

Ciao !!

realtebo
13-12-2004, 09.30.57
capisco ora, e approvo pienamente, ma siamo, cmq in una logica diversa, forse opposta.

ti faccio questo esempio, molto reale. abbiamo un modulo che si occupa delle anagrafiche clienti e uno delle anagrafiche banche (x esempio).

la mia idea era di fare una dll per una anagrafica ed una dll per l'altra. internamente, vi è il form e le classi con la logica effettiva.

compilandolo così, i client che non devono avere accesso a certi dati non gli viene installata la dll (abbiamo già un sistema automatico di download degli aggiornamenti integrato, molto efficiente direi). E' quest che intendevo parlando di elevata specializzazione.

In questo caso tu mi diresti di dividere ciascuna delle mie dll in due parti: layout e logica, giusto. così posso usare la parte di logica in altre parti.? credo di avere capito così

se è cosi, è una idea buona, credo. Rimane il fatto che davvero mai capiterà di riusare la logica di un modulo...

dimmi se ho capito bene,

grazie intanto, questa discussione si fa sempre più interessante.

ceccus
13-12-2004, 13.24.05
Salve,
Hai capito perfettamente.....magari ORA non ti capiterà di riusare qualche "metodo" della logica di Business, ma quello che non succede in 10 anni , succede poi in 10 minuti....
Poi, la problematica che hai esposto, è più una problematica da Controllo Accessi che non da logica distributiva....
Che succede, infatti, se per errore una Dll viene distribuita su un client che non potrebbe eseguire la logica contenuta nella Dll stessa ?? Molto probabilmente, nell' ottica in cui l'hai descritta Te, lavorerebbe normalmente...visto che la Dll è installata....e questo, forse, non è la cosa voluta....
Avete mai preso in considerazione di Allestire un "Controllo Accessi" alle varie funzionalità delle Vostre Applicazioni ??
Forse è giunta l'ora di farlo......
Vediamo se ti ho "stimolato" abbastanza....

Ciao !!

realtebo
14-12-2004, 07.07.47
controllo accessi già presente. il downloader è una combinazione di sforzi tra l'applicativo ed un sito php, il quale riceve una stringona criptata e restituisce le varie dll aggiornate, ma solo se l'utente - client in questione può riceverlo.

rimane cmq che una dll installata in un client a 'basso profilo', ovvero con pochi privilegi, certe cose non le esegue cmq perchè marcate come 'ad alti privilegi di esecuzione'. abbiamo 3 livelli per ora, 0, 10 e 30, per cui abbiam spazio in mezzo per le 'sfumature' degli utenti.