Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

Fare le cose per bene paga

Ho una form che deve fare questo (visione semplificata ma la sostanza è questa) ascoltare su una socket per ricevere una serie di stringhe, fare un lookup in database per ogni stringa e mostrare dei dati all'utente. Il programma ha una MDI, l'utente apre la form X e quando arrivano i codici sulla socket vengono visualizzati, se la form X non è aperta non viene visualizzato nulla.

Il cliente dopo avere visto il tutto funzionare fa la seguente richiesta di modifica: fare si che il programma MDI ascolti sempre nella socket, alla prima stringa che arriva se la form non è aperta la si apre automaticamente. Immaginate cosa succede se si fa il solito calderone con tutto il codice nel code behind della form, mi vengono in mente i seguenti problemi.

  1. Il codice di connessione con la socket è nella form, va spostato con copia ed incolla (orrore) o rifattorizzato in un componente per far si che anche la form MDI riceva le stringhe quando la form X è chiusa.
  2. Quando la form mdi riceve una stringa controlla se la form X è aperta, se non è aperta la apre, ma il primo codice che è stato ricevuto dalla MDI non verrà ricevuto dalla form, e cosa succede ai codici che arrivano mentre la form si apre? (possono arrivare blocchi di decine di codici in millisecondi)
  3. Quando la form si apre la MDI deve rilasciare la socket e far si che da quel momento in poi sia la form X a ricevere i dati....problemi di sincronia?

Poi boh…forse succederebbero altri casini e dico succederebbero Perche la mia struttura è un MVC con vista completamente passiva, per cui io ho semplicemente preso il mio controller della form X che contiene tutta la logica, lo inizializzo automaticamente con una form dummy che internamente alla prima chiamata del metodo ShowData() inizializza una form reale, la mostra e buonanotte. In sostanza ho un proxy della view che crea in maniera Lazy la vera form da visualizzare all'utente, non ho toccato la logica del controller per cui tutto funziona. Ho fatto in 10 minuti e sono contento :D :D

Alk.

Print | posted on martedì 20 novembre 2007 22:24 | Filed Under [ .NET ]

Feedback

Gravatar

# re: Fare le cose per bene paga

Si penso che sarebbe stato possibile, però il fatto è che l'utente vuole chiudere la form e poi si deve riaprire atuomaticamente, vabbe potrei avere intercettato il closing, ma in generale la struttura del proxy mi sembrava più pulita.

Alk.
21/11/2007 19:30 | Gian Maria
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET