Design appropriato per l'applicazione server asincrona con supporto dei file mutlithreaded?

-5

Ho un'applicazione a tre livelli con il livello client di base, il livello intermedio e il livello del database. Il livello intermedio è destinato a raccogliere richieste di lavoro e dati dal client, elaborarlo e quindi memorizzarlo nel database.

Ci sono alcuni punti chiave qui:

  1. Innanzitutto, le richieste di lavoro dal livello client dovrebbero essere asincrone quindi il cliente non sta aspettando il completamento del lavoro.

  2. In secondo luogo, è necessario che più client siano in grado di accedere al livello intermedio allo stesso tempo. Se solo una connessione alla volta fosse possibile, quella potrebbe essere ok se i client possono essere forzati ad aspettare.

  3. In terzo luogo, il lavoro del livello intermedio deve essere parallelizzato per sfruttare il server multi-core su cui verrà eseguito.
  4. Infine, le prestazioni sono generalmente importanti qui. Io non ho benchmark specifici, ma è probabile che ne starò un sacco a pezzi dati, quindi assicurandoti che il design faciliti le prestazioni ragionevoli è import.

Considerato tutto ciò, ho problemi a progettare il livello intermedio. Per prima cosa, qual è il modo migliore per connettere il client e il livello intermedio? Inizialmente avevo concepito l'uso di TCP per connettere i due usando un livello intermedio con un thread principale per gestire le connessioni e prendere i dati dai client e poi rilasciare i thread dei bambini per eseguire il lavoro effettivo in modo che i client non dovessero aspettare.

Tuttavia, WCF sarebbe una scelta migliore? Se lo faccio, come faccio a farlo funzionare in modo asincrono? Inoltre, sembra che utilizzerei il parallelo per ogni ciclo in ogni chiamata di servizio che esegue il lavoro: è corretto? O c'è un approccio migliore qui che non vedo?

Qualsiasi aiuto sarebbe molto apprezzato!

    
posta user8162075 15.06.2017 - 11:58
fonte

1 risposta

0

Per riferimento, ho capito la risposta al mio problema. Ho usato WCF per il livello intermedio insieme alla libreria di elaborazione parallela di System.Threading. Ho anche utilizzato TCP per gestire la connessione, sebbene tale approccio richieda IIS 7.0 o versioni successive o un host del servizio personalizzato per ospitare il livello intermedio WCF.

Speriamo che in futuro qualcuno fornisca una guida di cui potrebbero aver bisogno e che dovevo capire da solo.

    
risposta data 03.07.2017 - 11:31
fonte

Leggi altre domande sui tag