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:
- Framework .Net 2.0
- Microsoft Visual Studio ou Microsoft Visual Web Developer 2005 Express (minha opção)
- IronPython for ASP.net
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.
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)
18/11/2006 às 12:36 pm |
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!
23/11/2006 às 9:11 am |
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.
19/12/2006 às 11:03 am |
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
18/05/2007 às 6:12 pm |
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
10/09/2007 às 5:31 pm |
Gostei..depois vou ler com calma. Tive um semestre de Python na faculdade e hoje sou programador C#. Usar python é o bicho. abraço
12/09/2007 às 4:02 pm |
Juracy, tentei mas não consegui baixar a “extensao” para desenvolver com ironpython…pode me ajudar? abraço
12/09/2007 às 9:27 pm |
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 !
13/09/2007 às 9:37 am |
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