Estou usando o padrão de design PHP Codeigniter MVC
e eu tive esse projeto com algum tipo de processo empresarial específico
No meu aplicativo, lidarei com 2 APIs REST existentes:
- Trello
Tive a ideia de criar a API REST para atuar como Business Logic Layer (BBL)
que, por sua vez, acessam meus modelos diretamente para buscar os dados necessários para formular regras de negócios
e controlador com comunicação com BLL com cliente REST,
Essa abordagem é ruim para o desempenho?
É melhor criar 2 camadas de modelos, uma como DAL ( Data Access Layer ) e outra como Business Logic Layer (BLL)
php
design-patterns
mvc
rest
codeigniter
Ahmed Samy
fonte
fonte
Respostas:
O problema que vejo com sua abordagem é que você está criando uma API REST para apenas um consumidor, seus controladores, e isso é um exagero. Não basta adicionar uma camada apenas para passar dados de uma camada para outra, não faz sentido, você estará criando trabalho para si mesmo sem nenhum benefício adicional.
Uma maneira (rápida) de tornar sua API útil seria se esse fosse o único ponto de extremidade que seus controladores (ou seja, seu aplicativo) precisam. Considere isto:
De repente, sua API REST tem um propósito, e é fornecer uma interface unificada para seus vários provedores de dados. Seu aplicativo não precisa saber sobre o Google ou a API do Trello, ou qualquer outro provedor de dados que você possa usar no futuro, apenas precisa saber sobre a API REST.
Esse design, embora um pouco mais útil, ainda será um exagero se o seu aplicativo for o único consumidor. O objetivo principal da criação de uma API REST é expor uma interface disponível publicamente para o compartilhamento de seus aplicativos. E a chave aqui é a exposição, sua API REST estará disponível para o mundo e, portanto, deve ser segura. A autenticação e autorização da API não são tarefas simples, se apenas um aplicativo usa sua API, por que enfrentar todos os problemas? A menos que você queira experimentar e aprender. Se for esse o caso, vá em frente.
De qualquer forma, o desempenho não deve ser um problema. Você adicionaria uma camada extra; portanto, obviamente haverá alguma sobrecarga, mas se essa sobrecarga será significativa ou não depende inteiramente da sua implementação. Se sua API REST for o ponto final único, provavelmente será uma boa ideia também ser o único local em que o cache ocorre. E não apenas o cache do lado do servidor, uma API REST torna o cache do navegador um pouco mais fácil de explorar e, se você acertar, o desempenho geral do seu aplicativo pode aumentar, em comparação com uma abordagem não REST.
tl; dr: Não crie coisas que não tenham um propósito real (a menos que você esteja aprendendo).
fonte
Com base no seu desenho, parece que deveria haver um modelo chamado pelo seu controlador que lida com a conversa com o Google, obtendo os resultados de volta, formatando-o para o seu aplicativo e depois enviado ao controlador pronto para uso. Em outras palavras, todos os detalhes específicos do google estariam nesse modelo. o mesmo para o trello. Dessa forma, se você precisar adicionar mais APIs para consumir, manterá tudo agradável e separado.
este é um pequeno detalhe - mas lembre-se no design geral do aplicativo - você deve levar em consideração possíveis atrasos no envio / obtenção das informações do servidor da API para o servidor. em outras palavras, verifique se o aplicativo não desliga completamente se o servidor do trello estiver lento ou inativo.
As APIs precisam se preocupar com a segurança, mas não precisam necessariamente ser "públicas". muitas APIs são business to business sem nada público.
Eu li a maior parte deste livro - seu lançamento curto, ainda no início, e não há exemplos suficientes -, mas é muito atual, é todo php e o autor está criando e ensinando ativamente sobre APIs. http://shop.oreilly.com/product/0636920028291.do
o autor tem posts relacionados a php rest api em seu blog. http://www.lornajane.net/blog
e não se esqueça de ler os comentários para as postagens da API! seriamente, lhe dará uma perspectiva muito valiosa.
Sugira que você pesquise "hipermídia" e API no Google. talvez você não queira usá-lo, mas ele mostrará algumas outras técnicas para criação de API.
Acabei de ingressar em programadores - gostaria de fazer uma votação positiva se pudesse! a maioria das empresas não poderá criar aplicativos totalmente novos para consumir ou publicar APIs. portanto, apresentar as práticas recomendadas para integrar APIs em estruturas mvc existentes - isso é realmente importante.
fonte