IronPython para ASP.net, mãos a obra !

Hoje fiz meu primeiro teste com IronPython para ASP.net, e espero ajudar quem mais tiver vontade de sair do basicão (tomara que não me processem pelo plágio 😉 ) C#, Java, JSP, ASP, PHP, etc. Não que estas linguagens/ambientes sejam ruins, apenas Python que é muito bom ! 😀

Requisitos:

Meu teste:

Tendo o Framework .Net 2.0 instalado, ainda é necessário instalar o Visual Web Developer (3Mb do setup + 40Mb de download sem os opcionais) e o IronPython for ASP.net (12Mb), este último ainda “sugeriu” um patch de correção no .Net 2.0 que ele mesmo instalou após a minha confirmação (acredito que o patch era um requisito).

Após a conclusão da instalação fui no Visual Web Developer e solicitei um novo Web Site e neste dialogo informei que a linguagem seria IronPython.

ip01.png

Ele me trouxe um esqueleto básico e nele escrevi o seguinte código para teste (como não consegui colocar no post com um formato bacana resolvi colocar o código em um link a parte):

É obvio que boa parte do Default.aspx pode ser gerado pelo próprio design do Visual Web Developer.

Pronto, já é possível rodar a aplicação e ver o resultado.

Observação: usuário e senha estão fixos, teste e 123 conforme é possível ver no método Authenticate.

Problemas encontrados:

  • Editor genérico: ainda não está totalmente adaptado ao código python, o maior exemplo disto é quando terminamos o código de um if, pressionamos Enter seguido de um Backspace, em qualquer editor preparado para Python ele retornaria até a coluna em que começamos o if, no Visual Web Developer ele volta apenas um caracter;
  • Auto-complete pobre: basicamente o auto-complete só funciona com as classes e funções definidas no próprio modulo e as construções básicas e builtins da Python;
  • Herança do aspx (inherits): Pelo que eu li existe este recurso mas ainda não consegui fazer funcionar-lo (aceito sugestões); 😉
  • Web-services: ainda não possui suporte;
  • Acentuação: toda a saída vindo do código python está vindo sem acento neste teste, fiz várias experiências e ainda não encontrei a solução.

TODO:

  • Estudar o problema da acentuação
  • Tentar rodar este exemplo no Mono
  • Descobri a questão do inherits

Conclusões:

O suporte do IronPython para ASP.net me parece bem promissor considerando que este ainda é um CTP (Community Technology Preview) Release. O suporte para ASP.net já é funcional, a leitura do White Paper (leitura recomendada) me mostrou o trabalho que foi necessário fazer para que o ASP.net suportasse linguagens dinâmicas (por enquanto apenas IronPython).

Afinal, está chegando a hora das linguagens dinâmicas e se a Microsoft não quiser ficar de fora terá que aperfeiçoar ainda mais o seu framework (assim como a Sun está fazendo com o dela) para melhor acolher estas linguagens.

A comunidade IronPython começou a se formar há pouco tempo, porém, já pipocam alguns artigos na internet, numericamente são poucos mas freqüentes.

Me perdoem pelo enorme post, mas espero que tenha valido a pena, este é o meu primeiro post neste estilo, aceito críticas e sugestões. Valeu !

Atualização: Tive um problema com a imagem, mas já está resolvido !

Atualização 2: Código fonte agora está em um link com sintaxe colorida (powered by VIM)

Anúncios

8 Respostas to “IronPython para ASP.net, mãos a obra !”

  1. Alan Says:

    Boa,
    Gostei do post, principalmente por causa do meu recente interesse pelo IronPython.

    Só não entendi o problema que voce citou a respeito dos WebServices. Por que não teria suporte?

    abraço!

  2. juracy Says:

    Alan, desculpe a demora, vamos a resposta.

    No white paper temos o seguinte trecho:

    Not Supported: Web Services

    The new model does not currently support an equivalent of .asmx Web services. The Web service architecture works only with standard .NET Framework types, which as noted earlier are difficult to create with dynamic languages. To make things even trickier, Web service class methods must be decorated with special metadata attributes (like [WebMethod()]), and dynamic languages typically have no syntax to do this.

    We are hoping to come up with a solution for this limitation.

    Um resumo em português:

    O modelo atual somente aceita os tipos padrões do .NET (exigindo declaração de tipo), ainda assim existe a forma de decorar os métodos [WebMethod()] que é diferente do modelo usado pela python, eles esperam resolver isto em breve.

    Nota: Mesmo em python puro a criação de WSDL é mais complexa, exatamente pela falta de declaração de tipos.

    Observação: Eu espero que eles achem uma solução bacana, nem que seja uma “decoração de tipos” para atender adequadamente as especificações SOAP.

  3. Alan Says:

    Caramba, eu também sumi.

    Pois é, veremos como contornarão a declaração de tipos.

    Dei uma olhada na linguagem Boo que parece ter sido baseada em Python. Nela foi adaptado a tipagem estática, e considero ser uma boa opção para desenvolver para .NET com algo “parecido” com Python.

    Mas se for para ficar com tipagem estática, eu continuo com o C#.

    abs

  4. André Duarte Says:

    Apesar de não mais usar ASP.NET, atualmente uso o framework Django, achei muito interessante o uso do python no Dot.NET.

    Creio que isso será bom para a comunidade python.

    Parabéns pelo post.
    []´s

  5. Paulo César Says:

    Gostei..depois vou ler com calma. Tive um semestre de Python na faculdade e hoje sou programador C#. Usar python é o bicho. abraço

  6. Paulo César Says:

    Juracy, tentei mas não consegui baixar a “extensao” para desenvolver com ironpython…pode me ajudar? abraço

  7. juracy Says:

    Paulo, especifique melhor o problema encontrado, ou mande um e-mail para a lista python brasil, ficarei de olho caso alguém fale de IronPython.

    Boa sorte !

  8. Paulo César Says:

    Juracy, eu fui no link acima para baixar o “plugin” do ironpython..mas não consegui fazer o download..é como se o mesmo não estivesse disponivel…quanto a lista “Python Brasil”, eu sai…são muitos e-mailspor dia..affi

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: