Fórum Regra de Negócio: WebService ou Banco de Dados? #12536
03/12/2009
0
Eu estou participando de um projeto, pequeno, sem muitas regras de negócio, que uma (ou algumas, acho que no máximo 3) determinada regra de negócio precisa ser executada por todos os clientes que possuem o sistema (sistema desktop, mas vai persistir alguns dados numa base em um provedor).
O gerente sugeriu de colocar essa regra no banco por meio de stored procedures porque, segundo ele, assim que houver uma alteração na regra, faz alteração uma vez e vai valer para todo mundo. Depois ainda nessa convera, eu sugeri um WebService, que também atenderia a questão da regra de negócio em um único ponto e o acesso de vários lugares para ela.
Bem, então ai chegamos na questão de performance, e eu falei que iria pesquisar. Segundo o que consegui pesquisar, um WebService num local que não seja feito muitas requisições para aquele ponto, isto é, não concorra com outras requisições (páginas, banco, ou algo a mais que possa ter) pode ter um custo bom, caso contrário, além desse problema me parece que tem o problema da transformação da mensagem no protocolo HTTP (me corrijam se eu estiver escrevendo besteira, ok?) que aumenta este custo e até que o remoting seria mais rápido neste caso (de ter várias requisições no mesmo local).
Por outro lado, o gerente (que me disse que antes era DBA) disse que consegue garantir a performance dessas regras no banco (com tuning e sei lá mais o que).
A minha dúvida fica, como boa prática, o que seria melhor, fazer uso de WebService ou de Stored Procedure para desenvolver a regra? O WebService dá até para eu encarar, pois pelo que já estudei e li sobre, não é dificil desenvolver serviços com ele. Já o remoting prefiro não me arriscar por enquanto, já que não tenho este know-how por enquanto. E o banco, tem o conhecimento do gerente, um pouco do meu, para colocar isso como stored.
Li também em alguns lugares que essa decisão pode variar conforme o expertise do seu time, é isso mesmo?
Ah e detalhe, o gerente garantiu que o cliente vai ter a performance que ele deseja com a regra no banco, rs.. Fzer o que né, diz ele, para fechar contrato!!
Bem, fico no aguardo! Obrigado pela sua atenção!
Carlos Nogueira
Curtir tópico
+ 0Posts
04/12/2009
Luiz Maia
Gostei + 0
05/12/2009
Carlos Nogueira
Então, acho que vou optar mesmo por colocar algumas regras da aplicação como stored procedure no banco. Sim sim, é uma aplicação desktop. Na verdade o lance é assim, vai ser instalado para os clientes essa aplicação desktop, que é bem pequena e contém umas 3 regras de negócio e vai trabalhar com um banco Access (porque o banco não vai crescer muito e devida a infra dos clientes, alguns tem na máquina windows 95, outros 98, para você ter uma idéia da encrenca) local.
E ai devido a estrutura destes clientes, eles vão enviar esses dados para uma base que está na web (no provedor da empresa que trabalho) e lá vai ter que executar mais umas 3 ou 4 regras de negócio (tipo, essas regras vão checar se o id existe, alterar o status do produto (entrada ou saída) ou incluir um registro). Esse banco é usado por um outro sistema do cliente.
Então, com relação a performance, eu li em alguns lugares que, quando a bastante concorrência no local onde o web service está sendo utilizado, isto é, já existe outras requisições sendo feitas para o mesmo local onde ele está publicado, isso custa um pouco mais para ele, justamente por uma quantidade maior de requisições que ele vai ter que enfrentar naquele ponto, além da conversão da mensagem no protocolo HTTP, e essas coisas. Ah, e detalhe, nessa mesma infra dos clientes, muito das conexão são dial-up, por isso que vai ter um banco local para armazenar primeiro esses dados e depois de tempos em tempos (isso ainda preciso se tem algum jeito de fazer no .NET) vai tentar mandar essas informações para o banco na web.
Eu acho que adotar essa solução para esse cliente não terá problema né? E como você mencionou a performance no banco será maior (fora que o meu gerente para fechar contrato prometeu para o cliente que coma regra no banco, a performance será melhor e garantiu isso para ele, rsrs). O legal do web service é a facilidade para implementar (eu acho, colocar o atributo WebMethod e desenvolver os serviços) mas ai fico com receio justamente da performance. O que você acha?
Gostei + 0
06/12/2009
Luiz Maia
Gostei + 0
08/12/2009
Carlos Nogueira
Então, a preocupação é com os clientes da empresa que farão uso dessa aplicação. Pelo que o gerente me passou (e foi até o mesmo que deu idéia a respeito) a maioria dessas empresas possui windows 95 ou 98, conexão dia-up, as máquinas pelo visto já não devem ser lá aquela coisa, entende? Por isso que optamos inicialmente por Access. Se fosse o SQL Express, nossa, iria facilitar tanto minha vida, porque tô tendo uns probleminhas com Access que vou ser obrigado até abrir um chamado de suporte por causa disso, rsrs...
Quanto a performance do WebService, se no mesmo local do WebService estiver outras aplicações, como páginas de outros clientes, banco e etc, isso não pode diminuir na performance do WebService que se encontra no mesmo local de outras requisições como de outros sistemas, por exemplo?
Gostei + 0
09/12/2009
Luiz Maia
Gostei + 0
09/12/2009
Carlos Nogueira
Mais uma vez obrigado pelas explicações!
Abraços
Gostei + 0
10/12/2009
Luiz Maia
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)