Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problema Client-Server

  1. #1

    Problema Client-Server

    Salve a tutti... sono nuova del forum... vi leggo spesso ma non ho mai avuto la necessità di scrivere alla ricerca di aiuto fino ad oggi...

    Vi illustro subito il mio problema...
    Sto progettando un sistema distribuito composto da un client e un server (per realizzare ciò utilizzo un pattern proxy)... il problema sta però nel fatto che il client ha la necessita di scambiare messaggi anche con un altra classe... nella mia ignoranza quindi ho supposto che:

    ClasseA (Server) ----> ClasseB (Client)
    ClasseB (Server) ----> ClasseC (Client)

    E' possibile che la ClasseB sia Client e Server nello stesso momento... facendo quindi parte di due strutture proxy???

    Vi prego aiutatemi...e non ridete se ciò che ho pensato è una cavolata

  2. #2
    certo che si può.. non so come stai realizzando nel dettaglio il pattern proxy ma per il generico problema client-server puoi pensare alla realizzazione di due interfaccie Server e Client, ciascuna contenenti le signature dei metodi necessari.
    Dopodichè crei le tre classi implementando le necessarie interfaccie e cioè:

    ClasseA implements Server
    ClasseB implements Client, Server
    ClasseC implements Client

  3. #3
    Qua trovi un semplice schema UML che descrive la struttura che ho ipotizzato...
    ho solo bisogno di sapere se è fattibile che ciò la classeB riceve dal server classeA (ad esempio una LinkedList da un metodo) può essere utilizzato in InterfacciCImpl come risposta a metodi invocati tramite Socket dalla classeC. [spero di essermi spiegata bene... ]

    Grazie in anticipo...
    Immagini allegate Immagini allegate

  4. #4
    mm il diagramma non è molto chiaro.. interfaccia B e interfaccia C non si capisce cosa siano, anche perchè non è presente nemmeno un metodo né un attributo.. forse sono le interfacce per server e client rispettivamente?

    Cmq quello che dici tu si può fare sicuramente.

    Se ho capito bene:
    nell'interfaccia B c'è un metodo List getList()
    la classe che implementa l'interfaccia C chiama il metodo dall'interfaccia B

    perciò tu fai:

    Oggetto B (ClasseB) chiama getList() dall'oggetto A (ClasseA) e gli viene data una lista L
    Oggetto C (ClasseC) chiama getList() dall'oggetto B (ClasseB) e vuole resistituita la stessa lista L

    In questo caso basta che l'oggetto lista L venga memorizzato in un attributo di classe definito nella classe B, e nell'implementazione di getList() dentro la classeB verrà restituito l'attributo di classe. Ovviamente l'attributo di classe può essere generato in qualche modo o preso dall'oggetto A tramite il metodo getList() (che, nella classe A, può essere implementato diversamente che nella classe B)

  5. #5
    Quindi.... in fin dei conti a me basta che nella ClasseB inserisco un campo

    lista LinkedList<...> che riempio con la lista che mi passa la ClasseA tramite il metodo getList() e su questa stessa lista posso invocare i metodi della ClasseC... esatto?

    Se è cosi mi sei stato di grande aiuto... ^__^

  6. #6
    No aspetta stavo provando a rivedere i metodi e non mi torna una cosa...

    nella classeB io creo una istanza di InterfacciaBStub e gli chiedo di eseguire dei metodi (come ad esempio getList(...)), sempre dentro alla classeB come server dovrei far partire il metodo run() che si trova in InterfacciaCSkel... ma se faccio partire il run() non ho più la possibilità di eseguire i metodi di InterfacciaBStub perchè run() è iterativo...
    come si risolve il problema?

  7. #7
    Allora, io vado sempre a tentativi perchè non mi è ancora chiaro tutto lo scenario.. quindi se non capisco qualcosa scusami

    dunque..

    mi pare di capire che i server che utilizzi usino il metodo run che rimane attivo per restare in ascolto di chiamate dal client, giusto?

    Quindi, il server A e il server B partono e restano in ascolto..

    ad un certo punto il client C chiede al server B la lista, attraverso il metodo getList()

    a questo punto, basta che dentro il metodo getList() di B ci sarà una chiamata al metodo getList() di A, e il risultato di questa chiamata sarà anche il valore restituito a C..


    Altrimenti, se non ho capito bene, per favore spiegami bene il processo ipotizzando esistano solo un client e un server per favore, magari postando anche il codice

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.