Aplicativos web em C++ usando o Tufão
Quando eu comento sobre desenvolvimento web em C++ a alguns programadores, eles demonstram uma falta de fé perceptível na ideia, enquanto outros ficam curiosos e começam a discutir como as peculiaridades da linguagem afetam o seu uso na área. Inspirado pela framework Node.js, desenvolvi o Tufão.
Introdução
Tufão é o projeto que criei, com o objetivo inicial de ser um port do Node.js para C++. Para aqueles que não sabem, Node.js é uma API assíncrona para desenvolver servidores web em JavaScript. Uma das coisas legais sobre o design da API é que mesmo usando uma abstração na qual você escreve pouco código, é possível tirar proveito da propriedades de baixo nível do HTTP. Esse design despertou minha atenção.
Para suportar a API assíncrona do Node.js, desenvolvi o projeto em cima do Qt. Dessa forma reutilizo um sistema de loops orientado a eventos (necessário para suportar a característica assíncrona do Node.js) com suporte a uma abstração de alto nível (Signals & Slots) e tenho acesso a implementações comuns para várias plataformas (como geração de UUIDs, por exemplo).
Como disse anteriormente, o objetivo inicial do projeto era ser um port do Node.js, mas esse não é o único objetivo e o Tufão agrega muitas outras facilidades que não estão presentes na API "núcleo"/"padrão" do Node.js, como suporte a WebSocket e um roteador de requisições.
Antes de começar a explodir sua mente com informações, você precisa das ferramentas instaladas e configuradas corretamente no seu sistema, o primeiro passo. Existem vários "primeiro passo", e o que você vai utilizar depende da sua plataforma. Então apenas pule as seções que não lhe interessam.
Independente de qual seja a sua plataforma, ao menos acesse a página do projeto:
Onde você pode encontrar downloads, código-fonte e outras informações.
# yaourt -S tufao tufao-doc tufao-plugin
NOTA: A instalação do tufao-plugin é um processo lento, pois o download e a compilação do QtCreator é necessária.
Os comandos para instalar o Tufão são, normalmente:
# qmake
# make install
Os comandos abaixo habilitam que você compile projetos em modo debug:
# qmake CONFIG=debug
# make install
Agora a biblioteca Tufão está instalada, mas para tirar maior proveito, além da biblioteca, você deveria instalar as ferramentas que se encontram na pasta tools. Dentro dessa pasta você encontrará um editor de rotas para o servidor de plugins do Tufão e um plugin para o QtCreator. O editor de rotas é um projeto comum baseado em qmake, que não é difícil de instalar:
# qmake
# make install
Já o plugin para QtCreator exige alguns passos adicionais. Primeiro, baixe o código-fonte do QtCreator 2.5. Você precisará extraí-lo em alguma pasta e então compilá-lo. Você deverá exportar a pasta que contém o código-fonte na variável de ambiente QTC_SOURCE e a pasta que contém o build na variável QTC_BUILD. Após isso, execute os tradicionais passos:
# qmake
# make install
O plugin será instalado na pasta "${QTC_BUILD}/lib/qtcreator/plugins/TufaoTeam".
Para suportar a API assíncrona do Node.js, desenvolvi o projeto em cima do Qt. Dessa forma reutilizo um sistema de loops orientado a eventos (necessário para suportar a característica assíncrona do Node.js) com suporte a uma abstração de alto nível (Signals & Slots) e tenho acesso a implementações comuns para várias plataformas (como geração de UUIDs, por exemplo).
Como disse anteriormente, o objetivo inicial do projeto era ser um port do Node.js, mas esse não é o único objetivo e o Tufão agrega muitas outras facilidades que não estão presentes na API "núcleo"/"padrão" do Node.js, como suporte a WebSocket e um roteador de requisições.
Antes de começar a explodir sua mente com informações, você precisa das ferramentas instaladas e configuradas corretamente no seu sistema, o primeiro passo. Existem vários "primeiro passo", e o que você vai utilizar depende da sua plataforma. Então apenas pule as seções que não lhe interessam.
Independente de qual seja a sua plataforma, ao menos acesse a página do projeto:
Onde você pode encontrar downloads, código-fonte e outras informações.
Instalação no ArchLinux
Há um pacote disponível no AUR, então a instalação é bem fácil. Caso você tenha o yaourt instalado, por exemplo, só precisa executar o seguinte comando para instalar o Tufão, a documentação do Tufão, e o plugin para QtCreator:# yaourt -S tufao tufao-doc tufao-plugin
NOTA: A instalação do tufao-plugin é um processo lento, pois o download e a compilação do QtCreator é necessária.
Instalação no Windows, versão MSVC2010
Com o Qt (versão MSVC) instalado, baixe e execute o arquivo.Instalação genérica (compilando)
Caso não haja um build para sua plataforma, você terá que se contentar com o modo de instalação mais amplo. Você precisa saber como utilizar a ferramenta qmake para seguir as instruções. Para começar, baixe e extraia o código-fonte do Tufão:Os comandos para instalar o Tufão são, normalmente:
# qmake
# make install
Os comandos abaixo habilitam que você compile projetos em modo debug:
# qmake CONFIG=debug
# make install
Agora a biblioteca Tufão está instalada, mas para tirar maior proveito, além da biblioteca, você deveria instalar as ferramentas que se encontram na pasta tools. Dentro dessa pasta você encontrará um editor de rotas para o servidor de plugins do Tufão e um plugin para o QtCreator. O editor de rotas é um projeto comum baseado em qmake, que não é difícil de instalar:
# qmake
# make install

# qmake
# make install
O plugin será instalado na pasta "${QTC_BUILD}/lib/qtcreator/plugins/TufaoTeam".
Você podia aproveitar a infraestrutura de outro servidor web ao invés de fazer tudo do zero, por exemplo o apache, modificar o processo de construção para construir um módulo do apache ao invés de um servidor standalone. Talvez um protocolo mais agnóstico como FastCGI seja ainda melhor.
De qualquer maneira, muito legal!