Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-08-2010, 18:18   #1
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
[C#] Riflessione architetturale

Buongiorno a tutti,
come molti di noi sanno spesso decidere per una architettura e per quali pattern utilizzare in fase di analisi di un nuovo progetto non è semplice.
Decidere ed arrivare fino in fondo ad una applicazione rimanendo coerenti al 100% con l'analisi fatta inizialmente è quesi impossibile, vuoi per via di analisi non fatte come si dovrebbe, vuoi per le richieste che arrivano sempre in fase di sviluppo e mai di progettazione, una applicazione subisce innumerevoli mutazioni durante il suo sviluppo.

La cosa migliore che si possa fare e arrivare ad avere per le mani un progetto con il miglior rapporto di astrazione dal codice e di granulosità del dettaglio in base a quello che è il nostro "Dominio" o, in caso di applicazioni veramente grandi, in base a quello che è l'obbiettivo del singolo mattoncino che si sta analizzando.

In ambito .net l'architettura più in voga è sicuramente la 3-tier.
Al di là delle sue varianti MVC, MVP, MVVM MVqualsiasicosa riproduce ogni volta lo stesso schema:
  • DataAccessLayer(DAL)
  • BusinessLogicLayer(BLL)
  • PersentationLayer

Ora mi chiedo e chiedo a voi, quali altre architetture programmatiche utilizzate frequentemente oltre al 3-tier, ne utilizzate?, non utilizzate nemmeno questi? perchè?

Guardiamo se siamo in grado di fare una discussione creativa e costruttiva. Mettiamo le nostre esperienze, lavorative e non, a disposizione di noi stessi e anche di chi si avvicina per la prima volta a questi argomenti che purtroppo non sono così diffusi causa ignoranza in materia e scarsa attenzione da parte delle aziende alla formazione continua del personale.


N.B. La discussione verte sulle architetture di programmazione (parliamo in grande) non sui pattern di creazione di design o di implmentazione altrimenti ci si perde.
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2010, 10:44   #2
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
Proprio nessuno eh?
va bene scusatemi, evidentemente non interessa.....
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2010, 11:12   #3
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da sneeze Guarda i messaggi
Proprio nessuno eh?
va bene scusatemi, evidentemente non interessa.....
No aspè, a me ad esempio interessare interessa e anche molto.
Ma non avendo mai programmato "in the large" e non essendo un professionista non ho nessuna esperienza da condividere o altro da dire se non attendere con la bava alla bocca lo scambio di post dei più esperti
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2010, 13:10   #4
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
Dato che ancora nessuno parla faccio io una introduzione al 3-tier, sperando davvero che qualcuno giunga in mio soccorso portando qualcosa di interessante.

Architettura Three-tier
l'architetture 3 tier è una architettura, spesso client-server,in cui l'interfaccia utente, la logica programmatica ("business rules"), e il Data layer (i dati) sono sviluppati e mantenuti separati l'uno dall'altro, spesso (ma non sempre) addirittura su macchine differenti. Il padre di questa architettura è sicuramente John J. Donovan.

La three-tier è classificata sia come architettura che come design pattern.

Oltre all'ovvio vantaggio di avere una applicazione modulare, l'architettura 3tier si propone di rendere possibile la sostituzione o aggiornamento di una delle 3 parti in maniera completamente indipendente dalle altre, vuoi per necessità di upgrade, vuoi per sfruttare alcune o una delle parti in altro modo o vuoi per la semplice risoluzione di un bug. Ad esempio una modifica del sistema operativo potrebbe produrre la necessità di modifiche alla sola interfaccia grafica, una variazione sul db può provocare modifiche solo al Data layer, una differente procedura applicativa provoca modifiche solo al middle tier.

Il "tier" intermedio può sfruttare il 3tier anche al suo interno, in questo caso si può parlare di applicazione multi-tier o n-tier.




Arriviamo al dettaglio:

Strato di presentazione
è il livello più "alto" della nostra applicazione. si occupa ovviamente di visualizzare le nostre informazioni, è l'unica parte direttamente esposta allo user. Se concepito seriamente può e deve comunicare solo con il middle tier (Busisness logic) e mai con il Data Layer direttamente.

Middle tier (business logic, logic tier, middle tier ,application tier o logica applicativa)
Si astrae dall'interfaccia grafica, implementa tutte le nostre logiche programmatiche, fornisce le informazioni necessarie alla nostra UI (strato di presentazione) manipolandole se necessario, esegue i controlli sui dati, coerenza del dato, validazione e quant'altro e infine si occupa di dialogare con il Data layer.

Data tier
Questo strato si occupa solo di persistere e interrogare il nostro dominio (che esso sia un db sql o anche solo un file xml). questo strato mantiene le informazioni completamente astratte dalla nostra logica applicativa. Eventualmente implementa logiche di caching del dato per le performance.

Occhio al MVC
A prima vista l'architettura 3-tier sembra veramente simile al MVC invece la topologia è un pò differente. La regola fondamentale del 3-tier è che la presentation layer non può mai arrivare direttamente al dato ma deve per forza passare dal middle tier, sostanzialmente il 3tier è lineare primo strato -> secondo strato -> terzo strato -> secndo strato -> primo strato. Invece MVC è triangolare: la view (presentation) invia le inormazioni immesse al controller (middle tier), il controller aggiorna il Model (Data layer), ma la view riceve l'aggiornamento direttamente dal model primo strato -> secondo strato -> terzo strato -> primo strato

Storicamente questa architettura prende piede negli anni 90 dalla osservazione del funzionamento dei sistemi distibuiti dove i tre livelli sono fisicamente separati. MVC invece si sviluppa nelle precedenti decadi ad opera della XEROX (1970 1980) e si basa sull'osservazione del funzionamento di una singola macchina.

Testabilità
Ricordiamo come abbiamo già detto che tutte le nostre logiche applicative, le nostre validazione dei dati e quant'altro risiedono nel middle tier, questo comporta direttamente che l'applicazione sia testabile direttamente senza bisogno di passare dalla UI, posso con delle unittest testare continuamente le mie validazioni, il mio dialogo con i dati, le mie logiche ecc ecc...
in sostanza l'applicazione del 3tier ci avvicina molto alla realizzazione di quella che si chiama single responsability. Molto in voga in fatto di TDD.
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2010, 14:12   #5
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
No aspè, a me ad esempio interessare interessa e anche molto.
Ma non avendo mai programmato "in the large" e non essendo un professionista non ho nessuna esperienza da condividere o altro da dire se non attendere con la bava alla bocca lo scambio di post dei più esperti
*

Interessa anche a me.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2010, 14:40   #6
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
beh ragazzi.... io ci ho messo del mio adesso vediamo.
per il momento i guru del forum latitano
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2010, 16:25   #7
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Credo che relativamente al MVC, vada fatta una precisazione : come si diceva, si ha una comunicazione di tipo triangolare tra le entità ma non va confuso il model con il livello persistenza. Il modello infatti agisce ad un livello di astrazione superiore, ed idealmente può essere visto come la parte "bassa" dello strato logica (ovvero quello comunicante con il livello dati). Dualmente il controller rappresenta il sap per il livello di presentazione verso i livelli più bassi. In definitiva mentre il 3-tier è un pattern architetturale puro, il MVC (a mio avviso) va posto a metà tra gli architetturali e i comportamentali (avendo in definitiva la possibilità di operare su livelli non necessariamente standardizzati) .
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2010, 18:13   #8
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
Sono assolutamente daccordo con te.
Associare il Model allo strato di persistenza è sbagliato, il mio era un tentativo di rendere più evidenti le differenze, in questo caso quello che si avvicina più allo strato di persistenza è proprio il model. Altra cosa è MVP per il quale, secondo me, invece è possibile fare un discorso di 3-tier. Ho ancora qualche riserva invece sul MVVM

Ultima modifica di sneeze : 10-08-2010 alle 18:15.
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2010, 18:54   #9
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Per quello che so della variante MVP, essa non è altro che la formalizzazione dell' integrazione tra MVC e Observer in ambiente .NET. Ma alla fini fine si tratta solo di una questione meramente dialettica : se andassimo ad ispezionare la maggior parte del codice prodotto seguendo questo pattern, soprattutto in Java, noteremmo un naturale utilizzo di observer atto a fornire la comunicazione di cui sopra (deresponsabilizzando il controller dalla gestione del viewstate) e a favorire applicazione multivista. Ma ciò, in realtà, non è nulla di nuovo in quanto è un vecchio principio quello secondo cui il motore grafico deve conoscere la logica sottostante, ma il contrario non deve avvenire.
Anche il MVVM, a mio modo di vedere, non introduce nulla di nuovo. Chiarisce solo che il controller, o meglio sul controller, debba essere creato un wrapper in grado di limare le differenze concettuali tra i dati nel model e quelli trattabili dalla specifica interfaccia.
Se vogliamo trovare una differenza tra le 2 implementazioni si può notare come nella prima lo sforzo programmatico iniziale è maggiore dovendo fornire un unico strato adatto a diverse viste, mentre nel secondo approccio il software deve essere molto modulare in quanto richiede l' aggiunta di un nuovo strato (molto impropriamente "driver") per la nuova interfaccia.

Ultima modifica di nuovoUtente86 : 10-08-2010 alle 19:06.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2010, 10:30   #10
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
Se vogliamo andare nello specifico allora bisogna dire che già MVC non è altro che l'implementazione dei pattern “Mediator” e “Observer”. Per quello che riguarda MVP e MVVM in effetti non sono altro che delle varianti del MVC. Nel MVP il controller viene sotituito dal presenter. Ma al contrario del MVC il presenter è allo stasso livello della view..... Dovrebbe occuparsi esclusivamente di stare in ascolto sugli eventi generati dalla UI e dal Model e mediarli, per questo motivo mi sembra che risponda bene al concetto di separation of concern proposto dal 3-tier, difatti uno dei più grandi vantaggi del presenter è proprio serve più view. L'MVVM sostituisce al controller il VIEWMODEL che invece è poizionato al di sotto dell'interfaccia grafica e si occupa non solo delle logiche applicative ma anche dei Commends che l'interfaccia grafica può eseguire, per questo motivo non può servire più view ma occuparsi di una sola. Inoltre in questo caso i dati non vengono richiesti o inviati dall'interfaccia ma vengono mandati in pull (push) direttamente dal view model verso l'interfaccia grafica tramite il potente binding offerto dallo xaml e i concetti di Notify (INotifyPropertyChanged, INotifyCollectionChanged) e di binding twoway.
Per questi motivi forse il più "puro" dei tre potrebbe essere considerato MVP. Ad ogni modo sono certo che essendo concetti abbastanza astratti se chiedessimo a 10 sviluppatori di descriverci una possibile implementazione del 3-tier sono convinto che ne uscirebbero 10 implementazioni diverse. Probabilmente la stella polare da seguire sempre e comunque rimane la “Separation of Concerns”
sneeze è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
TVS non è solo moto e scooter: ec...
Alexa+ arriva su BMW: gli automobilisti ...
Gemini Deep Research arriva su Google Fi...
Rinvii a catena, Marvel 1943: Rise of Hy...
Xiaomi inaugura uno spazio dedicato ai f...
Rilasciate le specifiche di Bluetooth 6....
L'obiettivo che mette tutto a fuoco: la ...
Meta avrebbe raccolto fino al 10% dei ri...
NVIDIA DGX Spark e videogiochi? Una pess...
Serie Oppo Reno15 confermata: arriva il ...
UPDF 2025: l'editor PDF che fa (quasi) t...
Partono altri sconti pesanti su Amazon, ...
OpenAI senza freni: centinaia di miliard...
Blink Mini 2 da 34,99€ 15,90€ (-55%) su ...
Altro che AGI, la superintelligenza di M...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v