Newsgroup: it.comp.lang.visual-basic
Titolo: Chiarimenti su applicazione 3 tier

Buongiorno a tutti!
Ho una applicazione Client/Server che vorremmo aggiornare. Vorrei
passare ad una struttura a tre livelli anche per consentire semplici
personalizzazioni sull'interfaccia utente. Ma non riesco a
concretizzare il concetto del livello di accesso ai dati.
Di seguito suppongo che il livello 1 è l'interfaccia utente mentre il
livello 2 è il livello di accesso ai dat.
Cioè, se il primo livello deve visualizzare e gestire i dati che sono
letti dal database tramite il secondo livello come si implementa il
passaggio? Non credo che debba esporre un recordset perchè dovrei
mettere il riferimento ad esempio ad ADO anche nell'interfaccia
utente. E poi se così fosse devo fare ancora il controllo di validità
dei dati nel primo livello. Giusto?
Io immagino da quello che ho letto che il livello 1 chiede al livello
2: dammi la lista degli ordini dal al. Il livello 2 esegue le varie
query e poi?
Mi riesci più difficile immaginare lo scenario di inserimento o
aggiornamento dei dati. Non penso che il livello 1 passi al livello 2
la query in SQL...

Roberto ha scritto:

Proverei a ragionare, se ci si riesce.
Per dialogare con un db posso:
a- Eseguire il tutto da codice presente dentro la form
quindi possiamo dire due livelli ?
1- l'interfaccia utente ; 2- il database
b- Utilizzo una classe dove sono presenti più metodi utilizzabili da più
form, che dialoga con il db.
La classe può essere presente nel progetto o in una dll esterna.
Presumo che quì parliamo di tre livelli.
Il controllo della validità dei dati può essere effettuata o all'interno
del modulo del form,
o si costruisce una classe per ogni form, quindi uno standard per la
sequenza delle operazioni da effettuare, addetta a gestire le varie
operazioni. Si passano i dati, si effettuano i controlli, se tutto ok,
dalla classe di passaggio si passano alla classe detta di secondo livello.
La classe di secondo livello, fa eseguire o le istruzioni SQL o le Stored
Procedure, e restituisce un booleano ed un eventuale messaggio di errore
al client.
Il difficile è la costruzione dei metodi del secondo livello.
Dovrebbe esserci il collegamento al db, quindi al secondo andrebbe passata
l'istruzione SQL, i parametri con il nome della Stored Procedure.
Se si utilizza una Stored andrebbe passato il nome e solo l'array dei
parametri con i valori.
Certo il db utilizzato e soprattutto la metodologia di lavoro è importante.
Es. se utilizzo una istruzione SQL senza parametri, dovrò passare le
stringhe a metodi che gestiscono sia gli apecitti che i punti.
Se utilizzo i parametri no.
Ave
giuseppeD
---
CCR
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Presumo che quì parliamo di tre livelli.
Fra me e te, c'è uno che non ha capito niente delle applicazioni a 3 
livelli.
E non è detto che sia tu.
Alberto
-- 
E tutto mi sembrava andasse bene... 

Ciao.
Taglio tutto il post tanto non c'è un punto a cui voglio replicare di
quello originale. Ti espongo come la vedo io.
Parliamo di sistemi a N strati. Che poi sia DB, FK o PincoPallo importa
poco. Anzi, parliamo di IRC. Dirai tu... che c'entra IRC? Beh, IRC è un
protocollo che si presta bene a spiegare determinate cose.
Il protocollo IRC è composto da una serie di server e client tutti
interconnessi in qualche modo. I server si scambiano messaggi in un
protocollo testuale e sono in grado di comunicare con i client
sempre attraverso messaggi testuali.
Se io voglio parlare con un altro utente, passo dal server, il
quale recapita il mio messaggio privato o pubblico, a seconda.
Questa è una interazione a tre livelli: io(client) parlo con il
server(middle-tier) che parla con il mio interlocutore(backend).
*COME* avviene questa comunicazione non interessa a me /utente/, mi
basta che funzioni. Il concetto è sostanzialmente lo stesso.
Restando in ambito IRC, puoi pensare ad un BOT come un layer di mezzo:
esso ti consente di "parlare" con il server, inviare comandi ad esso,
oltre ad una serie di funzioni "proprie" che ti servono per gestire
quanto accade sul server(nel tuo canale, per la precisione).
Applicando tutto questo discorso ad un DB, cosa succede?
Succede una cosa molto semplice: il client si occupa di
dire al middle-tier che deve aggiornare X,Y e Z, eliminare A e B,
aggiungere F e K. Punto. Come poi il middle-tier si occuperà della
cosa, NON SONO PROBLEMI DEL CLIENT.
Mi sono spiegato?
Ciao,
Andrea

 ha scritto nel
messaggio
news:6bbc9483.05011...@posting.google.com
sono il meno adatto ad insegnare comunque
Strato1 Interfaccia dati raccolta dati
Strato2 Raccolta dati e richiesta dati al server dati...gestione concorrenza
e/o conflitti vari...invio al client dei dati da visualizzare...etc etc
Strato 3 Tipicamente la macchina database
http://garga.iet.unipi.it/~budva/sld012.htm
http://www.mokabyte.it/1997/06/jdbc.htm
http://www.it-lang-vb.net/Documentazione/Articoli/DBRemoto.htm
IMHO....se e ripeto se...lo strato sta su una macchina a parte....
metti un programma in ascolto su una porta e con un winsock gestisci le
chiamate che fanno i vari client...(clona un po quello che fanno i database
seri!)
altrimenti un server activex che fa da strato di mezzo può essere una
soluzione!
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 Demo classe vb.NET :
WodkaThumb 
www.villaceleste.it
  click su "spippolando e
Programmando"

 concretizzare il concetto del livello di accesso ai dati.
[CUT]
Contribuisco segnalandoti qualche articolo dell'MSDN.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgdesigningapplications_9lik.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncomser/html/complus4vb.asp
HTH
Raf

 Alberto
Leggo dal file course-2389-module-1.pdf
MSDN training
Module 1: Data-Centric
Applications and 
ADO.NET
Sezione: Data Access Application Models
1-Tier (Monolithic)
Client logic. Business logic. Data storage
Disegno: un pc
Description:
This model typically involves a single user and all three layers in un 
single computer. For
example, an old-style Microsoft Access database with a single user.
Advantages:
Because everything is in on place, all components are easily accessible.
Disadvantages:
Program update requires source code to be modified, recompiled, and 
redistributed for every user.
This model provides no real ability to scale.
2-Tier ("Fat" Client)
(client/server)
Disegno: un pc client - data services
Description:
This user layer and business logic layer reside one tier, data services on 
another. This model
typically involves two or more computers. For example, a business personnel 
database. Often the
business logic is split between the two tiers: some logic in the client 
application, and some as
stored procedures in the data tier.
Advantages:
Provides some separation of functions.
Disadvantages:
Difficult to scale because the client is a "fat client" that contains both 
the presentation and
business logic layers.
Software distribution and maintenance problems.
3-Tier ("Thin" Client)
Disegno: più pc client - un server - più data services
Description:
Each service is in a separate layer. Business logic moves into a new "Middle 
tier".
Advantages:
Good separation of functions. The client layer is a "thin client" that 
contains only the client
logic, or presentation layer.
Disadvantages:
Security issues.
Remote procedure calls (RPC) cannot pass through firewalls.
----------- Fine --------------
Il descritto va riportato nel reale.
Nelle diversità di ambienti cui uno opera, nelle metodologie di scritture 
del codice.
Nelle strutture standard aziendali o del capo progetto.
Presumo fondamentale l'esposto sopra, ma per dare un aiuto per impostare la 
modalità di esecuzione rispetto
alla realtà cui si opera.
Ave
giuseppeD

 alla realtà cui si opera.
