Lista de requisitos para a API do cliente

  1. Desvincular do meio de comunicação. Deve funcionar para HTTP/1.0SocketWebSocket ou qualquer outro protocolo de preferência do cliente.
  2. Desvincular da estrutura/linguagem de dados. Deve funcionar para XMLJSON ou qualquer outra estrutura/linguagem de dados de preferência do cliente.
  3. 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.
  4. 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:
    ConnectionError
    SystemError
    BusinessError
    TimeoutError (talvez um sub tipo de ConnectionError)
    SessionExpireError
    RequestRecipientNotFoundError
  5. Criar a noção de Sessão e de casos de uso instanciados disponíveis.
  6. Implementar uma forma fácil e não intrusiva de mandar e receber mensagens apesar do item 3.
  7. 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.