Newsgroup: it.comp.lang.delphi
Titolo: Percorso per arrivare ad una web application

Salve a tutti,
spero di essere nell'ng giusto, in caso contrario per favore indicatemi
dove posso postare.
Per scrivere i miei programmi uso BDS2006.
Un'azienda mi ha commissionato un applicativo gestionale (form che
accedono a dati su dbserver) in ambiente Windows, anticipandomi che in
un futuro prossimo (due anni al massimo) mi chiederà di effettuarne un
porting su web.
Pensavo di impostare il mio lavoro in modo da minimizzare, per quanto
possibile, il successivo lavoro di porting: qualche buon consiglio in
merito?
Grazie tante
Dario

 merito?
Essendo le due applicazioni (Windows e Web) di natura completamente 
differente, non ti converrebbe partire direttamente con la realizzazione 
di un'applicazione Web?
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

Il 12/08/2006, 
dtin...@gmail.com
 ha detto :

Hai già dato un'occhiata a Intraweb?
In ogni caso, impostare il programma in modo che la business logic sia 
il più separata possibile dalla visualizzazione dei dati ti può 
aiutare.
Sappi che una applicazione web basata sul protocollo Http con uso del 
browser come interfaccia è stateless, cioè non si ricorda in quale 
punto del programma sei e si può saltare da un punto all'altro. Questo 
complica un po' le cose.
Per la teoria ti consiglio inoltre di guardare materiale sul modello 
MVC.

 Hai giŕ dato un'occhiata a Intraweb?
Intraweb č un aborto; io, anche in base alla mia esperienza, lo lascerei
perdere.  A proposito di MVC, credo che per lo sviluppo di un'applicazione
web sia ormai necessario ricondursi a tecnologie standard, affidabili e
difficilmente pareggiabili.  Java e la piattaforma J2EE offre una buona
struttura di tipo MVC (vedi JSP/servlet/ejb), affidabile, sicura, testata
e si avvale di tool ottimi e peraltro gratuiti (vedi Eclipse, JBOSS,
ecc..).
Per lo sviluppo web (e non solo, vedi JWS) io consiglio di usare Java.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Si, in effetti era quello a cui avevo pensato da subito, ma volevo
verificare se esiste qualche strada alternativa.
Ad esempio, girando per gli ng mi sembra di aver capito che .net
*prometta* qualcosa del genere, ovvero la possibilità di scrivere
applicazioni desktop facilmente trasportabili verso web...
Ho capito male, quindi?
Grazie
Dario


 Ho capito male, quindi?
ASP.NET
 è progettato per consentire la realizzazione di applicazioni Web 
usando un approccio similare a quello di comuni applicazioni Windows, 
consentendo lo sviluppo "per componenti" e la scrittura di codice che 
viene eseguito lato server in risposta ad eventi scatenati da azioni 
intraprese dall'utente sulla pagina.
Tuttavia, la totale differenza del mezzo di espressione 
dell'applicazione rispetto ad un normale programma Windows (cioè la 
fruizione con un browser Web) rendono l'applicazione stessa totalmente 
differente in termini di principio di funzionamento.
Se desideri sviluppare un frontend sia Windows sia Web, potresti tenere 
conto di quanto ti è già stato suggerito, cioè il massimizzare la 
separazione tra quella che è la logica che governa l'interfaccia utente 
rispetto alla "business logic", cioè le classi che costituiscono il 
dominio dell'applicazione e che interagiscono eventualmente con la 
componente dedicata allo "storage" delle informazioni (interazione con 
una base dati).
Se intendi utilizzare Delphi e 
ASP.NET
, potresti quindi isolare le 
classi per l'accesso ai dati e le classi che rappresentano il modello ad 
oggetti del dominio del problema che il tuo gestionale si appresta a 
risolvere in uno o più assembly (DLL) .NET, racchiudendo in "package 
Delphi.NET" tutta la parte logica, quindi, che viene utilizzata sia dal 
frontend Windows che dal frontend Web 
ASP.NET
 ma che non dipende da 
nessuno di questi due.
Successivamente, puoi realizzare la tua applicazione Windows facendo uso 
della libreria 
VCL.NET
, quindi una libreria che ti è del tutto 
familiare, dotata delle classi e dei componenti che sei già abituato ad 
utilizzare in ambito Win32, che ti consente però di accedere anche a 
tutte le classi della libreria base del .NET Framework di Microsoft, 
incluse (ovviamente) quelle che hai precedentemente creato e inserito 
nei package Delphi.NET. In questo modo, per farla breve, costruisci 
un'applicazione visuale "pure .NET", ma senza ricorrere alla più ostica 
libreria Windows Forms di Microsoft.
Pur essendo la libreria 
VCL.NET
 familiare e del tutto identica, o quasi, 
alla controparte Win32, suggerisco comunque un minimo di informazione 
sul .NET Framework e sui meccanismi di funzionamento che lo governano, 
per evitare di incappare in anomalie dovute proprio ad un errato 
utilizzo della piattaforma.
Le stesse classi di cui sopra, quelle che hai compilato all'interno dei 
package Delphi.NET, puoi riutilizzarle allo stesso modo in 
un'applicazione Web Forms 
ASP.NET
.
Riassumendo, quindi, realizzi uno o più package Delphi.NET (a seconda di 
come desideri suddividere la tua logica) che contengano le classi da 
sfruttare, indipendentemente dall'interfaccia, per leggere e manipolare 
le informazioni che il tuo gestionale, sia Windows che Web, dovrà 
trattare; realizzi pertanto una sorta di "backend".
Successivamente, costruisci un'interfaccia grafica Windows (con 
VCL.NET
) 
e un'interfaccia 
ASP.NET
 che facciano uso delle classi create in 
precedenza, scrivendo il codice necessario a costruire il collegamento 
tra l'interfaccia visuale specifica e le classi.
Ho avuto occasione di implementare una situazione di questo tipo nello 
sviluppo di un progetto e mi sono trovato discretamente bene.
Ovviamente, l'uso di questa architettura presuppone un sistema operativo 
Microsoft Windows (indicativamente con IIS) e la presenza del .NET 
Framework 1.1 installato.
Se devi indirizzare altre architetture o tipologie di server differenti, 
non è la soluzione che fa per te.
Ciao,
   Marco.


Grazie Marco, e a chi mi ha risposto, per la chiarezza e la
disponibilità.
Dario
Marco Breveglieri ha scritto:
