Estou procurando uma lista dos dez principais motivos pelos quais devemos nos conectar a bancos de dados remotos via serviço da web em vez de nos conectarmos diretamente ao banco de dados. Este é um debate interno agora e estou pró-serviço da web, mas perdendo o argumento. Eu tenho uma compreensão básica de serviços WCF / web, ninguém mais tem. Podemos fazer o que quisermos no futuro, mas precisamos nos ater ao que escolhermos agora.
Aqui está o que eu descobri. Não mais?
- Os serviços web WCF podem, se configurados corretamente, ser mais seguros.
- Mudanças no banco de dados só precisam ser feitas no nível de serviço (arquivo de configuração ou serviço de recompilação).
- Depois de configurados e hospedados, os serviços da web são mais fáceis de consumir.
fonte
Em minha opinião, você não deve expor automaticamente seu banco de dados como um serviço da web. Se você precisar de um serviço para expor seus dados, escreva um, mas nem todo acesso ao banco de dados deve ser feito por meio de serviços da web.
fonte
A maioria desses pontos se aplica a qualquer API formal, não especificamente aos Web Services.
fonte
Escrever um serviço da Web que simplesmente empacote chamadas para procedimentos armazenados parece ser uma abordagem equivocada para projetar um bom DAL. Mais do que provavelmente, seus procedimentos armazenados são códigos legados remanescentes de sistemas cliente-servidor mais antigos, ou seja, regras de negócios estão enterradas nos SPs. Se for esse o caso, o que você está realmente tentando fazer é criar uma bolsa de seda com a orelha de uma porca.
Além disso, você adiciona uma camada de protocolo de mensagem SOAP que adiciona um impacto de desempenho aos aplicativos da web que foram 'coagidos' a namorar esse 'porco'. Estou trabalhando em um projeto agora em que nosso novo aplicativo MVC-4 foi instruído a usar esse DAL. Temos o fardo de alterar a assinatura WebMethod e a assinatura SP sempre que uma nova história de usuário surgir, necessitando de tais alterações; que para nós, é cada sprint. Inerentes a essa abordagem de passagem estão duas camadas fortemente acopladas.
fonte
1) A dor de cabeça de manter o banco de dados é reduzida do lado dos desenvolvedores para que eles possam se concentrar apenas no desenvolvimento.
2) O serviço Web suporta a comunicação de diferentes plataformas (sistemas operacionais como windows, ios, android etc) de um método muito fácil e eficaz. por exemplo, considere uma situação em que o aplicativo Android e o aplicativo ios desejam se comunicar com um site que é baseado em java, portanto, para a comunicação de todas as três coisas, o serviço da web é a melhor solução em vez de manter três bancos de dados diferentes.
fonte
Em geral
Estou começando a usar ASP.NET Web Api e planejo fazer serviços de dados primeiro.
Recentemente, tenho me concentrado em aplicativos da Web .NET MVC com o uso da estrutura de entidade.
Recentemente, me encontrei em uma situação frustrante com um aplicativo da web MVC que estava construindo originalmente com base em procedimentos armazenados da Oracle. A versão original como Oracle 9 ou mesmo anterior que apresentava outro problema com o Visual Studio 2012 empurrando uma abordagem de fábrica de conexão mais moderna com assemblies de tempo de carregamento encontrando os arquivos dll certos para usar com base em conexões de configuração da web e nomes TNS.
As tentativas de conexão com o banco de dados falharam com mensagens de erro 'não mais suportadas'. Por curiosidade, baixei o Oracle 12c e fiz algumas conexões em nível de aplicativo que funcionaram bem com meus nomes TNS e a dll de montagem de carga e consegui trabalhar com o Oracle sem problemas.
Havia alguns serviços da web construídos que funcionavam com conexões com a versão mais antiga do Oracle. Eles foram construídos com métodos que foram mapeados especificamente para tabelas selecionadas, no entanto, para minha decepção. Eu teria que escrever meu próprio.
Disseram-me que o grupo responsável pela manutenção dos bancos de dados Oracle estaria escrevendo novos procedimentos armazenados para substituir os mais antigos que eu estava usando para abstrair a interface do cliente e as camadas de lógica de negócios.
Então, meu primeiro pensamento foi que todas as solicitações de dados comuns, como preencher lista suspensa ou preenchimento automático com dados de toda a empresa, fossem feitas por meio de serviços de dados que chamariam os procedimentos armazenados do Oracle. Por que repetir esse processo em cada aplicativo e fazer com que cada desenvolvedor tenha problemas com configuração e montagem de versão / carga e problemas de TNS?
tão....
Eu sou um desenvolvedor / analista de aplicativos e não um DBA, então minha perspectiva é a experiência com a frustração sem fim de ter que modificar constantemente os aplicativos quando as ferramentas de banco de dados evoluem.
fonte