Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
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


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
SpaceX: un satellite ha fotografato il s...
36 idee regalo con offerte Amazon sotto ...
Sony assume il controllo dei Peanuts: Sn...
DJI Neo scende a 149€ su Amazon, in vers...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
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: 20:07.


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