Lista de requisitos para a API do cliente Desvincular do meio de comunicação. Deve funcionar para HTTP/1.0, Socket, WebSocket ou qualquer outro protocolo de preferência do cliente. Desvincular da estrutura/linguagem de dados. Deve funcionar para XML, JSON ou qualquer outra estrutura/linguagem de dados de preferência do cliente. Garantir a possibilidade de implementação, caso desejado, de interceptadores de comunicação para tratamento de erros generalizados ou qualquer outra questão que envolva intercepção das mensagens. Encapsular e rotular todos os possíveis tipos de erros que o sistema reconhece, garantindo assim que seja possível implementação diferenciada de tratamento de erros. Lembrando do comprometimento com o item 2. Ex: ConnectionErrorSystemErrorBusinessErrorTimeoutError (talvez um sub tipo de ConnectionError)SessionExpireErrorRequestRecipientNotFoundError Criar a noção de Sessão e de casos de uso instanciados disponíveis. Implementar uma forma fácil e não intrusiva de mandar e receber mensagens apesar do item 3. Implementar Uma forma de extensão através de Plugins, Ex: Plugin de persistência para manter viva a sessão atual e casos de uso ativos.Plugin de timeout para forçar alguma forma diferencial de ciclo de vida em um determinado caso de uso.Plugin de debug para monitorar toda a comunicação.