Uma fila é um conceito de nível superior ao de um fluxo. Os elementos base de uma fila são uma mensagem / objeto, que é uma estrutura de dados coerente (geralmente digitada) que pode ser interpretada pelo consumidor por conta própria. Por outro lado, na base de um fluxo , há (geralmente tamanho fixo) bits / bytes / caracteres, que, por si só, geralmente não fazem sentido para o aplicativo. Uma sequência desses caracteres pode compor uma "mensagem", mas uma API de fluxo deixa para o aplicativo dividir a sequência de caracteres em partes sensíveis.
Uma API de fluxo geralmente também permite leituras e gravações parciais, se os buffers de fluxo estiverem cheios e o outro lado não estiver lendo / gravando; aplicativos que manipulam filas geralmente esperam que a fila os manipule internamente.
Uma fila pode ser implementada no topo de um fluxo, isso é feito implementando o enquadramento da mensagem. Por exemplo, o TCP fornece uma interface de fluxo, o HTTP é construído sobre o TCP e adiciona o enquadramento da mensagem usando a codificação de transferência Conteúdo-Comprimento / transferência em pedaços. Os usuários de uma API de conexão HTTP são impedidos de lidar com a divisão do fluxo de conexão HTTP em solicitações HTTP.
Por outro lado, geralmente, faz menos sentido implementar uma API de fluxo no topo de uma fila, pois o tratamento do enquadramento de mensagens adiciona uma sobrecarga desnecessária.