Tufão: Framework para desenvolvimento web em C++
Enviado por Vinícius dos Santos Oliveira (vini·ipsmakerΘgmail·com):
Atualmente o Tufão possui as seguintes funcionalidades: * Servidor standalone de alta performance (usa o mesmo parser HTTP que o Node.js) * Suporte a várias plataformas (escrito completamente em Qt) * Suporta funcionalidades modernas do protocolo HTTP * Suporte a HTTPS * Muitos testes automatizados que cobrem uma grande variedade de possibilidades * Suporte a timeout
Após baixar o processo de instalação é bem simples e está documentado no arquivo README e na página inicial do projeto. Convido todos os desenvolvedores a testarem o Tufão: [code.google.com/…]” [referência: vinipsmaker.wordpress.com]
Parabéns! Continue.
Não sabia que existia desenvolvimento web com C++.
Allan Taborda dos Santos, o Apache é escrito em C, :P
Ótimo trabalho!
O Apache é escrito em C, mas não é uma aplicação web.
É possível fazer aplicações web com C++ usando FastCGI, como neste pequeno exemplo
http://imasters.com.br/artigo/16167/programacao/c_na_web_com_fastcgi_e_nginx/
mas existem até alguns toolkits C++ para desenvolmento web de forma mais prática, como o Wt
http://www.webtoolkit.eu/wt
(vejam os exemplos para ter uma idéia do que esse toolkit pode fazer…)
Legal, interessante, mas fora a performance qual a vantagem de escrever uma aplicação web em c++? Só por dúvida mesmo.
Manoel Pinho
Bem legal esse projeto. Bom pra saber que existe vida na web além das linguagens de script e java.
Desenvolvimento web para freepascal também anda recebendo atenção dos desenvolvedores da linguagem. Apesar de ter muito para melhorar, já é bem rápido de criar algo como (fast)cgi e até módulos do apache.
@Hell:
Primeiramente, _desempenho_ não é *apenas* uma vantagem, pois é uma necessidade crescente perante a aplicações inovadores, que enfrentam o desafio de servir cada vez mais requisições por segundo/cliente. E C++ se destaca muito bem nesse cenário, visto que sua linguagem-base tem 2 objetivos principais (portabilidade e desempenho) e C++ adiciona poder de abstração sem gargalo desnecessário em cima disso. Qualquer linguagem nova que tente objetivar desempenho e poder de abstração vai tender a C++ ou algo muito próximo. E com o padrão de C++ do ano passado, C++ torna-se ainda melhor.
Mas, deixando de lado minha visão e respondendo a sua pergunta, uma das vantagens de escrever aplicações web em C++ seria sua integração com bibliotecas já existentes para a linguagem.
Há linguagens, por exemplo, que são ditas “adequadas a web”, mas que na verdade não passam de linguagens que “só servem para web”. C++ é uma linguagem que possui suporte a muitos paradigmas de programação e a pergunta seria “por que não”. Seu único problema era a falta de uma boa framework para desenvolvimento web e é justamente esse buraco que eu estou tentando corrigir.
Pense em aplicações web inovadoras que sejam *um pouco* diferentes do convencional, aplicações da nova geração da web. Como um exemplo, pensemos em uma aplicação multimídia. O principal ponto de uma aplicação multimídia é seu suporte a uma vasta quantidade de codecs, que é justamente o que não falta em C e C++. E com os recentes padrões da web (que está perdendo cada vez mais a dependência de ferramentas extras, como o Flash Player, por exemplo), embutir o processamento dessas tarefas no servidor torna-se algo natural.
O caso anterior foi somente um exemplo e cada caso necessitaria de uma nova discussão que apenas tornaria minha respota confusa.
Eu não sei se entendi, e não sei se o pessoal entendeu também. O que vocês entendem por “Aplicação Web”? Pelo que eu vi, esse Node.js e o Tufão são servidores Web, isto é, eles esperam por requisições HTTP e retornam alguma coisa. O Apache faz exatamente isso.
Ian, o Apache é só um servidor Web, sem nenhum módulo extra, tu não consegue desenvolver em Javascript (do lado do servidor) com ele. O NodeJS é um servidor web (HTTP) e contém um engine Javascript grudado, que te permite escrever aplicações (do lado servidor) em javascript.
Ian Liu, vc é que não entendeu. O apache “retorna alguma coisa” por meio de uma aplicaão ou móduloexterno, um interpretaqdor de linguagem via cgi ou fcgi. O node é um interpretador javascript q permite q vc implemente um servidor, que, além de receber e responder requisições, interpreta-as com alguma linguagem.
Webtoolkit, tntnet, thefrogframework, etc. são frameworks para desenvolvimento de aplicações web que implementam um servidor também, mas processam as requisições por meio de uma linguagem de programação (c++, no caso). O apache httpd pode ser usado como servidor de aplicações (odeio aquelas parafernalhas do java, glassfish, etc.), mas ele é burro e não consegue, por si próprio, interpretar as requisições com uma linguagem de programação, somente com coisas externas (perl, php, cgi, etc.).
Ou seja, um framework como descrito no texto permite criar aplicações que instanciam servidores web, e não somente criar servidores web que rodam aplicações, como no caso do apache.
E quem disse que não dá pra desenvolver pra web com c++? O difícil é achar um host compartilhado onde hospedar a aplicação. Mas é algo extremamente viável. Quem conhece mais ou menos sabe que qualquer coisa capaz de manipular socket e que implemente o protocolo http pode ser usado para criar aplicações web.
Inclusive o netcat!
Tenchi
“O difícil é achar um host compartilhado onde hospedar a aplicação.”
Nem tanto, tem bastante que aceita fastcgi. Mesmo em planos bem fuleiros.
“Quem conhece mais ou menos sabe que qualquer coisa capaz de manipular socket e que implemente o protocolo http pode ser usado para criar aplicações web.”
Isso é efeito de estudar frameworks sem entender o funcionamento. A pessoa se perde em tantos objetos, xmls e serviços de um JBoss da vida.
Gostei muito da sua ideia, vinipsmaker. Quando se desenvolve aplicações web usando FastCGI, o gargalo acaba sendo justamente o I/O e não a CPU (que é justamente o ponto no qual o C++ beneficia). Com o seu framework, não existe mais gargalo de I/O (aproveitando as ideias do node) nem de CPU.