Newsgroup: it.comp.lang.visual-basic
Titolo: [ASP.NET]Web Services e più clients

Come da oggetto il problema riguarda i Web Services e la comunicazione
Lato Server verso più Clients e se fosse possibile vorrei consumare ,Lato
server, il web service da una pagina Asp.Net.(Ho detto una cazzata?)
Vuoi che non sò proprio da dove cominciare ,mi chiedevo se fosse possibile
una cosa di questo tipo(Niente codice solo Logica):
---------------------------------------------------
Lato Server:
Un Web Service che espone questi metodi:
<Web Method()> Public Function Login_Users()
'qui registro i miei user,lo traccio per sapere in quale pagina si trova e
*identifico* il computer client (Ie,Palmare,Gsm...infatti mi piacerebbe
che sul client l'unico programma installato sia il Browser)
Ponete attenzione su *identifico*= _
1)Indirizzo Ip?
2)Posso usare il Remoting?
ne riparlerò in seguito.
End Function
<Web Method()> Public Function Upgrade_User()
'Qui l'utente agisce su un datase che gli è stato restituto dal Web
Service e fà l'upgrade dei dati che ha modificato, i quali dovrebbero
essere, giustamente, aggiornati sui Clients in linea in quel momento e su
quella pagina.
Qui viene il Bello come Cavolo Faccio?
1)Ipotesi Inidirizzo Ip
Funzionamento tipo Chat ma qui vi chiedo veramente aiuto da dove parto per
fare una chat,tra client con in mezzo un Server, con asp.Net?
2)Ipotesi Remoting
Posso usare un metodo del WeService Per dare anche solo il refresh a tutti
i client ,preventivamente registrati al Login?
End Function
<Web Method()> Public Function Aggiorna_Users()
'Qui il codice come la logica manca
End Function
---------------------------------------------------
Lato Client:
Cercando di evitare di installare il framework su tutti quelli che
utilizzeranno l'applicazione lato server, avevo ben pensato che ,se fosse
possibile , un'applicazione basata su tecnologia Asp.Net e/o un web
service sarebbe bastata allo scopo.
Questo, implicherebbe che un qualsiasi client può interagire con
l'applicazione e farlo in modo *sincrono* con gli altri clients,che
avvertono l'interazione.
L'alternativa sarebbe costruire un'applicazione "WinForm" lato Client che
consumi il web service e che si auto-alimenti dallo stesso,nell' esempio
più banale un timer che mi fà un refresh!!!
In definitiva il mio problema è:
posso lato server informare il client che è stato fatto un aggiornamento?
Ecco perchè parlavo di un funzionamento alla *chat*....
*Opinioni*,link ,argomenti, libri e magari qualche piccolo esempio sono
graditissimi
Grazie ;)
Ciao
Alessandro
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Scusami ma non ho capito bene la tua esigenza ma visto che vuoi usare un
browser lato client perche' non sviluppi il tutto con 
ASP.NET
? in questo
modo l'applicazione e' automaticamente aggiornata senza dove informare
nessuno...
HTH
PS: Nelle pagine 
ASP.NET
 puoi invocare tranquillamente dei WS...
-- 
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - 
http://www.ugidotnet.org

 PS: Nelle pagine 
ASP.NET
 puoi invocare tranquillamente dei WS...
Mi dai uno spunto?......Per favore :)


 Mi dai uno spunto?......Per favore :)
Scrivi il tuo webservice (.asmx) e lo butti sul server. Dopo averlo
adeguatamente testato (ma questo è ovvio) usi un qualunque tool (va bene
anche webmatrix: Tools, Generate Proxy class) per creare e compilare una
classe che espone tutti i metodi che hai messo nel tuo webservice. Piazzi la
dll nella directory bin del tuo sito e, nelle pagine aspx, non hai che da
invocarne i metodi.
ESEMPIO (sono sempre parecchio oscuro a parlare in teoria, scusa)
--pippo.asmx (circa)
<%@ WebService class="pippo" %>
<webmethod> function  X as integer
    return 1084
end function
Generi con il comando che ti ho detto (namespace yyy, class pippo) la dll
yyy.pippo.dll, che piazzi nella directory bin (non cgi-bin) del tuo sito.
--file pluto.asmx (circa)
dim var as new yyy.pippo
response.write(var.x)
Se (osserva l'ironia) dovessi essere stato poco chiaro, chiedi pure...

 E' questo che mi stai cercando di dire?
Se ho ben capito dovrebbe essere simile ad una pagina asp: legge la lista
utenti (sta su un database, giusto?) al caricamento e la visualizzi: se
cambia, devi ricaricare la pagina o quantomeno la lista (tanto più che
ado.net
 lavora in modalità disconnessa)

 PS: Nelle pagine 
ASP.NET
 puoi invocare tranquillamente dei WS...
Pendo, letteralmente, dalle tue ...dita.
I Ws per me sono un argomento del tutto nuovo e tutto da scoprire visto la
semplicità con cui in .Net si possono realizzare...penso anch'io siano il
futuro degli applicativi Web-Based,e ti pregherei di farmi un pò di luce.
Ciao e grazie
Alessandro
Morfeus®
Free Joint
:PII


 Mi dai uno spunto?......Per favore :)
Se hai ancora usato dei WS la cosa e' identica ovvero WebReference, istanza
e uso...
HTH


 Se (osserva l'ironia) dovessi essere stato poco chiaro, chiedi pure...
Quello che non riesco a leggere qui sopra è come fà il ws ad aggiornare
tutti i clients ,che sono su quella pagina in quel momento?
Ipotizzo:
 Non lo fà 
un'altro client non riceve la risposta del metodo 
 Lo fà 
uso controlli-server che utilizzano meccanismi di "postback"
Ciao e grazie 


 ha scritto nel messaggio
news:bbdftg$ala$1...@news.newsland.it...
mmm...
Se in fase di Page_Load invochi il metodo QuantiSiamo() del webservice, ti
risponderà ed avrai il valore che ti serve.
Fatto questo, visualizzi la tua pagina che è (provare per credere) HTML puro
(be', sì, a parte un po' di javascript...).
Se il valore QuantiSiamo() cambia nel tempo, il ws non farà nulla per
comunicarlo agli altri: saranno le pagine che dovranno interrogarlo ad
intervalli regolari per aggiornarsi.

 Ok, quindi il problema sta nell'accesso concorrente allo stesso record 
NO,No,no...
il problema sta nel fatto che:
io qui aggiorno la lista e scateno un evento,e il codice nel ws 
*Lei* dall'altra parte legge solo, la lista, e ad un certo punto ,,,,rullo
di tamburi ,,,,vede la mia modifica...ecco l'ho detto.
Mi scuso per la mia incapacità espressiva ,purtroppo sono nato
così...ahahammammm


 intervalli regolari per aggiornarsi.
*****Bingo*****
 Come faccio?
Ciao
Alessandro
Morfeus®
Free Joint
:PII
-- 


 
ado.net
 lavora in modalità disconnessa)
No non è questo ,il mio era un esempio.
Devo creare, un sito che funzioni da Applicazione Totalmente Lato Server.
Lato client, non vorrei installare il framework e quello che mi manca è
sapere come il "Server" posso in un momento "qualsiasi"(intendo deciso da
me) o in conseguenza ad un evento generato da un client rendere partecipi
tutti gli altri clients, della modifica effettuata.
Come esempio potevo porre anche che :se io e te stavamo sullo stesso sito
e io andavo ad aggiornare una lista, questo aggiornamento ti venga
segnalato in uno spazio della tua pagina Web,oppure ,se sei sulla stessa,
vedere la modifica in tempo "Reale"(per quanto possa valere questo termine
in una soluzione di questo tipo).
Ipotizzando una cosa del tipo, modifico un file che è a sua volta oggetto
di un Watcher di un'altra applicazione sul server ,alla modifica del file
l'applicazione lancia un refresh ai clients collegati i quali vanno ad
eseguire un metodo,è Fantascienza?
Ciao
Alessandro
Morfeus®
Free Joint
:PII
-- 


 Ecco perchè parlavo di un funzionamento alla *chat*....
no, ed è giusto così. Immagina un Web Service come una "classe remota": tu
puoi invocarne i metodi, passando gli opportuni parametri e leggendo i
valori di ritorno. Con un accettabile grado di approssimazione, lo scenario
è questo. In realtà, però, il client incapsula la invocazione all'interno di
un messaggio (envelope) codificato secondo una grammaica XML, detta SOAP: il
Web Service riceve l'envelope, decodifica la richiesta del client, la esegue
localmente (cioè sul server) e produce una risposta, che viene veicolata a
client come envelope SOAP. Il tutto, tipicamente, in una "transazione" http.
E qui viene il "bello": http è un protocollo stateless e quindi il server,
appena inviata la risposta, chiude la connessione. Ergo tra client e server
non avviene + comunicazione fino a nuova richiesta del client. E non
potrebbe essere altrimenti: se anche il server "memorizzasse" l'ip della
richiesta, non potrebbe farsene nulla, e questo perchè, per esempio,
l'accesso ad Internet da parte del client potrebbe essere mediato da un
proxy o da un firewall. In questo caso, l'ip percepito dal server sarebbe
quello del proxy/firewall, e non qllo del client "reale". Inoltre, se anche
così non fosse, per rendere "reattivo" un client ad un "push" http, dovrebbe
essere attivo su di esso un servizio http (ossia un Web Server), il che è
improbabile. Varie case (tra le quali MS e Netscape) hanno fallito anni
addietro quando proponevano tecnologie di pushing http.
Anche Remoting non sarebbe una soluzione, poichè richiede il framework .NET
sul client
.A
UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org

 no, ed è giusto così.[CUT]il resto lo conoscevo già
ma mi sono conservato la possibilità intranet...staremo a vedere
Mi fa di un male, quello che hai scritto, ma anch'io immaginavo così solo
che non potevo esserne certo.
Non essendo esperto in materia ,non è che con le altre mi vada meglio
ehehehhehe....
Ho visto molte Chat in Browser , lì il discorso com'è?
Pensi che posso riadattarlo al mio problema?
;Grazie mille hai capito in pieno il problema


  Come faccio?
Credo che sia possibile aggiornare la pagina (o, meglio, un iframe
opportunamente "ritagliato") ogni x secondi in javascript.
Prova a vedere su html.it...
PS. Quasi sicuramente ci sarà un sistema migliore/più pulito/più
performante, ma io non lo conosco...