Вы находитесь на странице: 1из 14

DESENVOLVIMENTO WEB COM

BROOK FRAMEWORK 3.0

APRESENTAO; INSTALAO; SUGESTO DE


IDEIAS; FORK; PULL REQUESTS; DOAES

Orientador: Silvio Clcio

RESUMO

Este artigo apresenta todos os passos iniciais para quem pretende conhecer,
baixar, instalar e usar o projeto Brook framework 3.0 no Lazarus 1.2.2 e Free
Pascal 2.6.4. O artigo consiste dos seguintes passos: Apresentao do projeto.
Instalao com dois cliques. Sugerindo ideias, solicitando novos recursos e
reportando bugs. Forkando o projeto. Abrindo um pull request. Fazendo uma
doao ao projeto.

PALAVRAS CHAVE: Brook 3.0. Apresentao. Instalao. Fork. Pull request.

Petrolina PE

2014
Brook EaD Desenvolvimento web com Brook framework 3.0 2

SUMRIO
APRESENTAO DO PROJETO .......................................................................................... 3
BAIXANDO O PACOTE DE INSTALAO .......................................................................... 5
INSTALAO COM DOIS CLIQUES .................................................................................... 5
SUGERINDO IDEIAS, SOLICITANDO NOVOS RECURSOS E REPORTANDO BUGS
....................................................................................................................................................... 7
FORKANDO O PROJETO ....................................................................................................... 8
ABRINDO UM PULL REQUEST ............................................................................................. 8
FAZENDO UMA DOAO AO PROJETO ........................................................................... 8
PRXIMOS PASSOS ............................................................................................................... 9
REFERNCIAS .......................................................................................................................... 9
APNDICES ............................................................................................................................. 10
APNDICE A Relatrio de estatsticas do ApacheBench para um teste realizado com
uma aplicao FCLWeb/CGI: ................................................................................................. 11
APNDICE B Relatrio de estatsticas do ApacheBench para um teste realizado com
uma aplicao Brook/CGI: ...................................................................................................... 12
APNDICE C Relatrio de estatsticas do ApacheBench para um teste realizado
com uma aplicao FCLWeb/FastCGI: ................................................................................ 13
APNDICE D Relatrio de estatsticas do ApacheBench para um teste realizado
com uma aplicao Brook/FastCGI: ...................................................................................... 14
Brook EaD Desenvolvimento web com Brook framework 3.0 3

APRESENTAO DO PROJETO

Brook nasceu a partir de um estudo sobre Object Pascal voltado para


desenvolvimento web, ou seja, compatvel com aplicativos console.
Paralelamente a tal estudo, projetos de outras linguagens tambm foram
pesquisados, como Rails (Ruby) e Slim (PHP). Aps o contato com estes dois
projetos, nasceu a ideia de roteamento e rotas, dando origem ao seu nome: ...
imagine um canal de gua com canais menores interligados nele, cada pequeno
canal com sua prpria rota, e o canal maior gerenciando o crrego de gua
assincronamente cada um; no interior da Inglaterra, eles do um nome para isso:
Brook. Hoje, um dos recursos mais poderosos da Brook o seu roteador,
fazendo jus ao que o seu nome sugere.

Com Brook, possvel criar aplicaes web sem trocar de linguagem de


programao, ou seja, sem sair do Pascal. Logo abaixo, seguem algumas
vantagens especficas do projeto:

Estrutura em trs camadas: Camada de dados (Model), camada de controle


(Controller) e camada de apresentao (View).1

Desempenho: Em um teste de performance realizado com o auxlio da


ferramenta ab ApacheBench2, no Linux Mint 16 - 64 bits, em que a pgina
testada retornava apenas a palavra testing it, foi possvel obter as seguintes
quantidade de requests por segundo em uma comparao entre uma aplicao
usando apenas FCLWeb, e outra usando Brook:

FCLWeb/CGI (detalhes no APNDICE A):

Complete requests: 1337

Brook/CGI (detalhes no APNDICE B):

Complete requests: 1303

FCLWeb/FastCGI (detalhes no APNDICE C):

Complete requests: 6832

Brook/FastCGI (detalhes no APNDICE D):

Complete requests: 6866

1
Um pouco sobre MVC: http://pt.wikipedia.org/wiki/MVC.
2
ab - Apache HTTP server benchmarking tool: http://httpd.apache.org/docs/2.2/programs/ab.html.
Brook EaD Desenvolvimento web com Brook framework 3.0 4

Ou seja, baseado nos resultados acima, possvel observar que a


performance de aplicaes Brook completamente compatvel com aplicaes
puramente em FCLWeb, mesmo sem levar em conta as diversas funcionalidades
que um framework como ela agrega aplicao.

Recursos Utilizao de vrios protocolos (HTTP, CGI, FastCGI ...) de forma


transparente, isto , pela simples troca de uma unit broker na clusula uses.

Suporte a roteamento avanado a capacidade de mapear URLs para


aes. Recurso este que torna a Brook um passo frente aos seus concorrentes.

Suporte a Mapeamento de Objetos Formulrios HTML so convertidos


automaticamente para objetos Pascal, com a vantagem de usar suas
propriedades com dados primitivos ao invs de converses, por exemplo:

Sem mapeamento de objetos (Brook 2.*):

procedure TPersonAction.Post;
begin
Write('ID: %d, Name: %s', [Fields['id'].AsInt64, Fields['name'].AsString]);
end;
Cdigo 1 - Action da Brook 2.*

Com mapeamento de objetos (Brook 3.0):

procedure TPersonAction.Post;
begin
Write('ID: %d, Name: %s', [Entity.Id, Entity.Name]);
end;
Cdigo 2 - Action da Brook 3.0

Plug-ins Brook contm uma aprecivel quantidade de plug-ins e projetos


relacionados que aumentam sua produtividade. Plug-ins como JTemplate,
dOPF, RUtils, XMailer, entre outros, so encontrados facilmente aqui:

https://github.com/silvioprog?tab=repositories.

E claro, h vrios outros recursos (Middleware, Constraints, Actions com


suporte a Generics etc.) na Brook, que sero abordados com nfase em outros
artigos, no decorrer do curso.

Em suma, o projeto tambm est em constante evoluo, recebendo


atualizaes regularmente tanto dos seus idealizadores3, quanto de

3
Arquivo com o nome de alguns idealizadores do projeto Brook:
https://github.com/silvioprog/brookframework/blob/master/CONTRIBUTORS.txt.
Brook EaD Desenvolvimento web com Brook framework 3.0 5

desenvolvedores de todo o mundo, que voluntariamente contribuem com o


projeto.

BAIXANDO O PACOTE DE INSTALAO

Como na maioria dos projetos, o primeiro passo a ser feito baixar o


pacote de instalao da ltima verso lanada. Quando este artigo foi escrito, a
verso mais recente da Brook era a 3.0, disponvel no seguinte link:

https://github.com/silvioprog/brookframework/releases/tag/v3.0.0.

Com duas opes para download:

1. Source code (zip);


2. Source code (tar.gz).

A opo usada neste artigo foi a Source code (zip), baixando o arquivo de
nome brookframework-3.0.0.zip.

INSTALAO COM DOIS CLIQUES

Com o arquivo brookframework-3.0.0.zip em mos, basta descompact-


lo, salvando todos os seus arquivos em alguma pasta no sistema, como por
exemplo: C:\repository\framework\brookframework-3.0.0, e, logo em seguida,
realizar os seguintes passos:

1. Abrir o arquivo C:\repository\framework\brookframework-3.0.0\packages\


brookex.lpk;
2. Na janela Package BrookEX, clicar no boto Use >>, menu Install.

A Figura 1 mostra a janela Package BrookEX, com as opes propostas


acima:

Figura 1 - Package BrookEX


Brook EaD Desenvolvimento web com Brook framework 3.0 6

Para prosseguir, a instalao requer duas confirmaes. A primeira na


tela Automatically installed packages que, conforme Figura 2, informa quais
pacotes sero instalados, automaticamente:

Figura 2 - Automatically installed packages

A segunda tela, com a pergunta Rebuild Lazarus?, recebe a confirmao


para recompilar a IDE Lazarus, necessria para a instalao dos experts Brook,
abordados a seguir.

Aps alguns instantes, quando a IDE retornar de sua recompilao,


possvel verificar se a instalao da Brook ocorreu com sucesso checando os
seus experts, que so instalados junto ao pacote, e, logo em seguida, disponveis
no menu File | New ... > Brook framework, conforme ilustra a Figura 3:

Figura 3 - Expert Brook


Brook EaD Desenvolvimento web com Brook framework 3.0 7

SUGERINDO IDEIAS, SOLICITANDO NOVOS RECURSOS E REPORTANDO


BUGS

O melhor do cdigo aberto a sua possibilidade de evoluo. Com a


Brook no poderia ser diferente, possvel enviar novas ideias ao projeto,
solicitar a implementao de novos recursos, bem como relatar problemas. Para
qualquer uma destas opes, o local indicado para faz-las via pgina de
issues, no repositrio do projeto, em:

