Debugando no navegador – PTII

Continuando o artigo anterior sobre a minha vontade de fazer algo no estilo Phyton (quanto à depuração de erros), escrevi uma pequena prova de conceito utilizando a Dll do MyJScript¹ e, como esperado, já obtive um bom resultado no sentido de conseguir acessar e trabalhar as informações do contexto de forma dinâmica.

Nos testes iniciais, consegui facilmente acessar as informações do contexto da aplicação (HttpContext) e da página atual. Foi possível, dentre outras coisas  alterar o título da página atual via instruções enviadas do client para o server-side. Dito assim parece simples porém quem já tentou realizar algo do gênero sabe como manipulação de objetos CLR normalmente requer uma boa dose de reflection, criatividade e/ou gambiarra.

E aê?

A idéia inicial era criar minha própria linguagem utilizando DLR² e sem querer esbarrei no link para o site o MyJScript, que por sua vez, serviu neste caso como uma força extra pra manter viva a esperança de conseguir realizar o que desejo.

Nesta implementação não perdi muito tempo tentando gerar um código perfeito. Como você verá abaixo eu adiciono à uma coleção de variáveis a referência dos objetos que eu desejo ser capaz de manipular:

...
protected override void OnLoad(EventArgs e)
        {
            runtime = ScriptRuntime.Create();
            globals = runtime.CreateScope();
            globals.SetVariable("HttpContext", HttpContext.Current);
            globals.SetVariable("Page", this);
        }
...

Idealmente isto não deve acontecer e, é aí que eu vejo o problema na implementação simplista que estou disponibilizando para download. É importante ressaltar (caso eu ainda não tenha sido claro o suficiente) que o código que escrevi é um rascunho de tentar criar um demo e, apesar do resultado positivo, não deve em hipótese alguma ser utilizado em um ambiente de produção e de forma alguma eu dou qualquer tipo de garantia sobre o mesmo.

Quer ver?

Abaixo um print das execuções realizadas como teste:

Debugger

Debugger

Gravei um micro-video demonstrando a execução do código (por algum motivo a resolução tá péssima):

A solução que criei para testar pode ser encontrada no seguinte link:

¹MyJScript é uma implementação que permite ter uma idéia de como a biblioteca DLR poderia ser utilizada na criação de uma linguagem nova para a plataforma .Net.

²DLR (Dynamic Language Runtime) é uma biblioteca para auxiliar o processo de criação de linguagens dinâmicas para a plataforma .Net. Pense que com este brinquedo você não precisa escrever sua linguagem em IL pois este cara realisa toda a abstração mais pesada por você.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: