“É
POSSÍVEL UMA APLICAÇÃO WEB ATUALIZAR UMA BASE DE DADOS NO SERVIDOR USANDO JAVA
SCRIPT?”
por Pedro Francisco Pereira,
agradecimentos especiais a Humberto Moura e
Julien Nascimento.
Sim... e não!
Se você não
sabe a resposta a esta pergunta, não se sinta envergonhado. Eu lancei esta questão na minha rede no
Facebook – que inclui desenvolvedores experientes – e de todas as respostas que
obtive, só uma indicava o caminho correto.
Até mesmo
discussões sobre este tema no Stack Overflow indicavam que “você precisa de uma
linguagem server side como PHP, Ruby,
Python, ...”.
Curioso? Bom, então vou logo dizendo que a resposta a “É
possível uma aplicação Web atualizar uma base de dados no servidor usando Java
Script?” é “sim”... e “não”! J
“Sim”
porque é possível usar Java Script para acessar bases de dados em um servidor.
E “não”
porque não se pode fazer isso usando o mesmo código que roda no cliente.
Quando “parece” que o Java
Script no Cliente está acessando um banco de dados no Servidor
Há pelo
menos uma “gambiarra” que pode ser feita quando se está usando um ambiente
Microsoft – Windows e Internet Explorer:
instanciar controles ActiveX no Java Script cliente para conectar a um
banco de dados no servidor.
Exemplo de
código encontrado no Stack Overflow
(em http://pt.stackoverflow.com/questions/29549/obter-conex%C3%A3o-com-banco-de-dados-em-html-e-js
, créditos ao meu amigo Humberto Moura por encontrar essa thread! Valeu, Humberto!)
var connection = new ActiveXObject("ADODB.Connection") ;
var connectionstring="Data
Source=<server>;Initial Catalog=<catalog>;User
ID=<user>;Password=<password>;Provider=SQLOLEDB";
connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");
rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
document.write(rs.fields(1));
rs.movenext;
}
rs.close;
connection.close;
Esta solução é técnicamente pobre, uma vez que
exige um sistema operacional e um browser específicos[1].
Em têrmos
de segurança, é uma completa loucura,
uma vez que o usuário e senha do banco de dados estarão visíveis no script!
Mas o pior,
em relação à nossa pergunta, é que não é
o Java Script que estará acessando a base de dados no servidor, é o
controle ActiveX!
Vale como
curiosidade, como solução real... vamos descartá-la!
É o browser que interpreta
o código Java Script nas Web Pages?
(Muito prazer, sou o Java Script Engine!)
Bom, eu não
sei pra vocês, mas pra mim quando eu falo “Java Script” eu penso imediatamente
no código que é executado quando o usuário interage com controles em uma Web Page
– quando clica um botão, quando seleciona um controle, etc.
E qual é o
software que “executa” as Web Pages?
Ora, o browser, é claro! É ele
quem exibe o HTML, aplica a formatação definida nos CSS, e executa o código
Java Script[2].
Mas será
realmente “o browser”? Serão os browsers
construídos de uma forma monolítica?
Terão os arquitetos dos browsers desprezado os princípios de “alta
coesão” e “baixo acoplamento”? Basta que
a pergunta nos ocorra para que saibamos que não! O funcionamento do browser certamente é
implementado em componentes – e estes componentes devem ser reutilizáveis, de
acordo com as normas fundamentais da Engenharia de Software!
Na verdade
eu, pessoalmente, já sabia disto, pois estava a par de que as Metro Apps do
Windows 8 e dos tablets Microsoft são construídas usando Java Script[3]
– e rodam num “desktop” e não em um browser!
Eu apenas não estava usando a
informação no contexto desta pergunta! Certamente
a Microsoft não iria “reinventar a roda” para fazer suas aplicações desktop
baseadas em Java Script funcionar[4]!
O
componente dos browsers que executa o código Java Script é o Java Script Engine. Diferentes browsers tem diferentes engines[5]: SpiderMonkey é o do Firefox; V8 é o do
Chrome; JavaScriptCore é o do Safari; Chakra é o do IE...
E se o Java Script Engine é um componente
independente do browser e reutilizável... não poderia ser uado em um servidor? Certamente que sim!
Java Script no Cliente...
e Java Script no Servidor!
Esta é a
resposta à nossa pergunta “É possível uma aplicação eb atualizar uma base de
dados no servidor usando Java Script”! Sim,
é a resposta – com a ressalva de que o acesso a banco de dados não está no Java
Script que vai para a máquina cliente, no Java Script que faz a web páge “funcionar”,
e sim em um Java Script no lado servidor,
gerenciado por uma outra instância do Java Script Engine!
“Hi, I’m a Node of Mean Software!” J
E assim
chegamos a frameworks para construir aplicações Web usando Java Script tanto no
lado cliente quanto no lado servidor!
Node.js é um destes frameworks – obrigado, Julien
Nascimento, por me colocar no rumo
certo!
Node.js é
open source e multi-plataforma, e é suportado pela Node.js Foundation, um
projeto colaborativo da Linux Foundation.
Mais
detalhes podem ser encontrados na Wikipedia em https://en.wikipedia.org/wiki/Node.js
.
Mean ( https://en.wikipedia.org/wiki/MEAN_(software_bundle)
) é um software stack (conjunto de components
que criam uma plataforma completa) baseado em Node.js, Angular.js, Express.js e
Mongo.DB. Citando literalmente a
Wikipedia “because all components of the MEAN stack support programs written in
Java Script, MEAN applications can be written in one language for both server-side
and client-side execution environments”.
QED! J
Observação - Mongo.DB
Mongo.DB é um
banco de dados orientado a documentos semelhantes a JSON, com esquemas dinâmicos
– portanto, um banco de dados “não-SQL”.
Se quiser
saber mais sobre banco de dados não-SQL e Big Data, talvez ache interessante
este pequeno artigo que escrevi para o meu blog da Kansas State University ( http://www.k-state.edu/ ):
“Big Data – Comments from a Beginner” - http://pedropereiraksu.blogspot.com.br/2015/01/big-data-comments-from-beginner.html
.
[1] Conforme
esta thread no Stack Overflow: http://stackoverflow.com/questions/11101641/activexobject-is-not-defined-and-cant-find-variable-activexobject
.
[2] E, não custa lembrar aos
experientes, e sempre deve ser salientado aos iniciantes – tudo que chega a uma
máquina cliente que está acessando uma página Web é HTML, CSS e Java
Script! Código ASP “clássico”, PHP, C#,
Java – nada disto chega ao cliente, e nem teria sentido chegar, pois o browser
não conseguiria lidar com nada disto.
ASP, PHP, C#, Java, etc, são processados pelo servidor Web, e o
resultado deste processamento é HTML, CSS e Java Script que são então enviados
à maquina cliente e interpretados pelo browser.
[4] Mais informações sobre a
utilização do mesmo Java Script Engine no IE e no Windows podem ser encontradas
em “Microsoft Details Hosting Chakra Javascript Engine Across Various Apps
Supported On Windows 10” ( http://microsoft-news.com/microsoft-details-hosting-chakra-javascript-engine-across-various-apps-supported-on-windows-10/
)
[5] Mais informações sobre Java
Script Engines podem ser encontradas na Wikipedia em https://en.wikipedia.org/wiki/JavaScript_engine
.
No comments:
Post a Comment