ALTERNATIVA OPEN-SOURCE PARA IMPLEMENTAÇÃO E USO DE TECNOLOGIA .NET XIII INIC / IX EPG - UNIVAP 2009

Alaor Bianco Rodrigues 1, João Kleber Indena Martins 2 Marcos Danilo da Silva 3, Luiz Alberto Rebelo Correia 4

Universidade do Vale do Paraíba – Faculdade de Ciência da Computação Av. Shishima Hifumi, 2911 CEP 12244-000 São José dos Campos – SP – Brasil, [email protected], [email protected], [email protected], [email protected]

Resumo- O presente projeto visa viabilizar uma implementação robusta de um ambiente totalmente open- source para uso de tecnologia Microsoft .NET. Descreve os passos e os resultados obtidos ao desenvolver sistemas web, nas linguagens Microsoft .NET, usando como sistema operacional o Debian Linux Etch. Como ferramenta de desenvolvimento, utilizou-se o MonoDevelop e como engine principal, o conjunto de ferramentas implementadas e disponíveis no projeto Novell , que incluem o runtime da infra-estrutura .NET (CLI), um compilador da linguagem # e VB.NET, e um conjunto de classes implementando o Framework .NET.

Palavras-chave: Open-Source, Mono, MonoDevelop, Microsoft .NET Framework Área do Conhecimento: Engenharias – Engenharia de Computação

Introdução Metodologia

Software livre hoje é uma realidade. Ele ocupa Este projeto foi desenvolvido levando-se em espaço significativo no cenário tecnológico consideração a linha de desenvolvimento de brasileiro e, aos poucos, vem crescendo e se sistemas Web. desenvolvendo, recebendo, inclusive, apoio e A aplicação Web foi desenvolvida na IDE incentivo do governo federal e de grandes MonoDevelop usando ASP.NET 2.0. Consiste em empresas privadas. uma página aspx buscando informações de O presidente Luís Inácio Lula da Silva, em endereço imobiliário por meio de um Web-Service Decreto de 29 de outubro de 2003, instituiu oito que acessa banco de dados, ambos hospedados comitês técnicos com o objetivo de coordenar e no Apache HTTPD. articular o planejamento e a implementação de O sistema operacional escolhido para software livre, inclusão digital e integração de desenvolver este projeto foi o Debian Linux Etch. sistemas, dentre outras questões relacionadas. O Comitê Técnico de Implementação de Software Apache HTTPD Livre, atualmente, é coordenado pelo Serpro. O Instituto Nacional de Tecnologia da Informação - O apache HTTPD é o servidor Web mais ITI desempenhou esse papel até abril de 2008. utilizado no mundo. Os motivos incluem sua Os livres ganharam popularidade e excelente performance, segurança, força ao entrarem no segmento de software de compatibilidade com diversas plataformas e todos escritório e de uso geral, mas geralmente eram os seus recursos. desenvolvidos por comunidades sem um grande O Apache HTTPD Server é um software livre, apoio, mas aos poucos grandes empresas multiplataforma e que oferece suporte a diversas entraram em cena e ofertaram softwares de linguagens e tecnologias. qualidade capazes de concorrer com os mais O servidor HTTPD Apache é capaz de executar conhecidos e utilizados softwares e com custo código em PHP, Perl, Shell Script e até em ASP e zero. Dentre essas empresas podemos pode atuar como servidor FTP, HTTP, entre rápidamente citar as gigantes Sun e Novell com outros. grandes projetos open-source que atraem para Neste projeto foi usada a versão 2.0 deste este mercado os holofotes que antes iluminavam software. apenas um segmento marcado pelo monopólio. A instalação pode ser feita pelo gerenciador Apt-get usando o comando: #apt-get install apache2

XIII Encontro Latino Americano de Iniciação Científica e 1 IX Encontro Latino Americano de Pós-Graduação – Universidade do Vale do Paraíba

Para o correto funcionamento do apache que tem investido muito em projetos em torno de HTTPD neste projeto, bem como uma software livre. implementação estável de código asp.net é O Mono foi desenvolvido para permitir aos necessário o uso de dois pacotes: desenvolvedores criar aplicações apache2-mpm-prefork multiplataformas, dentre as quais podem-se #apt-get install apache2-mpm-prefork destacar Windows, MAC, Linux, Unix.

apache2-threaded-dev A versão do Mono que melhor de adapta a este #apt-get install apache2-threaded-dev projeto é a 1.9.1, recomendada pela própria Mono- Project para a versão do Linux utilizada. Um teste simples pode ser feito a fim de verificar o funcionamento do Apache. No navegador digita-se Durante os testes não foi encontrada uma o endereço: http://localhost. A página de testes do versão disponível nos repositórios do apt-get apache deve ser exibida com os seguintes dizeres que correspondesse às expectativas, desta “It Works!”. Este resultado pode ser verificado na forma teve-se de recorrer a outro método de figura 1. instalação, que consiste em obter os arquivos

de fonte, no sítio mantenedor do projeto e proceder com a compilação e instalação manualmente. #wget http://go- mono.com/sources/mono/mono- 1.9.1.tar.bz2 #tar jxvf mono-1.9.1.tar.bz2 #cd mono-1.9.1 #./configure --prefix=/usr #make #make install

Após a instalação do Mono, pode-se verificar

Figura 1: Teste de Funcionamento do Apache HTTPD seu funcionamento e versão conforme mostra a figura 2. Bibliotecas Básicas

Antes de proceder com a instalação dos demais softwares usados neste projeto, há a necessidade de assegurar a existência de alguns itens pré-requisitos para o correto funcionamento. Para isto deve-se proceder a instalação das seguintes bibliotecas: #apt-get install libglib2.0-0 #apt-get install libglib2.0-dev #apt-get install pkg-config bison make #apt-get install g++ #apt-get install gcc

Mono Figura 2: Visualização da versão do Mono

O Mono é um projeto de implementação open- XSP source de uma plataforma de desenvolvimento Microsoft .NET Framework baseada nos padrões XSP é um servidor web muito simples, ECMA 334 e 335, incluindo o runtime da infra- desenvolvido em C#, que é capaz de executar estrutura .NET (CLI), um compilador da linguagem paginas ASP.NET com um mínimo de esforço. C# e VB.NET, e um conjunto de classes Utilizá-lo é a maneira mais fácil de comprovar o implementando o .NET Framework. O projeto funcionamento do Mono. É recomendado que seja idealizado por Miguel de Icaza, criador do instalada a mesma versão do XSP e do Mono, GNOME, foi encampado pela poderosa Novell, neste caso pode-se baixá-lo no mesmo sítio no

XIII Encontro Latino Americano de Iniciação Científica e 2 IX Encontro Latino Americano de Pós-Graduação – Universidade do Vale do Paraíba

qual se obteve o Mono e proceder sua instalação No arquivo mod-mono.conf, localizado em analogamente ao Mono também. /etc/apache2, adicione a linha ao final: MonoServerPath default /usr/bin/mod-mono- #wget http://go-mono.com/sources/xsp/ server2 -1.9.1.tar.bz2 #tar jxvf xsp-1.9.1.tar.bz2 MonoDevelop #cd xsp-1.9.1 #./configure --prefix=/usr O MonoDevelop é um ambiente de #make desenvolvimento integrado (IDE), a princípio #make install desenvolvida para o C# e outras linguagens .NET. Fornece suporte ao desenvolvimento de Após a instalação pode-se comprovar e testar o aplicações Web e Desktop e oferece facilidade ao funcionamento do Mono sobre o XSP, o resultado portar código desenvolvido no Visual Studio para o pode ser verificado na figura 3. O XSP possui uma ambiente Linux e manter uma única base para aplicação teste que pode ser usada para este fim. ambos. A figura 4 exibe a interface do MonoDevelop.

Figura 3: Página ASP.NET de teste hospedada no

XSP Figura 4: MonoDevelop

Instalação do Mod_Mono no Apache HTTPD Resultados

O Mod_Mono é um módulo para o Apache A aplicação foi desenvolvida e hospedada, HTTPD que fornece suporte à páginas ASP.NET. conforme mencionada anteriormente, e os É aconselhado, assim como o XSP, usar a mesma resultados foram testados nos sistemas Linux e versão instalada com Mono. A instalação também Windows. O desempenho e a interoperabilidade é análoga ao Mono. entre ambos os sistemas foi muito semelhante apresentando resultados muito satisfatórios. No #wget http://go-mono.com/sources/ Linux usou-se o navegador Iceweasel para realizar mod_mono/mod_mono-1.9.tar.bz2 os testes, conforme figura 5, e no Windows usou- #tar jxvf mod_mono-1.9.tar.bz2 se o Internet Explorer, exibido na figura 6. #cd mod_mono-1.9 #./configure --prefix=/usr A página busca.aspx acessou um web-service #make hospedado no Linux (Apache HTTPD) que #make install forneceu um endereço específico e o exibiu num DataGrid e nos campos ComboBox e TextBox. Habilitando o ASP.NET 2.0

Por padrão apenas o .NET Framework 1.1 vem habilitado na instalação do mod_apache, para se desenvolver aplicações que fazem uso dos recursos do .NET Framework 2.0 é necessário habilitá-lo primeiro. Para tal, deve-se prosseguir da seguinte forma.

XIII Encontro Latino Americano de Iniciação Científica e 3 IX Encontro Latino Americano de Pós-Graduação – Universidade do Vale do Paraíba

no MonoDevelop funcionaram perfeitamente no Visual Studio.

Ocorreram incompatibilidades quanto ao esquema de cores e alguns objetos mais complexos apresentaram algumas limitações, restringindo alguns métodos disponíveis no Microsoft .NET Framework.

Conclusão

Com limitações aceitáveis o projeto apresentou-se muito bem, com desempenho muito bom e interoperabilidade entre os diferentes sistemas operacionais. Figura 5: Resultado apresentado no Linux (Iceweasel) A versão do Mono utilizada neste projeto foi a 1.9.1 e atualmente está disponível a versão 2.4 que já implementa uma série de outras funcionalidades. O futuro do Mono é muito promissor, pois consegue manter um único código fonte, desenvolvido no MonoDevelop, funcional entre sistemas operacionais diferentes. É inegável a força das linguagens .NET bem como é inegável a força dos projetos Open-Source e o Mono consegue unificar essas duas forças e criar um ambiente estável.

O fato de poder utilizar o servidor Web mais utilizado no mundo como o Apache HTTPD, sem que para isso, necessite dispor de elevados gastos com licenças torna a proposta deste projeto muito atrativa, o fato de poder contar com uma IDE completa como o MonoDevelop e que seja

Figura 6: Resultado apresentado no Windows capaz de gerar código interoperável torna o Mono (Internet Explorer) uma alternativa viável.

Discussão Referências

Houve dificuldades de instalação quanto às Diário Oficial da União, Seção 1, n. 211, 30 de dependências de cada aplicativo, este fato levou- outubro de 2003 se a reconsiderar a distribuição utilizada no Mono-Project projeto, que a principio era o Debian Linux Lenny. http://www.mono-project.com/ Adotou-se a distribuição Debian Linux Etch, que http://www.mono-project.com/ASP.NET se apresentou mais estável e robusta. Os pacotes http://www.mono-project.com/Mod_mono de instalação disponíveis nos repositórios do apt- get também apresentaram certa incompatibilidade The Apache Software Foundation e por este motivo usou-se os arquivos fontes http://www.apache.org/ disponibilizados pelo próprio Mono-Project. http://httpd.apache.org/docs/2.0/mpm.html

Superados estes fatos, a aplicação se portou MonoDevelop Project muito bem apresentando desempenho muito http://monodevelop.com/ satisfatório. http://monodevelop.com/Documentation

Os projetos de testes desenvolvidos no Visual Debian Linux Studio 2008 apresentaram certa incompatibilidade http://www.br.debian.org/ quando compilados no MonoDevelop, mas o http://d-i.alioth.debian.org/manual/en.i386/apa.html oposto não aconteceu. Os projetos desenvolvidos

XIII Encontro Latino Americano de Iniciação Científica e 4 IX Encontro Latino Americano de Pós-Graduação – Universidade do Vale do Paraíba