Tecnicamente parlando, ciò che hai citato coincide con ciò che penso io, ma 
non con quello che precedentemente avevi postato tu.
Da un punto di vista usenet, invece, il pezzo che quoto è un piccolo 
capolavoro.
Ciao



"Politichese" puro!!!!.......dritto nel bestiario!
:-)
Giuseppe non parlo di te in particolare ora sottto è!
E' perchè quella frase mi fa "sovvenire" un concetto.....
La differenza fra me povero programmatore di provincia e campioni di "fuzzy
logic" come il formulato di cui sopra (vedi non mi riesce manco imitare)
lo dico con parole mie....
La differenza è che io mi esprimo in termini "umani" talvolta anche
dialettali...e il paragone con tipi "espressivi" con Limite per capacità
comprensione utonto -> 0 è a mia svantaggio!
Ossia esempio:
Riunione da un amico per cambiamento struttura organizzativa ufficio.
Tema: acquisto PC + Programma Contabilità e raccolta Ordini
Partecipanti: il mio amico (digiuno completo di pc), 2 impiegate, io,i
soci,il fidanzato della figlia impiegato a Milano presso una grande azienda
con mansione a detta sua "elaborare preventivi e offerte ai nostri clienti".
Mio intervento: "il pc  come hardware è solo un dettaglio...prima scegli il
software che rispetti le tue specifiche e bisogni poi scegli il pc.Mettere
come primo problema il pc è come mettere il carro avanti ai buoi!"
sono stato ascoltato.....poi a parlato il "milanese"
ha parlato mezzora...ha detto le solite mie cose in mezzora di
tempo!Infarcendoli di "business","KnowHow","Office automation"...etc etc....
Il mio amico assolutamente ipnotizzato e con capacità di discernere prossima
al bradipo addormentato gli ha stretto la mano..."ok facciamo come dice lui"
:-)
La prossima volta tiro fuori il libro di latino del liceo e faccio un
intervento in latino!
 ma vaff........
O tempora o mores!


 "Politichese" puro!!!!.......dritto nel bestiario!
[Taglio]
Ricordo il corso di UML. L'insegnante utilizzava come programma il
Rational Rose. Ho letto un libro successivamente e consultato della
documentazione in Internet.
Mi è stato di molto aiuto ma mi sono costruito un UML personale, secondo
la situazione.
Utilizzo Visio.
Situazioni dove non è possibile utilizzare nè Visio, nè Office.
Utilizzo il commentato nel codice
'1- Controllo valori inseriti
'1.1- se false > messaggio > exit function
'1.2- se true ecc.........
--------------------
Argomento in questione
i Tier o Layer
1-
Se in un pc ho la parte client e il db Access, si chiama 1-Tier
(Monolithic).
2-
Se il db è access è risiede in un'altro pc come lo chiamiamo ?
2 Tier ? Non credo perchè secondo la documentazione Microsoft, 2 Tier è un
client/server, e Access è un file/server. Se devo scrivere una specifica
come la inquadro ?
3-
db SQL Server
chiamato 2 Tier
3.1 -Posso interagire con codice e istruzioni sql da dentro la classe
della form 
3.2 -Posso utilizzare una dll esterna
3.3 -Posso utilizzare una dll esterna e Stored Procedure, quindi
Client > Assembly > Stored Procedure > Tabella
Chi mi vieta di chiamare l'accoppiata (Assembly > Stored Procedure) un
layer intermedio ?
4-
Diverso se utilizzo un Web Services
quì posso avere il 
4.1- Client
4.2- Il Web Services in un pc
4.3- Il db su un'altro
Il fatto, mi sembra, che la parte teorica richede tempo da leggere, ma in
immediato non vedi l'utilizzo pratico, anzi, in prima battuta ti complica
la vita.
Ma questa è una mia impressione.


 concretizzare il concetto del livello di accesso ai dati.
[CUT]
Ciao,
puoi trovare delle info qui:
http://www.sci.unich.it/~amato/teaching/labdati03/Lezione_23_3.html
ma cercando un po' su google trovi davvero tanto.
Ciao e buon lavoro.
Stefano