Arquitetura do Sistema - Execução de script remoto

Ola,
Estou querendo fazer uma aplicação que executa scripts remotamente. O usuário poderia criar o script (provavelmente em LUA) e depois armazena-lo no servidor. Depois ele poderia executar esse script através de uma API, como um Webservice por exemplo.

Eu preciso de alta perfomance para executar esse script, por isso a escolha de LUA. Alguem tem outra sugestao?

Por eu precisar de perfomance, estava pensando se o Webservice é a melhor solução. Talvez eu pudesse criar um serviço do Windows TCP/IP que receberia a requisição dos usuarios. è importante ressaltar que teria varios usuarios utilizando ao mesmo tempo, logo tenho problema de concorrencia. Alguem pode opinar?

Os scripts poderao realizar consultas em um Banco de dados. Para aumentar a perfomance teria que usar um pool de conexões correto?

Para o webservice, se realmente for a escolha, pensei em utilizar C++ devido ao desempenho ou java mesmo.

Poderia opinar e me dar uma ajudar nessas escolhas?

Abraços

[quote=pedrorjbr]Ola,
Estou querendo fazer uma aplicação que executa scripts remotamente. O usuário poderia criar o script (provavelmente em LUA) e depois armazena-lo no servidor. Depois ele poderia executar esse script através de uma API, como um Webservice por exemplo.

Eu preciso de alta perfomance para executar esse script, por isso a escolha de LUA. Alguem tem outra sugestao?

Por eu precisar de perfomance, estava pensando se o Webservice é a melhor solução. Talvez eu pudesse criar um serviço do Windows TCP/IP que receberia a requisição dos usuarios. è importante ressaltar que teria varios usuarios utilizando ao mesmo tempo, logo tenho problema de concorrencia. Alguem pode opinar?

Os scripts poderao realizar consultas em um Banco de dados. Para aumentar a perfomance teria que usar um pool de conexões correto?

Para o webservice, se realmente for a escolha, pensei em utilizar C++ devido ao desempenho ou java mesmo.

Poderia opinar e me dar uma ajudar nessas escolhas?

Abraços[/quote]

Pedro, pelo que você está dizendo me parece que vc precisa de uma forma de comunicação entre duas linguagem distintas. Verifique se a linguagem lua possue suporte a algum middleware como corba. Tudo isso já estaria implementado e a unica coisa que vc teria que fazer é o re-uso. Falando da concorrencia vc vai ter que estudar essa concorrencia e ver uma solução para o caso. Fazendo uma chamada de método vc vai conseguir programar normalmente em lua e retornar dados a linguagem java ou c++ (como preferir).

Sobre a dúvida dos pools, para aumentar a performance o ideal seria vc ter esse banco de dados na mesma rede local onde está rodando a aplicação LUA… ai sim, poderia usar o pool sem problemas.

Por sorte estou com um livro de sistemas distribuidos aqui na minha mesa que afirma o seguinte: CORBA foi projetado para ser eficiente, eh binario enquanto xml eh textual. em um estudo realizado comparando corba e webservices eles descobriram que as mensagens de requisicao soap sao 14 vezes maior que as equivalentes em corba e que uma requisicao soap demora 882 vezes mais que uma invocacao corba equivalente.

mas vai do seu caso… se precisar disponibilizar servicos publicos… teria q ser webservices mesmo

Entao. Não posso utilizar invocação remota de objetos por problemas de permissão. Entao acredito que arquitetura com DCOM, Corba, não podem ser utilizadas.

A opção seria criar um servico TCP/IP que receberia as requisiçoes e executar os scripts ou utilizar o Webservice.

Criar um serviço demandaria tempo e teria que implementar questoes como LOGGING e outras coisas. Com o webservice não tenho esse problema porém provavelmente é mais lento.

Entao através de uma app. cliente o usuário escolheria o script que quer executar e a app. enviaria uma requisição ao servidor que executaria aquele script.

A aplicação cliente pode ser em qualquer linguagem o webservice pensei em C++ e os scripts seriam em LUA.

[quote=pedrorjbr]Entao. Não posso utilizar invocação remota de objetos por problemas de permissão. Entao acredito que arquitetura com DCOM, Corba, não podem ser utilizadas.

A opção seria criar um servico TCP/IP que receberia as requisiçoes e executar os scripts ou utilizar o Webservice.

Criar um serviço demandaria tempo e teria que implementar questoes como LOGGING e outras coisas. Com o webservice não tenho esse problema porém provavelmente é mais lento.

Entao através de uma app. cliente o usuário escolheria o script que quer executar e a app. enviaria uma requisição ao servidor que executaria aquele script.

A aplicação cliente pode ser em qualquer linguagem o webservice pensei em C++ e os scripts seriam em LUA.

[/quote]

mas quando ele executa vc precisa retornar dados também?

Sim sim!

Preciso sim! Ele executa uma regra de negocio. Por exemplo, um script em LUA que faça a consulta no Serasa e informe ao client qual a situação daquele CPF.

Então haverá retorno de dados sim.

E obrigado pela ajuda.

acho que a melhor solução seria webservices mesmo

Alguem com mais opiniões?

Abs

Vc nao tem permissão na sua rede para utilizar CORBA, mas teria para criar o seu proprio serviço de TCP/IP?
Outra coisa, em se tratando de escalabilidade de sistemas distribuídos o processamento em si é o último dos gargalos. Destarte, LUA e C++ para aumentar performance não são a solução para o teu problema.

Um artigo bem interessante:
http://www2002.org/CDROM/alternate/395/

Me disseram que sim. Tenho permissão para criar um TCP/IP mas nao posso instaciar objetos remotos…

Bom de uma maneira ou de outra terei que escolher uma linguagem para os scripts. Podendo escolher a mais veloz fico com LUA.

Pensei em Python tbm…