Quando falamos de Classic ASP, a primeira coisa que costuma vir à mente é o VBScript. É uma linguagem excelente e direta, mas sejamos honestos: no ecossistema da web moderna, tudo conversa em JSON. E gerar JSON manualmente concatenando strings no VBScript é um pesadelo que nenhum desenvolvedor deveria ter que suportar hoje em dia. Mesmo que tenhamos a G3JSON do AxonASP ao nosso lado, é chato pensar em ter de chamar uma biblioteca apenas para isso.
Mas aqui está um fato esquecido: o Classic ASP no Windows sempre ofereceu suporte ao JScript, que nada mais é do que JavaScript. E esse, garanto que você sabe.
Com o AxonASP (https://github.com/guimaraeslucas/axonasp) — uma engine baseada em GoLang que roda Classic ASP nativamente no Linux, macOS, BSD e Windows — essa capacidade não foi apenas preservada; ela se tornou uma ferramenta poderosa. O AxonASP implementa um motor ECMAScript que suporta completamente a versão 6.0 e além, permitindo que você escreva JavaScript no lado do servidor perfeitamente integrado às suas páginas ASP.
O melhor dos dois mundos
Ao adotar o JavaScript como sua linguagem principal em uma página ASP, você consegue misturar naturalmente conteúdo HTML com JavaScript renderizado no servidor. E o mais importante: isso elimina completamente o atrito na hora de construir APIs. Você ganha a sintaxe nativa do JavaScript (incluindo os métodos embutidos JSON.stringify e JSON.parse) combinada com os objetos padrão e já consagrados do ASP, como Response, Request e Server.
Some a esse ecossistema bibliotecas como a G3DB — que facilita absurdamente a conexão e a execução de consultas em múltiplos bancos de dados simultaneamente — e, de repente, você tem uma stack de backend extremamente leve e capaz, rodando direto em um servidor Linux ou dentro de um container Docker.
Exemplo prático: Um endpoint de Micro-API
Para mostrar como isso funciona na prática, vamos construir um endpoint de API simples e seguro.
Imagine que você precisa servir dados para um frontend moderno em Vue.js ou React. Em vez de configurar um framework pesado, você pode simplesmente jogar este arquivo .asp na pasta www do seu AxonASP. Ele lê um parâmetro da URL, faz uma consulta no banco de dados usando a biblioteca G3DB, formata o resultado em JSON e serve a resposta com os cabeçalhos HTTP corretos.
<%@ Language="JavaScript" %>
<%
// 1. Configuração dos cabeçalhos HTTP modernos para a nossa API
Response.ContentType = "application/json";
Response.Charset = "UTF-8";
Response.AddHeader("Access-Control-Allow-Origin", "*");
// 2. Definição da lógica de busca de dados
function getRecordData(recordId) {
// Instancia a biblioteca usando o ProgID principal
var db = Server.CreateObject("G3DB");
// Abre a conexão utilizando valores de configuração/ambiente
// Retorna True se a abertura via config/env for bem-sucedida; False caso contrário
var isConnected = db.OpenFromEnv("mysql");
if (!isConnected) {
// Retorna a string do erro atual
throw new Error("Falha na conexão com o banco: " + db.GetError());
}
// Uso de consultas parametrizadas para garantir segurança contra SQL Injection
var sql = "SELECT id, status, created_at, assigned_user FROM workflow_queue WHERE id = ?";
// Executa a consulta e retorna um result set do tipo forward-only
// A reescrita de placeholders converte os marcadores '?' para o formato do driver ativo quando necessário
var rs = db.Query(sql, recordId);
var result = null;
// Verifica se o result set é válido (a G3DB retorna Empty em caso de falha)
if (rs != null) {
if (!rs.EOF) {
// Mapeia o Recordset diretamente para um objeto nativo do JavaScript
result = {
id: String(rs("id")),
status: String(rs("status")),
createdAt: String(rs("created_at")),
assignedTo: String(rs("assigned_user"))
};
}
// Sempre limpa e fecha o Recordset
rs.Close();
} else {
// Captura falhas de execução usando a propriedade somente leitura LastError
throw new Error("Falha na execução da consulta: " + db.LastError);
}
// Fecha o pool de conexões atual gerenciado pelo objeto G3DB
db.Close();
return result;
}
// 3. Processamento da requisição recebida
try {
// Extrai o ID da URL (ex: api.asp?id=1042)
var reqId = String(Request.QueryString("id"));
if (reqId === "undefined" || reqId === "") {
Response.Status = "400 Bad Request";
Response.Write(JSON.stringify({
success: false,
error: "Parâmetro obrigatório ausente: id."
}));
} else {
var record = getRecordData(reqId);
if (record) {
// Sucesso: renderiza o JSON padrão usando o stringify nativo do ES5
Response.Write(JSON.stringify({
success: true,
data: record
}));
} else {
Response.Status = "404 Not Found";
Response.Write(JSON.stringify({
success: false,
error: "Registro não encontrado no banco de dados."
}));
}
}
} catch (e) {
// Tratamento global de erros
Response.Status = "500 Internal Server Error";
Response.Write(JSON.stringify({
success: false,
error: e.message
}));
}
%>
Por que isso importa?
Olhe para o código acima. É JavaScript perfeitamente válido, roda com uma velocidade incrível e faz exatamente o que precisa fazer, sem camadas complexas de middleware ou configurações complicadas de roteamento.
Como o AxonASP é construído em GoLang, todo esse ambiente fica completamente desacoplado do Windows Server. Na verdade, ele roda em qualquer servidor que você quiser. Você pode criar novos módulos usando a sintaxe que você já domina, aproveitando os objetos clássicos do ASP, consultando seus bancos com a G3DB e implantando tudo em uma distribuição Linux mínima. E sabe o que é melhor? Com uma otimização de memória muito boa. Uma API Node.js muitas vezes utiliza 50mb a 80mb para ficar em espera, enquanto o AxonASP consegue manter a espera em 18mb. Isso é fantástico para economizar recursos, e cá entre nós, sabemos o quanto esses recursos são caros para nós que pagamos em reais convertidos em dólar.
Se você gerencia aplicações em Classic ASP, migrá-las não significa necessariamente ter que reescrevê-las do zero em outra linguagem. Você pode modernizar a infraestrutura, mudar para JavaScript onde fizer mais sentido (como em endpoints de API), e até misturar VBScript com JavaScript na mesma página, e manter seus sistemas rodando tranquilamente. E sem pagar licenças.
Nós fizemos o AxonASP para ser uma engine potente. E precisamos também de sua ajuda como desenvolvedor. Se você puder colaborar testando código JavaScript, VBScript ou até mesmo melhorando o código GoLang, isso será de grande ajuda.
Top comments (0)