Bom, pessoal… Eu tenho um trabalho a ser feito e queria saber qual a melhor forma. Eu possuo algum conhecimento em desenvolvimento web com ASP.NET MVC e C#, e também com Java, JSF e JPA. Recentemente foi-me passada uma tarefa, fazer um sistema de gestão e controle de gastos na construção civil. Porém, esse sistema tem que rodar na web e ter um aplicativo android.
Andei pesquisando e vi algo sobre Web API, e achei a ideia interessante. Então me veio as seguintes dúvidas:
o aplicativo pode ser apenas um browser que acessa o site em ‘modo’ mobile.
entretanto se a ideia é ter tanto um site quanto uma aplicação nativa, uma ideia é fazer o site a partir de uma interface REST ( o q simplifica muito o teu trabalho, pois vc ao inves de retornar coisas q serão renderizadas em um html, sera renderizado em um json ) e então vc tem duas opções
fazer a parte web em javascript que consome essa mesma API ( pense em React/Redux )
usar o pattern MVP ( model-view-presenter ) que vai renderizar ORA um json, ORA a pagina html conforme o uso de acordo com algum criterio. essa forma é razoavelmente comum no mundo .Net exemplo
GET /sistema/relatorio.html # retorna o relatorio web
GET /sistema/relatorio.json # retorna um json que a app android vai contruir um relatorio no celular do cara
tem vantagens e desvantagens cada abordagem. com certeza existem outras opções.
se eu pudesse escolher, eu pensaria no primeiro, aqui tem um tutorial
e vc ainda tem o React native
porém eu conheço esse mundo de leve, escute outras opiniões antes de tomar uma decisão.
e por favor, estude REST senão vc vai acabar criando uma api sobre http que pode ser bem dificil de ser util, ainda mais se vc pensar em “TELAS” e não “RECURSOS”.
uma tela vc pode fazer uma ou varias coisas. um recurso é um recurso. um usuario, uma compra, um equipamento, são todos recursos que fazem sentido no seu modelo de dados ( aqui valeria a pena vc estudar Domain Driven Design ). eu diria que o seu desafio seria o design da aplicação, mais do que a implementação. um design ruim te levará a retrabalho, a bugs, a dificuldades de implementar coisas, etc.
se vc conseguir trabalhar com testes unitarios, isso sera de grande ajuda pois se os testes forem complexos, pode ser que a modelagem esteja excessivamente complexa.
Muito obrigado pela ajuda, cara. Com certeza vou analisar cada dica que você deu e esperar mais respostas, para então poder definir o que seria mais prático pra mim. Mas assim, eu sempre programei mais em C#, então é completamente possível eu fazer uma API em C# e construir um app pra android em Java que poderia consumir essa API, ou a API necessariamente tem que ser em Java?
Desde já, valeuzão pela ajuda! Já serviu bastante.