https://github.com/silvioprog/brookframework/issues.

Para abrir um issue, necessrio o login no site Github, e, para aqueles


que ainda no o possui, recomendvel criar uma conta gratuitamente, em:

https://github.com/join.

Estando previamente logado no site Github, possvel abrir um issue.


Conforme Figura 4, este seria um modelo de issue para um pedido de
implementao de novo recurso no projeto:

Figura 4 - New issue

Substituindo Your title e Your feature request ... pelo ttulo e pedido de
recurso, respectivamente, logo em seguida, fazendo a confirmao, via boto
Submit new issue.
Brook EaD Desenvolvimento web com Brook framework 3.0 8

FORKANDO O PROJETO

O site Github permite realizar fork de repositrio, isto , copiar um


repositrio inteiro tornando-se dono dele para uma conta Github pessoal, no
entanto, mantendo intacto o cdigo no repositrio original. A vantagem disso
que, uma vez feito o fork, possvel modificar o cdigo (corrigindo bugs, por
exemplo), ento, caso sejam alteraes teis para outros desenvolvedores,
envi-las para o projeto original, fazendo um pull request, que ser explicado
mais adiante. A Figura 5 mostra o status de forks realizados no projeto Brook,
onde alguns deles j enviaram alteraes para o cdigo original:

Figura 5 - Status de forks da Brook

ABRINDO UM PULL REQUEST

Atravs de um pull request, possvel fazer a solicitao de integrao


das alteraes feitas em um fork para o projeto original. O link a seguir mostra
uma correo aplicada na Brook por meio de um pull request:

https://github.com/silvioprog/brookframework/pull/25.

O pedido mostrado acima foi a correo de ortografia de algumas linhas


no arquivo README.txt. Pull requests podem ser feitos ao projeto atravs do link
abaixo:

https://github.com/silvioprog/brookframework/pulls.

FAZENDO UMA DOAO AO PROJETO

Projetos open source a exemplo da Brook sobrevivem de contribuies


em cdigo ou doaes em dinheiro. Portanto, queles interessados em realizar
uma doao em dinheiro, possvel faz-la via PayPal, atravs do boto Donate,
no rodap da home page do projeto, conforme ilustra a Figura 6:

Figura 6 - Boto Donate


Brook EaD Desenvolvimento web com Brook framework 3.0 9

A pgina no especifica valores para doao, deste modo, possvel doar


qualquer quantia, sendo o dinheiro recebido investido diretamente no projeto.

PRXIMOS PASSOS

Neste artigo, dentre outras coisas, aprendemos a baixar e instalar a Brook.


No prximo artigo, entenderemos o funcionamento de uma aplicao Brook e
faremos o nosso primeiro Hello world. Logo em seguida, usaremos os mtodos
Write e Render para escrever textos ou renderizar arquivos na tela. Aps esses
primeiros exemplos prticos, voc entender que, sem um framework completo
como a Brook, a vida do programador web com Pascal seria bastante difcil.

REFERNCIAS

[1] ApacheBench & HTTPerf. G-WAN. Disponvel em jun. 2014 em:


http://gwan.com/en_apachebench_httperf.html.

[2] Contribuindo em projetos open source com o Github. Tableless. Disponvel em jun.
2014 em:
http://tableless.com.br/contribuindo-em-projetos-open-source-com-o-github.

[3] Padres de projeto: O modelo MVC - Model View Controller. Macoratti. Disponvel
em jun. 2014 em:
http://www.macoratti.net/vbn_mvc.htm.
Brook EaD Desenvolvimento web com Brook framework 3.0 10

APNDICES
Brook EaD Desenvolvimento web com Brook framework 3.0 11

APNDICE A Relatrio de estatsticas do ApacheBench para um teste


realizado com uma aplicao FCLWeb/CGI:

$ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/project1.cgi"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)


Finished 1317 requests

Server Software: Apache/2.4.6


Server Hostname: localhost
Server Port: 80

Document Path: /cgi-bin/project1.cgi


Document Length: 11 bytes

Concurrency Level: 90
Time taken for tests: 1.001 seconds
Complete requests: 1317
Failed requests: 0
Write errors: 0
Keep-Alive requests: 1307
Total transferred: 260333 bytes
HTML transferred: 14487 bytes
Requests per second: 1315.63 [#/sec] (mean)
Time per request: 68.408 [ms] (mean)
Time per request: 0.760 [ms] (mean, across all concurrent requests)
Transfer rate: 253.97 [Kbytes/sec] received

Connection Times (ms)


min mean[+/-sd] median max
Connect: 0 0 0.6 0 6
Processing: 1 10 62.3 2 923
Waiting: 1 10 62.3 2 923
Total: 1 10 62.8 2 929

Percentage of the requests served within a certain time (ms)


50% 2
66% 2
75% 3
80% 3
90% 3
95% 49
98% 50
99% 51
100% 929 (longest request)
Cdigo 3 - ApacheBench: FCLWeb/CGI
Brook EaD Desenvolvimento web com Brook framework 3.0 12

APNDICE B Relatrio de estatsticas do ApacheBench para um teste


realizado com uma aplicao Brook/CGI:

$ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/cgi1.bf"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)


Finished 1303 requests

Server Software: Apache/2.4.6


Server Hostname: localhost
Server Port: 80

Document Path: /cgi-bin/cgi1.bf


Document Length: 11 bytes

Concurrency Level: 90
Time taken for tests: 1.001 seconds
Complete requests: 1303
Failed requests: 0
Write errors: 0
Keep-Alive requests: 1293
Total transferred: 334442 bytes
HTML transferred: 14333 bytes
Requests per second: 1302.15 [#/sec] (mean)
Time per request: 69.116 [ms] (mean)
Time per request: 0.768 [ms] (mean, across all concurrent requests)
Transfer rate: 326.39 [Kbytes/sec] received

Connection Times (ms)


min mean[+/-sd] median max
Connect: 0 0 1.0 0 8
Processing: 1 15 75.1 3 977
Waiting: 1 15 75.1 3 977
Total: 1 15 75.8 3 986

Percentage of the requests served within a certain time (ms)


50% 3
66% 3
75% 4
80% 4
90% 49
95% 50
98% 52
99% 53
100% 986 (longest request)
Cdigo 4 - ApacheBench: Brook/CGI
Brook EaD Desenvolvimento web com Brook framework 3.0 13

APNDICE C Relatrio de estatsticas do ApacheBench para um teste


realizado com uma aplicao FCLWeb/FastCGI:

$ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/project1.fcgi"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)


Completed 5000 requests
Finished 6832 requests

Server Software: Apache/2.4.6


Server Hostname: localhost
Server Port: 80

Document Path: /cgi-bin/project1.fcgi


Document Length: 11 bytes

Concurrency Level: 90
Time taken for tests: 1.000 seconds
Complete requests: 6832
Failed requests: 0
Write errors: 0
Keep-Alive requests: 6770
Total transferred: 1350019 bytes
HTML transferred: 75152 bytes
Requests per second: 6831.82 [#/sec] (mean)
Time per request: 13.174 [ms] (mean)
Time per request: 0.146 [ms] (mean, across all concurrent requests)
Transfer rate: 1318.34 [Kbytes/sec] received

Connection Times (ms)


min mean[+/-sd] median max
Connect: 0 0 0.7 0 8
Processing: 0 6 56.7 1 954
Waiting: 0 6 56.7 1 954
Total: 0 7 57.3 1 961

Percentage of the requests served within a certain time (ms)


50% 1
66% 2
75% 2
80% 2
90% 3
95% 3
98% 4
99% 13
100% 961 (longest request)
Cdigo 5 - ApacheBench: FCLWeb/FastCGI
Brook EaD Desenvolvimento web com Brook framework 3.0 14

APNDICE D Relatrio de estatsticas do ApacheBench para um teste


realizado com uma aplicao Brook/FastCGI:

$ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/cgi1.fbf"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)


Completed 5000 requests
Finished 6866 requests

Server Software: Apache/2.4.6


Server Hostname: localhost
Server Port: 80

Document Path: /cgi-bin/cgi1.fbf


Document Length: 11 bytes

Concurrency Level: 90
Time taken for tests: 1.000 seconds
Complete requests: 6866
Failed requests: 0
Write errors: 0
Keep-Alive requests: 6803
Total transferred: 1761801 bytes
HTML transferred: 75526 bytes
Requests per second: 6865.67 [#/sec] (mean)
Time per request: 13.109 [ms] (mean)
Time per request: 0.146 [ms] (mean, across all concurrent requests)
Transfer rate: 1720.43 [Kbytes/sec] received

Connection Times (ms)


min mean[+/-sd] median max
Connect: 0 0 0.7 0 7
Processing: 0 7 57.9 1 954
Waiting: 0 7 57.9 1 954
Total: 0 7 58.5 1 961

Percentage of the requests served within a certain time (ms)


50% 1
66% 2
75% 2
80% 2
90% 3
95% 3
98% 4
99% 12
100% 961 (longest request)
Cdigo 6 - ApacheBench: Brook/FastCGI

Вам также может понравиться