Imaginem a seguinte situação: um servidor que irá precisar processar dados vindos de diversos clientes ao mesmo tempo, ou seja, um típico servidor multithread. Basicamente ele irá precisar cumprir as seguintes etapas em seu ciclo de processamento:
Etapa1: Aceitar o pedido de conexão de um determinado cliente.
Etapa2: Receber os dados deste cliente e criar uma lista de campos.
Etapa3: Processar esta lista de campos de acordo com os dados nela contido, ou seja, vários profiles de processamento.
Etapa4: Enviar ao cliente os dados processados.
Em todas as etapas irão ocorrer eventos de I/O, então é um típico caso para se colocar as etapas em threads, certo?
Buscando informações sobre este tipo de problema, encontrei muitas referências falando do padrão de arquitetura/design chamado de “Pipes and Filters”. Ainda não estudei muito sobre este padrão, mas a princípio me parece ser uma ótima referência de como resolver este problema.
Qual a opinião de vocês, indicam esta arquitetura/design ou existem outras maneiras mais elegantes de resolver este problema?